powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Загрузка UDF при вставке
23 сообщений из 23, страница 1 из 1
Загрузка UDF при вставке
    #39967533
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть таблица с вычисляемым полем.
Код: sql
1.
2.
3.
4.
5.
CREATE TABLE my_table (
    DURATION             INTEGER,
    DATE_TIME_FROM       TIMESTAMP,
    DATE_TIME_TO         COMPUTED BY (NULLIF(dt_inc_minute("DATE_TIME_FROM", "DURATION"), dt_inc_minute(CAST(NULL AS TIMESTAMP), "DURATION")))
);

dt_inc_minute это UDF функция.

Выполняю INSERT
Код: sql
1.
2.
3.
4.
5.
INSERT INTO my_table (
  DURATION, DATE_TIME_FROM
) VALUES (
  10, '2020-06-09 12:00:00'
)

получаю ошибку Invalid BLR offset dt_inc_minute.

Самой dll в папке UDF нет.

А вопрос следующий: зачем эта UDF ищется при вставке записи? Вроде же она должна вызываться только при SELECT?


С уважением, Vasilisk
...
Рейтинг: 0 / 0
Загрузка UDF при вставке
    #39967912
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_> А вопрос следующий: зачем эта UDF ищется при вставке записи?
_Vasilisk_> Вроде же она должна вызываться только при SELECT?

Вызываться - да. А "препарироваться" запрос должен и при вставке.

P.S. Собсно, непонятно, как таблица создалась - UDF после её
создания из папки "исчезла" что ли?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Загрузка UDF при вставке
    #39967934
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам
А "препарироваться" запрос должен и при вставке.
Так к полю DATE_TIME_TO в запросе никакого обращения нет
Гаджимурадов Рустам
P.S. Собсно, непонятно, как таблица создалась - UDF после её создания из папки "исчезла" что ли?
Забыли положить при развертывании, а Restore FB Embedded никаких ошибок не вернул
...
Рейтинг: 0 / 0
Загрузка UDF при вставке
    #39967944
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
Restore FB Embedded никаких ошибок не вернул
И варнингов не было ?
...
Рейтинг: 0 / 0
Загрузка UDF при вставке
    #39967977
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad
И варнингов не было ?
Нет. Вот лог рестора
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
[17:23:49] gbak:restoring table MY_TABLE 
[17:23:49] gbak:    restoring column DATE_TIME_FROM 
[17:23:49] gbak:    restoring column DATE_TIME_TO 
[17:23:49] gbak:    restoring column DURATION 
[17:23:49] gbak:committing metadata for table MY_TABLE
...........
[17:23:49] gbak:restoring function DT_INC_MINUTE 
[17:23:49] gbak:    restoring argument for function DT_INC_MINUTE 
[17:23:49] gbak:    restoring argument for function DT_INC_MINUTE 
[17:23:49] gbak:    restoring argument for function DT_INC_MINUTE 
..................
[17:23:50] gbak:    restoring privilege for user SYSDBA 
[17:23:50] gbak:creating indexes 
[17:23:50] gbak:committing metadata 
[17:23:50] gbak:fixing views dbkey length 
[17:23:50] gbak:updating ownership of packages, procedures and tables 
[17:23:50] gbak:adding missing privileges 
[17:23:50] gbak:adjusting system generators 
[17:23:51] gbak:finishing, closing, and going home 
[17:23:51] gbak:adjusting the ONLINE and FORCED WRITES flags 
[17:23:51] 
IBE: Restore completed. Current time: 17:23:51. Elapsed time: 00:00:01
информация о сервере
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Server Version Info
---------------------------------------------------------------------------
Server Version: WI-V3.0.5.33220 Firebird 3.0
Server Implementation: Firebird/Windows/Intel/i386
Service Version: 2


Configuration Info
---------------------------------------------------------------------------
Base File: E:\Embedded\
Lock File: C:\ProgramData\firebird\
Message File: E:\Embedded\
Security Database: security.db



Database Info
---------------------------------------------------------------------------
Number of connections: 1
Number of databases: 1
Databases: D:\DB\TEMP.FB

База не содержит никаких данных. Все таблицы пустые
...
Рейтинг: 0 / 0
Загрузка UDF при вставке
    #39968000
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_> Так к полю DATE_TIME_TO в запросе никакого обращения нет

Это не имеет значения, AFAIU.

> Restore FB Embedded никаких ошибок не вернул

Проверь на полном сервере, ради интереса.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Загрузка UDF при вставке
    #39968260
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам
Проверь на полном сервере, ради интереса.
Все полностью аналогично. Никаких хинтов и ворнингов
...
Рейтинг: 0 / 0
Загрузка UDF при вставке
    #39968296
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это странно. Если просто выполнить DDL c несуществующей UDF тоже тишина?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Загрузка UDF при вставке
    #39968300
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам
Если просто выполнить DDL c несуществующей UDF тоже тишина?
Ага.
...
Рейтинг: 0 / 0
Загрузка UDF при вставке
    #39968691
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_> Ага.

