powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Компарер, изменение вычисляемого поля + дроп полей.
14 сообщений из 14, страница 1 из 1
Компарер, изменение вычисляемого поля + дроп полей.
    #39343614
Tofik Emailovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Столкнулся со следующей проблемой. В результате сравнения двух скриптов метаданных в результирующем скрипте не меняется вычисляемое поле, а также выполняется дроп всех следующих после него полей.
У поля изменяется тип:
В эталоне:
SUMMA_CHECK NUMERIC(14,2) COMPUTED BY ...
В таргете:
SUMMA_CHECK COMPUTED BY ...
Скрипты сравниваю IBEScript'ом. Версия 2016.10.27.1.
В эксперте, при сравнивании непосредственно баз, проблемы с дропом не возникает. Однако все же стоит отметить, что тип поля не меняется, он закомментирован - ALTER TABLE ... ADD SUMMA_CHECK /* NUMERIC(14,2) */ COMPUTED BY ...
При сравнивании же скриптов - появляется сообщение, что была ошибка, смотри лог. Кстати, где этот лог поискать? Ни в папке с экспертом, ни в аппдата ничего нет.

Проблема возникает на рабочей базе. Пробовал воспроизвести в эксперте в виде отдельно примера только с этой "проблемной" таблицей - не получилось. Посему точно определить зависимость возникновения ошибки затрудняюсь.

Мои наблюдения, что в результирующем скрипте не так:
Дропается поле SUMMA_CHECK, все ОК.
Добавляется обратно с новым типом, однако без COMPUTED BY.
Сразу после этого дропаются все оставшиеся до конца таблицы поля.

Если необходимо, могу предоставить скрипты эталона, таргета и результирующий, или болванки баз.
...
Рейтинг: 0 / 0
Компарер, изменение вычисляемого поля + дроп полей.
    #39343856
Tofik Emailovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дополнение:

Может быть болезнь живет выше? Вот что получается при выполнении команды сравнения
ibec_CompareMetadata(MasterDbMetadataFilename, TargetDbMetadataFilename, MetadataUpdateScriptFilename,
'SafeDatatypeConversion; IgnoreIBEObjects; ServerVersion=FB25', NULL);

Error in script: DbStructureUpdate.sql
Error occurred while executing following statement (line 702):
-------- STATEMENT ----------
( ? , ? , ? , 'SafeDatatypeConversion; IgnoreIBEObjects; ServerVersion=FB25', NULL)

-------- ERROR ----------
Missing: <)> (COMPUTED)
Script: d:\Work\IBEScripts\GlobalDbUpdate\...\SYS01_1_Metadata.sql Line:5575 Pos:50

Error in script: DbStructureUpdate.sql
Error occurred while executing following statement (line 702):
-------- STATEMENT ----------
( ? , ? , ? , 'SafeDatatypeConversion; IgnoreIBEObjects; ServerVersion=FB25', NULL)

-------- ERROR ----------
Missing: <)> (COMPUTED)
Script: d:\Work\IBEScripts\GlobalDbUpdate\...\MasterDbMetadata.sql Line:5955 Pos:52
...
Рейтинг: 0 / 0
Компарер, изменение вычисляемого поля + дроп полей.
    #39343968
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так надо посмотреть, что там в исходном скрипте живет по координатам Line:5575 Pos:50 и Line:5955 Pos:52.
Парсер почему-то ожидает скобку, а находит COMPUTED.
...
Рейтинг: 0 / 0
Компарер, изменение вычисляемого поля + дроп полей.
    #39344046
Tofik Emailovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В предыдущем посте я пробовал в таргет впихнуть уже измененное поле, поэтому парсер выдал ошибку в двух местах. В обоих скриптах сидит поле с типом - NUMERIC(14,2).

В оригинале же ошибка лезет только одна, поскольку NUMERIC(14,2) сидит только в мастере:

Error in script: DbStructureUpdate.sql
Error occurred while executing following statement (line 702):
-------- STATEMENT ----------
( ? , ? , ? , 'SafeDatatypeConversion; IgnoreIBEObjects; ServerVersion=FB25', NULL)

-------- ERROR ----------
Missing: <)> (COMPUTED)
Script: d:\Work\IBEScripts\GlobalDbUpdate\...\MasterDbMetadata.sql Line:5955 Pos:52

