|
Форум: Firebird, HQbird, InterBase
|
|
Тема: TIME,TIMESTAMP check для мигрирующих с FB2.5 на 3.0 и выше
|
| TIME,TIMESTAMP check для мигрирующих с FB2.5 на 3.0 и выше [сообщение #6287] |
Fri, 20 February 2026 15:38 |
DarkMaster
Сообщений: 54 Зарегистрирован: August 2022
|
Member |
|
|
Кто таки собрался переходить со FB 2.5 (знаю-знаю про гуано мамонта, но легаси - оно такое - на днях пришлось перетаскивать БД с 2.5 на 5.0).
1) Поставить себе FB 2.5.9
2) выполнить скрипт - покажет проблемные домены, триггера, процедуры, параметры процедур, поля таблиц
/* проблемнае домены*/
select 'DOMAIN' AS OBJECT_TYPE,rdb$fields.rdb$field_name AS NAME
from rdb$fields
where rdb$fields.RDB$SYSTEM_FLAG=0 and not(rdb$fields.RDB$FIELD_NAME starting with 'RDB$') and
(
(rdb$fields.RDB$DEFAULT_SOURCE containing 'CURRENT_TIME') or
(rdb$fields.RDB$DEFAULT_SOURCE containing 'CURRENT_TIMESTAMP')
)
/* проблемные триггера */
union
select 'TRIGGER' AS OBJECT_TYPE,
iif(coalesce(rdb$triggers.rdb$relation_name,'')='','',trim(coalesce(rdb$triggers.rdb$relation_name,''))||'.')||rdb$triggers.rdb$trigger_name AS NAME
from rdb$triggers
where rdb$triggers.rdb$system_flag=0 and not(rdb$triggers.rdb$trigger_name starting with 'RDB$') and
(
(rdb$triggers.rdb$trigger_source containing 'CURRENT_TIME') or
(rdb$triggers.rdb$trigger_source containing 'CURRENT_TIMESTAMP')
)
/* проблемные процедуры */
union
select 'PROCEDURE' AS OBJECT_TYPE,rdb$procedures.rdb$procedure_name AS NAME
from rdb$procedures
where rdb$procedures.rdb$system_flag=0 and not(rdb$procedures.rdb$procedure_name starting with 'RDB$') and
(
(rdb$procedures.rdb$procedure_source containing 'CURRENT_TIME') or
(rdb$procedures.rdb$procedure_source containing 'CURRENT_TIMESTAMP')
)
/* проблемные параметры процедур */
union
select 'PROCEDURE PARAMS' AS OBJECT_TYPE,rdb$procedure_parameters.rdb$procedure_name||'.'||rdb$procedure_parameters.rdb$parameter_name AS NAME
from rdb$procedure_parameters
where (
(rdb$procedure_parameters.rdb$default_source containing 'CURRENT_TIME') or
(rdb$procedure_parameters.rdb$default_source containing 'CURRENT_TIMESTAMP')
)
/* проблемные поля таблиц */
union
select 'TABLE FIELDS' AS OBJECT_TYPE,
trim(rdb$relation_fields.rdb$relation_name)||'.'||rdb$relation_fields.rdb$field_name AS NAME
from rdb$relation_fields
where not(rdb$relation_fields.rdb$relation_name starting with 'RDB$') and
(
(rdb$relation_fields.rdb$default_source containing 'CURRENT_TIME') or
(rdb$relation_fields.rdb$default_source containing 'CURRENT_TIMESTAMP')
)
3) Поменять все CURRENT_TIME -> LOCALTIME, CURRENT_TIMESTAMP -> LOCALTIMESTAMP.
P.S. Что-то форум если не мертв, то едва-едва дышит....
|
|
|
|