Это баг, сделай пример и заноси в трекер, плиз.
Перед этим нужно проверить воспроизводится
ли это на последней версии релиза и нет ли в
трекере такого тикета.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Загрузка UDF при вставке
    #39969446
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам
заноси в трекер,
http://tracker.firebirdsql.org/browse/CORE-6333
...
Рейтинг: 0 / 0
Загрузка UDF при вставке
    #39969484
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам
Это баг,
Это не баг, это фича defining a function should be allowed even when the library does not exist.
...
Рейтинг: 0 / 0
Загрузка UDF при вставке
    #39969667
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Логично. Но ворнинг всё равно должен быть, наверное.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Загрузка UDF при вставке
    #39969690
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам
Логично. Но ворнинг всё равно должен быть, наверное.
+1
...
Рейтинг: 0 / 0
Загрузка UDF при вставке
    #39969691
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

народ, давайте ddl оставим в покое. Мало ли чего я декларирую. В рантайме, при вызове udf ошибка есть?
Есть, это хорошо и нормально.

Кроме того, вопрос-то исходный был вообще не тот - почему при udf в computed by идет ругань на insert, если dll нет.
По идее, при insert никакого вычисления computed by столбцов быть не должно, если только к ним нет обращения в каком-нибудь триггере на insert.

p.s. _Vasilisk_, убери, пожалуйста, двойные кавычки у столбцов из текста computed by. Они (кавычки) тут не нужны совершенно.
...
Рейтинг: 0 / 0
Загрузка UDF при вставке
    #39969692
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv
Кроме того, вопрос-то исходный был вообще не тот - почему при udf в computed by идет ругань на insert, если dll нет.
По идее, при insert никакого вычисления computed by столбцов быть не должно, если только к ним нет обращения в каком-нибудь триггере на insert.
Потому что метаданные грузятся (и проверяются) для всех полей таблицы.
Никто не будет рассчитывать на то, что какой-то поле в таблице настолько не нужно, что его можно загрузить потом.
...
Рейтинг: 0 / 0
Загрузка UDF при вставке
    #39969727
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv> народ, давайте ddl оставим в покое. Мало ли чего я декларирую.

Декларация - одно дело, работа с задекларированным - другое.
Тут можно порассуждать на тему "если dll нет, то и выдавать
ошибку/ворнинг только при первом вызове (а не обращении)",
но лично я в этих рассуждениях особого смысла не вижу.

Впрочем, я не знаю, что там пишут на сей счёт в стандартах.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Загрузка UDF при вставке
    #39969835
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv
. Мало ли чего я декларирую
Обычно стараются сообщить об ошибке как можно раньше. Иначе мы пойдем по пути JavaScript, где чтобы узнать работает ли строка или нет - нужно ее выполнить.

В MySQL с этой логикой пошли еще дальше. Там нет понятия зависимости. Т.е. валидная ли таблица/столбец на которые есть ссылка из процедуры, можно узнать только непосредственно при выполнении этой процедуры. И если в Оракле вся процедура хотя бы получает состояние INVALID, то в MySQL полная тишина. Поддерживать/рефракторить такой код то еще удовольствие
...
Рейтинг: 0 / 0
Загрузка UDF при вставке
    #39970005
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

ну вот не надо. В принципе, я согласен, что можно было бы генерить error при declare external function, если такой dll нет. Ну или warning. Вопрос в последствиях. warning - одобряю, error - нет. Потому что иначе нельзя будет подменить udf, или вообще будет проблематично ее кокнуть.
...
Рейтинг: 0 / 0
Загрузка UDF при вставке
    #39970040
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv
warning - одобряю, error - нет.
Ну так об этом и речь. Плюс о ресторе.
...
Рейтинг: 0 / 0
Загрузка UDF при вставке
    #39970120
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvили вообще будет проблематично ее кокнуть.

Вот как раз при "кокнуть" проверка точно не нужна от слова "совсем".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Загрузка UDF при вставке
    #39970146
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv
Потому что иначе нельзя будет подменить udf,
Так ее и сейчас проблематично подменить (как и UDR). Пока не прибьешь все процессы, которые к ней обращались
kdv
. Вопрос в последствиях.
При декларации новой UDR, в случае ее отсутствия, я получаю error при коммите транзакции, вызвавшей CREATE PROCEDURE. Почему нельзя эту же логику распространить и на UDF?

Но нельзяAlexander PeshkovI see no reason changing engine behavior for deprecated in FB4 UDFs.
...
Рейтинг: 0 / 0
Загрузка UDF при вставке
    #39970150
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

UDR регистрируются в системе по другому. Там процесс очень сильно отличается
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Загрузка UDF при вставке
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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