Строка 5955 как есть в мастер скрипте, 52 символ получается "B", который из BY
SUMMA_CHECK NUMERIC(14,2) COMPUTED BY (COALESCE(SUMMA_CASH,0)+...
В таргете NUMERIC(14,2) отсутствует
SUMMA_CHECK COMPUTED BY (COALESCE(SUMMA_CASH,0)+...
Тут все в порядке, парсер молчит.
...
Рейтинг: 0 / 0
Компарер, изменение вычисляемого поля + дроп полей.
    #39344246
Tofik Emailovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Провел еще нескольких опытов.
Получается парсеру не нравится наличие типа поля, в моем случае NUMERIC(14,2), в вычисляемом поле. Если тип поля убрать - все ок.

Не понятно почему в моем случае парсер ждет именно закрывающую набор полей таблицы скобку, считая, что полей больше нет, а не, к примеру, запятую со следующими полями таблицы. Однако это объясняет дроп оставшихся полей таблицы.
...
Рейтинг: 0 / 0
Компарер, изменение вычисляемого поля + дроп полей.
    #39344586
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tofik EmailovichНе понятно почему в моем случае парсер ждет именно закрывающую набор полей таблицы скобку, считая, что полей больше нет, а не, к примеру, запятую со следующими полями таблицы. Однако это объясняет дроп оставшихся полей таблицы.

Дроп происходит, потому что парсер спотыкается и остаток определения на парсит. Соответственно, все, что в этом остатке, не попадает в структуру БД, которую строит анализатор скрипта.
С типом вычисляемого поля попробую разобраться.
...
Рейтинг: 0 / 0
Компарер, изменение вычисляемого поля + дроп полей.
    #39415861
Tofik Emailovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Читал пост ExecScriptText2 ошибка на версии IBEScript.dll от 27.10.2016 , порадовался долгожданному выходу обновления IBEScript'ов.
К собственному сожалению, оказалось, сей сабж не решен, посему решил напомнить о нем.
...
Рейтинг: 0 / 0
Компарер, изменение вычисляемого поля + дроп полей.
    #39417515
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tofik EmailovichК собственному сожалению, оказалось, сей сабж не решен, посему решил напомнить о нем.

Проверь в свежей версии эксперта.
...
Рейтинг: 0 / 0
Компарер, изменение вычисляемого поля + дроп полей.
    #39419140
Tofik Emailovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IBExpert
Проверь в свежей версии эксперта.

В самом эксперте изначально было все в порядке, если не считать закомментированный тип поля в результирующем скрипте - ALTER TABLE ... ADD SUMMA_CHECK /* NUMERIC(14,2) */ COMPUTED BY ...
Проблема существует в IBEScript.exe. Проверял в версии 2017.3.5.1.
...
Рейтинг: 0 / 0
Компарер, изменение вычисляемого поля + дроп полей.
    #39419174
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tofik EmailovichВ самом эксперте изначально было все в порядке, если не считать закомментированный тип поля в результирующем скрипте - ALTER TABLE ... ADD SUMMA_CHECK /* NUMERIC(14,2) */ COMPUTED BY ...
Проблема существует в IBEScript.exe. Проверял в версии 2017.3.5.1.

Я же говорю: проверь сравнение скриптов в эксперте. Он тоже умеет сравнивать скрипты. Не может быть, чтобы он скрипты по-другому сравнивал, там один и тот же код.
...
Рейтинг: 0 / 0
Компарер, изменение вычисляемого поля + дроп полей.
    #39420009
Tofik Emailovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IBExpertЯ же говорю: проверь сравнение скриптов в эксперте. Он тоже умеет сравнивать скрипты. Не может быть, чтобы он скрипты по-другому сравнивал, там один и тот же код.

Проверил в эксперте сравнение скриптов - все ок.

Прикладываю архив с файлами эталонов мастера и таргета + результирующие скрипты обновления, полученные экспертом и IBEscript'ом.
...
Рейтинг: 0 / 0
Компарер, изменение вычисляемого поля + дроп полей.
    #39420083
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tofik EmailovichПроверил в эксперте сравнение скриптов - все ок.


Ну и хорошо. Сегодня соберу IBEScript с теми исправлениями.
...
Рейтинг: 0 / 0
Компарер, изменение вычисляемого поля + дроп полей.
    #39420655
Tofik Emailovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проверил, все в порядке. Спасибо.

Однако, все же точности ради, хочу отметить - в результирующем скрипте, и эксперт, и ибе-скрипт тип в вычисляемом поле оставляют закоментированным.

ALTER TABLE SALEHEAD ADD SUMMA_CHECK /* NUMERIC(14,2) */ COMPUTED BY ...

Это возможно исправить, или придется с этим жить?
...
Рейтинг: 0 / 0
Компарер, изменение вычисляемого поля + дроп полей.
    #39420678
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tofik EmailovichОднако, все же точности ради, хочу отметить - в результирующем скрипте, и эксперт, и ибе-скрипт тип в вычисляемом поле оставляют закоментированным.

ALTER TABLE SALEHEAD ADD SUMMA_CHECK /* NUMERIC(14,2) */ COMPUTED BY ...

Это возможно исправить, или придется с этим жить?

Тип в комментарии - для справки. Исправить, может, и можно, но смысла тратить на это время я не вижу.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Компарер, изменение вычисляемого поля + дроп полей.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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