powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Сборка исходного DDL из хранимых метаданных
2 сообщений из 2, страница 1 из 1
Сборка исходного DDL из хранимых метаданных
    #40129629
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если взять свежий ФБ3 / ФБ4 и выполнить что-то наподобие:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
create domain dom int default 0 -- blah-blah-blah
;

create table tab
(
  fld int default 0 --blah-blah-blah
);

create procedure prc
(
  param int default 0 --blah-blah-blah
)
as
begin
end;

create table tab2
(
  fld1 int,
  fld2 computed by (1 + 1) --blah-blah-blah
);

create index i_tab2 on tab2
  computed by (fld1 + 1) --blah-blah-blah
;



то ISQL все выгрузит (isql -x) корректно. А вот в IBE исходник будет составлен в некомпилируемом виде. Старые версии вообще дурили, скрывая например параметр процедуры с комментарием как будто его нет вообще :-) В новых версиях получше, но и в дизайнере и в экспорте метаданных получаем такое:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
CREATE DOMAIN DOM AS
INTEGER
default 0 -- blah-blah-blah;

CREATE TABLE TAB (
    FLD  INTEGER DEFAULT 0 --blah-blah-blah
);

CREATE TABLE TAB2 (
    FLD1  INTEGER,
    FLD2  COMPUTED BY (1 + 1) --blah-blah-blah
);

CREATE INDEX I_TAB2 ON TAB2 COMPUTED BY (fld1 + 1) --blah-blah-blah;

ALTER PROCEDURE PRC (
    PARAM INTEGER default 0 --blah-blah-blah)
AS
begin
end^



т.е. с таблицами все ОК, а вот со всем остальным очень плохо.

Не буду называть это багом, ибо исходное форматирование в любом случае частично потеряно и его не воссоздать как было. А без этого получается угадайка. Но ISQL способна справиться с такой ситуацией. В некоторых случаях (параметры процедур, все BODY) завершающая скобка/end всегда пишутся с новой строки. В остальных (computed / check) - специально проверяется наличие завершающего однострочного комментария и только в этом случае добавляется перенос строки.

В общем, хочется, чтобы IBE был тоже на такое способен. А то клиенты жалуются, причем почему-то нам :-)
...
Рейтинг: 0 / 0
Сборка исходного DDL из хранимых метаданных
    #40130478
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr
А то клиенты жалуются, причем почему-то нам :-)


Потому что вы во всем виноваты :-P

Вот спроси клиента, к чему "бла-бла" здесь относится:
Код: plsql
1.
2.
3.
4.
create procedure prc
(
  param int default 0 --blah-blah-blah
)



К параметру в целом или же к его дефолтовому значению? Наверняка к параметру, потому что мало кто знает, что коммент после дефолта хранится в базе вместе с его выражением.
Т.е., как по мне, все такие однострочные комменты надо тупо выкусывать при компиляции, ведь в следующем случае:
Код: plsql
1.
2.
3.
4.
5.
create procedure prc
(
    param1 int --blah-blah-blah
  , param2 int default 0 --blah-blah-blah
)



первый коммент благополучно исчезнет, а второй почему-то поселится в базе в неожиданном (для пользователя) месте. До кучи они еще и форматирование убивают.

Но, в общем, проблему я понял.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Сборка исходного DDL из хранимых метаданных
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (1): Анонимы (1)
Пользователи онлайн (10): Анонимы (7), RePredeclared, Yandex Bot, Bing Bot 1 мин.
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]