2 @message |
assert
- Problem(s) detected:
- out_prep:
- Statement failed, SQLSTATE = HY000
- ALTER CHARACTER SET "SYSTEM"."ISO8859_1" failed
- -Cannot CREATE/ALTER/DROP CHARACTER SET in SYSTEM schema
- out_drop:
-
- ---
- +++
- @@ -12,5 +12,805 @@
- COMMIT WORK; +/* Table: PUBLIC.LOG_DDL_TRIGGERS_ACTIVITY, Owner: SYSDBA */+CREATE TABLE PUBLIC.LOG_DDL_TRIGGERS_ACTIVITY (ID INTEGER GENERATED BY DEFAULT AS IDENTITY (START WITH 1) NOT NULL,+ DDL_TRIGGER_NAME VARCHAR(64),+ EVENT_TYPE VARCHAR(25) NOT NULL,+ OBJECT_TYPE VARCHAR(25) NOT NULL,+ DDL_EVENT VARCHAR(25) NOT NULL,+ OBJECT_NAME VARCHAR(64) NOT NULL,+ DTS TIMESTAMP default 'now',+CONSTRAINT PK_LOG_DDL_TRIGGERS_ACTIVITY PRIMARY KEY (ID));+SET TERM ^ ;++/* Triggers only will work for SQL triggers */+CREATE TRIGGER PUBLIC.TRG_CREATE_TABLE_BEFORE +ACTIVE BEFORE CREATE TABLE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_TABLE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_TABLE_AFTER +ACTIVE AFTER CREATE TABLE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_TABLE_AFTER'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_TABLE_BEFORE +ACTIVE BEFORE ALTER TABLE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_TABLE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_TABLE_AFTER +ACTIVE AFTER ALTER TABLE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_TABLE_AFTER'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_TABLE_BEFORE +ACTIVE BEFORE DROP TABLE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_TABLE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_TABLE_AFTER +ACTIVE AFTER DROP TABLE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_TABLE_AFTER'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_PROCEDURE_BEFORE +ACTIVE BEFORE CREATE PROCEDURE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_PROCEDURE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_PROCEDURE_AFTER +ACTIVE AFTER CREATE PROCEDURE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_PROCEDURE_AFTER'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_PROCEDURE_BEFORE +ACTIVE BEFORE ALTER PROCEDURE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_PROCEDURE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_PROCEDURE_AFTER +ACTIVE AFTER ALTER PROCEDURE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_PROCEDURE_AFTER'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_PROCEDURE_BEFORE +ACTIVE BEFORE DROP PROCEDURE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_PROCEDURE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_PROCEDURE_AFTER +ACTIVE AFTER DROP PROCEDURE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_PROCEDURE_AFTER'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_FUNCTION_BEFORE +ACTIVE BEFORE CREATE FUNCTION POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_FUNCTION_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_FUNCTION_AFTER +ACTIVE AFTER CREATE FUNCTION POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_FUNCTION_AFTER'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_FUNCTION_BEFORE +ACTIVE BEFORE ALTER FUNCTION POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_FUNCTION_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_FUNCTION_AFTER +ACTIVE AFTER ALTER FUNCTION POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_FUNCTION_AFTER'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_FUNCTION_BEFORE +ACTIVE BEFORE DROP FUNCTION POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_FUNCTION_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_FUNCTION_AFTER +ACTIVE AFTER DROP FUNCTION POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_FUNCTION_AFTER'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_TRIGGER_BEFORE +ACTIVE BEFORE CREATE TRIGGER POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_TRIGGER_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_TRIGGER_AFTER +ACTIVE AFTER CREATE TRIGGER POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_TRIGGER_AFTER'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_TRIGGER_BEFORE +ACTIVE BEFORE ALTER TRIGGER POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_TRIGGER_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_TRIGGER_AFTER +ACTIVE AFTER ALTER TRIGGER POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_TRIGGER_AFTER'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_TRIGGER_BEFORE +ACTIVE BEFORE DROP TRIGGER POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_TRIGGER_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_TRIGGER_AFTER +ACTIVE AFTER DROP TRIGGER POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_TRIGGER_AFTER'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_EXCEPTION_BEFORE +ACTIVE BEFORE CREATE EXCEPTION POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_EXCEPTION_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_EXCEPTION_AFTER +ACTIVE AFTER CREATE EXCEPTION POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_EXCEPTION_AFTER'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_EXCEPTION_BEFORE +ACTIVE BEFORE ALTER EXCEPTION POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_EXCEPTION_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_EXCEPTION_BEFORE +ACTIVE BEFORE DROP EXCEPTION POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_EXCEPTION_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_VIEW_BEFORE +ACTIVE BEFORE CREATE VIEW POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_VIEW_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_VIEW_BEFORE +ACTIVE BEFORE ALTER VIEW POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_VIEW_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_VIEW_BEFORE +ACTIVE BEFORE DROP VIEW POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_VIEW_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_DOMAIN_BEFORE +ACTIVE BEFORE CREATE DOMAIN POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_DOMAIN_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_DOMAIN_BEFORE +ACTIVE BEFORE ALTER DOMAIN POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_DOMAIN_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_DOMAIN_BEFORE +ACTIVE BEFORE DROP DOMAIN POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_DOMAIN_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_ROLE_BEFORE +ACTIVE BEFORE CREATE ROLE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_ROLE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_ROLE_BEFORE +ACTIVE BEFORE ALTER ROLE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_ROLE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_ROLE_BEFORE +ACTIVE BEFORE DROP ROLE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_ROLE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_INDEX_BEFORE +ACTIVE BEFORE CREATE INDEX POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_INDEX_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_INDEX_BEFORE +ACTIVE BEFORE ALTER INDEX POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_INDEX_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_INDEX_BEFORE +ACTIVE BEFORE DROP INDEX POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_INDEX_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_SEQUENCE_BEFORE +ACTIVE BEFORE CREATE SEQUENCE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_SEQUENCE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_SEQUENCE_BEFORE +ACTIVE BEFORE ALTER SEQUENCE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_SEQUENCE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_SEQUENCE_BEFORE +ACTIVE BEFORE DROP SEQUENCE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_SEQUENCE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_USER_BEFORE +ACTIVE BEFORE CREATE USER POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_USER_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_USER_BEFORE +ACTIVE BEFORE ALTER USER POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_USER_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_USER_BEFORE +ACTIVE BEFORE DROP USER POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_USER_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_COLLATION_BEFORE +ACTIVE BEFORE CREATE COLLATION POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_COLLATION_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_COLLATION_BEFORE +ACTIVE BEFORE DROP COLLATION POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_COLLATION_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_CHARACTER_SET_BEFORE +ACTIVE BEFORE ALTER CHARACTER SET POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_CHARACTER_SET_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_PACKAGE_BEFORE +ACTIVE BEFORE CREATE PACKAGE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_PACKAGE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_PACKAGE_BEFORE +ACTIVE BEFORE ALTER PACKAGE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_PACKAGE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_PACKAGE_BEFORE +ACTIVE BEFORE DROP PACKAGE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_PACKAGE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_PACKAGE_BODY_BEFORE +ACTIVE BEFORE CREATE PACKAGE BODY POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_PACKAGE_BODY_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_PACKAGE_BODY_BEFORE +ACTIVE BEFORE DROP PACKAGE BODY POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_PACKAGE_BODY_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ANY_DDL_STATEMENT_BEFORE +ACTIVE BEFORE ANY DDL STATEMENT POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ANY_DDL_STATEMENT_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ANY_DDL_STATEMENT_AFTER +ACTIVE AFTER ANY DDL STATEMENT POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ANY_DDL_STATEMENT_AFTER'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^+++SET TERM ; ^+COMMIT WORK;+ /* Grant permissions for this database */ GRANT USAGE ON SCHEMA PUBLIC TO USER PUBLIC;
-
LOG DETAILS:
2025-06-13 03:01:22.850
2025-06-13 03:01:22.855 act_db_main = <firebird.qa.plugin.Action object at [hex]>
2025-06-13 03:01:22.859 act_db_repl = <firebird.qa.plugin.Action object at [hex]>
2025-06-13 03:01:22.865 capsys = <_pytest.capture.CaptureFixture object at [hex]>
2025-06-13 03:01:22.869
2025-06-13 03:01:22.874 @pytest.mark.replication
2025-06-13 03:01:22.878 @pytest.mark.version('>=4.0.1')
2025-06-13 03:01:22.883 def test_1(act_db_main: Action, act_db_repl: Action, capsys):
2025-06-13 03:01:22.887
2025-06-13 03:01:22.893 out_prep, out_main, out_drop = '', '', ''
2025-06-13 03:01:22.898
2025-06-13 03:01:22.903 # Obtain full path + filename for DB_MAIN and DB_REPL aliases.
2025-06-13 03:01:22.908 # NOTE: we must NOT use 'a.db.db_path' for ALIASED databases!
2025-06-13 03:01:22.912 # It will return '.' rather than full path+filename.
2025-06-13 03:01:22.917 # Use only con.info.name for that!
2025-06-13 03:01:22.922 #
2025-06-13 03:01:22.926 db_main_file, db_repl_file = '', ''
2025-06-13 03:01:22.932 db_main_fw, db_repl_fw = DbWriteMode.ASYNC, DbWriteMode.ASYNC
2025-06-13 03:01:22.937
2025-06-13 03:01:22.942 with act_db_main.db.connect(no_db_triggers = True) as con:
2025-06-13 03:01:22.947 #if act_db_main.vars['server-arch'] == 'Classic' and os.name != 'nt':
2025-06-13 03:01:22.953 # pytest.skip("Waiting for FIX: 'Engine is shutdown' in replication log for CS. Linux only.")
2025-06-13 03:01:22.959
2025-06-13 03:01:22.965 db_main_file = con.info.name
2025-06-13 03:01:22.970 db_main_fw = con.info.write_mode
2025-06-13 03:01:22.979
2025-06-13 03:01:22.993 with act_db_repl.db.connect(no_db_triggers = True) as con:
2025-06-13 03:01:23.002 db_repl_file = con.info.name
2025-06-13 03:01:23.011 db_repl_fw = con.info.write_mode
2025-06-13 03:01:23.017
2025-06-13 03:01:23.025 # ONLY FOR THIS test: forcedly change FW to OFF, without any condition.
2025-06-13 03:01:23.032 # Otherwise changes may not be delivered to replica for <MAX_TIME_FOR_WAIT_DATA_IN_REPLICA> seconds.
2025-06-13 03:01:23.038 #####################
2025-06-13 03:01:23.044 act_db_main.db.set_async_write()
2025-06-13 03:01:23.049 act_db_repl.db.set_async_write()
2025-06-13 03:01:23.054
2025-06-13 03:01:23.059
2025-06-13 03:01:23.071 # Must be EMPTY:
2025-06-13 03:01:23.078 out_prep = capsys.readouterr().out
2025-06-13 03:01:23.085
2025-06-13 03:01:23.089 sql_init = """
2025-06-13 03:01:23.095 set bail on;
2025-06-13 03:01:23.101
2025-06-13 03:01:23.108 recreate table log_ddl_triggers_activity (
2025-06-13 03:01:23.113 id int generated by default as identity constraint pk_log_ddl_triggers_activity primary key
2025-06-13 03:01:23.119 ,ddl_trigger_name varchar(64)
2025-06-13 03:01:23.124 ,event_type varchar(25) not null
2025-06-13 03:01:23.128 ,object_type varchar(25) not null
2025-06-13 03:01:23.134 ,ddl_event varchar(25) not null
2025-06-13 03:01:23.139 ,object_name varchar(64) not null
2025-06-13 03:01:23.144 ,dts timestamp default 'now'
2025-06-13 03:01:23.149 );
2025-06-13 03:01:23.153
2025-06-13 03:01:23.158
2025-06-13 03:01:23.162 set term ^;
2025-06-13 03:01:23.167 execute block as
2025-06-13 03:01:23.172 declare v_lf char(1) = x'0A';
2025-06-13 03:01:23.176 begin
2025-06-13 03:01:23.181 rdb$set_context('USER_SESSION', 'SKIP_DDL_TRIGGER', '1');
2025-06-13 03:01:23.186
2025-06-13 03:01:23.191 for
2025-06-13 03:01:23.196 with
2025-06-13 03:01:23.201 a as (
2025-06-13 03:01:23.206 select 'ANY DDL STATEMENT' x from rdb$database union all
2025-06-13 03:01:23.211 select 'CREATE TABLE' from rdb$database union all
2025-06-13 03:01:23.216 select 'ALTER TABLE' from rdb$database union all
2025-06-13 03:01:23.221 select 'DROP TABLE' from rdb$database union all
2025-06-13 03:01:23.226 select 'CREATE PROCEDURE' from rdb$database union all
2025-06-13 03:01:23.231 select 'ALTER PROCEDURE' from rdb$database union all
2025-06-13 03:01:23.236 select 'DROP PROCEDURE' from rdb$database union all
2025-06-13 03:01:23.241 select 'CREATE FUNCTION' from rdb$database union all
2025-06-13 03:01:23.245 select 'ALTER FUNCTION' from rdb$database union all
2025-06-13 03:01:23.250 select 'DROP FUNCTION' from rdb$database union all
2025-06-13 03:01:23.255 select 'CREATE TRIGGER' from rdb$database union all
2025-06-13 03:01:23.260 select 'ALTER TRIGGER' from rdb$database union all
2025-06-13 03:01:23.265 select 'DROP TRIGGER' from rdb$database union all
2025-06-13 03:01:23.270 select 'CREATE EXCEPTION' from rdb$database union all
2025-06-13 03:01:23.274 select 'ALTER EXCEPTION' from rdb$database union all
2025-06-13 03:01:23.279 select 'DROP EXCEPTION' from rdb$database union all
2025-06-13 03:01:23.283 select 'CREATE VIEW' from rdb$database union all
2025-06-13 03:01:23.288 select 'ALTER VIEW' from rdb$database union all
2025-06-13 03:01:23.293 select 'DROP VIEW' from rdb$database union all
2025-06-13 03:01:23.297 select 'CREATE DOMAIN' from rdb$database union all
2025-06-13 03:01:23.302 select 'ALTER DOMAIN' from rdb$database union all
2025-06-13 03:01:23.307 select 'DROP DOMAIN' from rdb$database union all
2025-06-13 03:01:23.312 select 'CREATE ROLE' from rdb$database union all
2025-06-13 03:01:23.317 select 'ALTER ROLE' from rdb$database union all
2025-06-13 03:01:23.321 select 'DROP ROLE' from rdb$database union all
2025-06-13 03:01:23.326 select 'CREATE SEQUENCE' from rdb$database union all
2025-06-13 03:01:23.331 select 'ALTER SEQUENCE' from rdb$database union all
2025-06-13 03:01:23.337 select 'DROP SEQUENCE' from rdb$database union all
2025-06-13 03:01:23.341 select 'CREATE USER' from rdb$database union all
2025-06-13 03:01:23.347 select 'ALTER USER' from rdb$database union all
2025-06-13 03:01:23.351 select 'DROP USER' from rdb$database union all
2025-06-13 03:01:23.356 select 'CREATE INDEX' from rdb$database union all
2025-06-13 03:01:23.361 select 'ALTER INDEX' from rdb$database union all
2025-06-13 03:01:23.366 select 'DROP INDEX' from rdb$database union all
2025-06-13 03:01:23.371 select 'CREATE COLLATION' from rdb$database union all
2025-06-13 03:01:23.382 select 'DROP COLLATION' from rdb$database union all
2025-06-13 03:01:23.394 select 'ALTER CHARACTER SET' from rdb$database union all
2025-06-13 03:01:23.402 select 'CREATE PACKAGE' from rdb$database union all
2025-06-13 03:01:23.416 select 'ALTER PACKAGE' from rdb$database union all
2025-06-13 03:01:23.426 select 'DROP PACKAGE' from rdb$database union all
2025-06-13 03:01:23.431 select 'CREATE PACKAGE BODY' from rdb$database union all
2025-06-13 03:01:23.436 select 'DROP PACKAGE BODY' from rdb$database
2025-06-13 03:01:23.441 )
2025-06-13 03:01:23.445 ,e as (
2025-06-13 03:01:23.450 select 'before' w from rdb$database union all select 'after' from rdb$database
2025-06-13 03:01:23.454 )
2025-06-13 03:01:23.459 ,t as (
2025-06-13 03:01:23.464 select upper(trim(replace(trim(a.x),' ','_')) || iif(e.w='before', '_before', '_after')) as trg_name, a.x, e.w
2025-06-13 03:01:23.468 from e, a
2025-06-13 03:01:23.473 )
2025-06-13 03:01:23.478
2025-06-13 03:01:23.483 select
2025-06-13 03:01:23.487 'create or alter trigger trg_' || t.trg_name
2025-06-13 03:01:23.492 || ' active ' || t.w || ' ' || trim(t.x) || ' as '
2025-06-13 03:01:23.496 || :v_lf
2025-06-13 03:01:23.501 || 'begin'
2025-06-13 03:01:23.506 || :v_lf
2025-06-13 03:01:23.510 || q'{ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then}'
2025-06-13 03:01:23.515 || :v_lf
2025-06-13 03:01:23.520 || ' insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values('
2025-06-13 03:01:23.525 || :v_lf
2025-06-13 03:01:23.529 || q'{'}' || trim(t.trg_name) || q'{'}'
2025-06-13 03:01:23.534 || :v_lf
2025-06-13 03:01:23.538 || q'{, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')}'
2025-06-13 03:01:23.543 || :v_lf
2025-06-13 03:01:23.547 || q'{, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')}'
2025-06-13 03:01:23.552 || :v_lf
2025-06-13 03:01:23.558 || q'{, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')}'
2025-06-13 03:01:23.562 || :v_lf
2025-06-13 03:01:23.567 || q'{, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')}'
2025-06-13 03:01:23.571 || :v_lf
2025-06-13 03:01:23.576 || ');'
2025-06-13 03:01:23.581 || :v_lf
2025-06-13 03:01:23.585 || ' end'
2025-06-13 03:01:23.590 as sttm
2025-06-13 03:01:23.595 from t
2025-06-13 03:01:23.600 as cursor c
2025-06-13 03:01:23.604 do begin
2025-06-13 03:01:23.609 execute statement(c.sttm) with autonomous transaction;
2025-06-13 03:01:23.613 end
2025-06-13 03:01:23.618
2025-06-13 03:01:23.623 rdb$set_context('USER_SESSION', 'SKIP_DDL_TRIGGER', null);
2025-06-13 03:01:23.627 end
2025-06-13 03:01:23.631 ^
2025-06-13 03:01:23.636 commit
2025-06-13 03:01:23.641 ^
2025-06-13 03:01:23.646
2025-06-13 03:01:23.650 create table test(id int not null, name varchar(10))
2025-06-13 03:01:23.655 ^
2025-06-13 03:01:23.660 alter table test add constraint test_pk primary key(id)
2025-06-13 03:01:23.664 ^
2025-06-13 03:01:23.669 ----------
2025-06-13 03:01:23.673 create procedure sp_test as begin end
2025-06-13 03:01:23.678 ^
2025-06-13 03:01:23.683 alter procedure sp_test as declare x int; begin x=1; end
2025-06-13 03:01:23.687 ^
2025-06-13 03:01:23.691 ----------
2025-06-13 03:01:23.696 create function fn_test(a_id int) returns bigint as
2025-06-13 03:01:23.701 begin
2025-06-13 03:01:23.706 return a_id * a_id;
2025-06-13 03:01:23.710 end
2025-06-13 03:01:23.716 ^
2025-06-13 03:01:23.721 alter function fn_test(a_id int) returns int128 as
2025-06-13 03:01:23.726 begin
2025-06-13 03:01:23.731 return a_id * a_id * a_id;
2025-06-13 03:01:23.735 end
2025-06-13 03:01:23.740 ^
2025-06-13 03:01:23.744 ----------
2025-06-13 03:01:23.749 create trigger trg_connect_test on connect as
2025-06-13 03:01:23.753 begin
2025-06-13 03:01:23.758 end
2025-06-13 03:01:23.763 ^
2025-06-13 03:01:23.767 alter trigger trg_connect_test as
2025-06-13 03:01:23.772 declare x int;
2025-06-13 03:01:23.777 begin
2025-06-13 03:01:23.782 x = 1;
2025-06-13 03:01:23.788 end
2025-06-13 03:01:23.792 ^
2025-06-13 03:01:23.797 ----------
2025-06-13 03:01:23.802 create exception exc_test 'Invalud value: @1'
2025-06-13 03:01:23.807 ^
2025-06-13 03:01:23.812 alter exception exc_test 'Bad values: @1 and @2'
2025-06-13 03:01:23.817 ^
2025-06-13 03:01:23.821 ----------
2025-06-13 03:01:23.826 create view v_test as select 1 x from rdb$database
2025-06-13 03:01:23.830 ^
2025-06-13 03:01:23.835 alter view v_test as select 1 x, 2 y from rdb$database
2025-06-13 03:01:23.839 ^
2025-06-13 03:01:23.844 ----------
2025-06-13 03:01:23.849 create domain dm_test int
2025-06-13 03:01:23.853 ^
2025-06-13 03:01:23.858 alter domain dm_test set not null
2025-06-13 03:01:23.863 ^
2025-06-13 03:01:23.867 ----------
2025-06-13 03:01:23.872 create role r_test
2025-06-13 03:01:23.877 ^
2025-06-13 03:01:23.881 alter role r_test set system privileges to use_gstat_utility, ignore_db_triggers
2025-06-13 03:01:23.886 ^
2025-06-13 03:01:23.890 ----------
2025-06-13 03:01:23.895 create sequence g_test
2025-06-13 03:01:23.900 ^
2025-06-13 03:01:23.905 alter sequence g_test restart with 123
2025-06-13 03:01:23.909 ^
2025-06-13 03:01:23.914 ----------
2025-06-13 03:01:23.919 /*
2025-06-13 03:01:23.925 create or alter user u_test password '123' using plugin Srp
2025-06-13 03:01:23.930 ^
2025-06-13 03:01:23.936 alter user u_test password '456'
2025-06-13 03:01:23.942 ^
2025-06-13 03:01:23.947 */
2025-06-13 03:01:23.953 ----------
2025-06-13 03:01:23.959 create index test_name on test(name)
2025-06-13 03:01:23.964 ^
2025-06-13 03:01:23.970 alter index test_name inactive
2025-06-13 03:01:23.975 ^
2025-06-13 03:01:23.980 ----------
2025-06-13 03:01:23.987 create collation name_coll for utf8 from unicode case insensitive
2025-06-13 03:01:23.992 ^
2025-06-13 03:01:23.998 ----------
2025-06-13 03:01:24.004 alter character set iso8859_1 set default collation pt_br
2025-06-13 03:01:24.016 ^
2025-06-13 03:01:24.023 ----------
2025-06-13 03:01:24.030 create or alter package pg_test as
2025-06-13 03:01:24.034 begin
2025-06-13 03:01:24.038 function pg_fn1 returns int;
2025-06-13 03:01:24.043 end
2025-06-13 03:01:24.048 ^
2025-06-13 03:01:24.052 alter package pg_test as
2025-06-13 03:01:24.057 begin
2025-06-13 03:01:24.061 function pg_fn1(a_x int) returns int128;
2025-06-13 03:01:24.066 end
2025-06-13 03:01:24.070 ^
2025-06-13 03:01:24.076
2025-06-13 03:01:24.082 create package body pg_test as
2025-06-13 03:01:24.088 begin
2025-06-13 03:01:24.093 function pg_fn1(a_x int) returns int128 as
2025-06-13 03:01:24.099 begin
2025-06-13 03:01:24.103 return a_x * a_x * a_x;
2025-06-13 03:01:24.109 end
2025-06-13 03:01:24.113 end
2025-06-13 03:01:24.118 ^
2025-06-13 03:01:24.122 recreate table t_ddl_completed(id int primary key)
2025-06-13 03:01:24.127 ^
2025-06-13 03:01:24.132 commit
2025-06-13 03:01:24.137 ^
2025-06-13 03:01:24.141 """
2025-06-13 03:01:24.146
2025-06-13 03:01:24.151 act_db_main.isql(switches=['-q'], input = sql_init, combine_output = True)
2025-06-13 03:01:24.155 out_prep = act_db_main.clean_stdout
2025-06-13 03:01:24.160 act_db_main.reset()
2025-06-13 03:01:24.164
2025-06-13 03:01:24.169 if out_prep:
2025-06-13 03:01:24.174 # Init SQL raised error.
2025-06-13 03:01:24.178 pass
2025-06-13 03:01:24.183 else:
2025-06-13 03:01:24.188
2025-06-13 03:01:24.192 # Query to be used for check that all DB objects present in replica (after last DDL statement completed on master DB):
2025-06-13 03:01:24.197 ddl_ready_query = "select 1 from rdb$relations r where r.rdb$relation_name = upper('t_ddl_completed')"
2025-06-13 03:01:24.201 isql_check_script = ''
2025-06-13 03:01:24.206
2025-06-13 03:01:24.210 # DO NOT DELETE! To be used after #7547 will be fixed
2025-06-13 03:01:24.215 # (currently this query returns NOTHING on replica db)
2025-06-13 03:01:24.220 ######################################
2025-06-13 03:01:24.224 #isql_check_script = """
2025-06-13 03:01:24.229 # set list on;
2025-06-13 03:01:24.234 # set count on;
2025-06-13 03:01:24.238 # select
2025-06-13 03:01:24.242 # a.id
2025-06-13 03:01:24.247 # ,a.ddl_trigger_name
2025-06-13 03:01:24.252 # ,a.event_type
2025-06-13 03:01:24.256 # ,a.object_type
2025-06-13 03:01:24.261 # ,a.ddl_event
2025-06-13 03:01:24.266 # ,a.object_name
2025-06-13 03:01:24.271 # from log_ddl_triggers_activity a
2025-06-13 03:01:24.275 # order by a.id;
2025-06-13 03:01:24.280 #"""
2025-06-13 03:01:24.284
2025-06-13 03:01:24.288 isql_expected_out = """
2025-06-13 03:01:24.293 """
2025-06-13 03:01:24.297
2025-06-13 03:01:24.302 ##############################################################################
2025-06-13 03:01:24.307 ### W A I T U N T I L R E P L I C A B E C O M E S A C T U A L ###
2025-06-13 03:01:24.312 ##############################################################################
2025-06-13 03:01:24.317 watch_replica( act_db_repl, MAX_TIME_FOR_WAIT_DATA_IN_REPLICA, ddl_ready_query, isql_check_script, isql_expected_out)
2025-06-13 03:01:24.321 # Must be EMPTY:
2025-06-13 03:01:24.326 out_main = capsys.readouterr().out
2025-06-13 03:01:24.330
2025-06-13 03:01:24.334
2025-06-13 03:01:24.339 drop_db_objects(act_db_main, act_db_repl, capsys)
2025-06-13 03:01:24.343
2025-06-13 03:01:24.352 # Return FW to initial values (if needed):
2025-06-13 03:01:24.357 if db_main_fw == DbWriteMode.SYNC:
2025-06-13 03:01:24.363 act_db_main.db.set_sync_write()
2025-06-13 03:01:24.368 if db_repl_fw == DbWriteMode.SYNC:
2025-06-13 03:01:24.373 act_db_repl.db.set_sync_write()
2025-06-13 03:01:24.377
2025-06-13 03:01:24.382 # Must be EMPTY:
2025-06-13 03:01:24.389 out_drop = capsys.readouterr().out
2025-06-13 03:01:24.394
2025-06-13 03:01:24.399 if [ x for x in (out_prep, out_main, out_drop) if x.strip() ]:
2025-06-13 03:01:24.404 # We have a problem either with DDL/DML or with dropping DB objects.
2025-06-13 03:01:24.409 # First, we have to RECREATE both master and slave databases
2025-06-13 03:01:24.413 # (otherwise further execution of this test or other replication-related tests most likely will fail):
2025-06-13 03:01:24.418 out_reset = reset_replication(act_db_main, act_db_repl, db_main_file, db_repl_file)
2025-06-13 03:01:24.423
2025-06-13 03:01:24.427 # Next, we display out_main, out_drop and out_reset:
2025-06-13 03:01:24.432 #
2025-06-13 03:01:24.437 print('Problem(s) detected:')
2025-06-13 03:01:24.441 if out_prep.strip():
2025-06-13 03:01:24.446 print('out_prep:')
2025-06-13 03:01:24.450 print(out_prep)
2025-06-13 03:01:24.458 if out_main.strip():
2025-06-13 03:01:24.466 print('out_main:')
2025-06-13 03:01:24.478 print(out_main)
2025-06-13 03:01:24.484 if out_drop.strip():
2025-06-13 03:01:24.488 print('out_drop:')
2025-06-13 03:01:24.493 print(out_drop)
2025-06-13 03:01:24.498 if out_reset.strip():
2025-06-13 03:01:24.502 print('out_reset:')
2025-06-13 03:01:24.507 print(out_reset)
2025-06-13 03:01:24.512
2025-06-13 03:01:24.516 > assert '' == capsys.readouterr().out
2025-06-13 03:01:24.521 E assert
2025-06-13 03:01:24.526 E - Problem(s) detected:
2025-06-13 03:01:24.530 E - out_prep:
2025-06-13 03:01:24.535 E - Statement failed, SQLSTATE = HY000
2025-06-13 03:01:24.541 E - ALTER CHARACTER SET "SYSTEM"."ISO8859_1" failed
2025-06-13 03:01:24.546 E - -Cannot CREATE/ALTER/DROP CHARACTER SET in SYSTEM schema
2025-06-13 03:01:24.551 E - out_drop:
2025-06-13 03:01:24.555 E -
2025-06-13 03:01:24.561 E - ---
2025-06-13 03:01:24.566 E - +++
2025-06-13 03:01:24.571 E - @@ -12,5 +12,805 @@
2025-06-13 03:01:24.646 E - COMMIT WORK; +/* Table: PUBLIC.LOG_DDL_TRIGGERS_ACTIVITY, Owner: SYSDBA */+CREATE TABLE PUBLIC.LOG_DDL_TRIGGERS_ACTIVITY (ID INTEGER GENERATED BY DEFAULT AS IDENTITY (START WITH 1) NOT NULL,+ DDL_TRIGGER_NAME VARCHAR(64),+ EVENT_TYPE VARCHAR(25) NOT NULL,+ OBJECT_TYPE VARCHAR(25) NOT NULL,+ DDL_EVENT VARCHAR(25) NOT NULL,+ OBJECT_NAME VARCHAR(64) NOT NULL,+ DTS TIMESTAMP default 'now',+CONSTRAINT PK_LOG_DDL_TRIGGERS_ACTIVITY PRIMARY KEY (ID));+SET TERM ^ ;++/* Triggers only will work for SQL triggers */+CREATE TRIGGER PUBLIC.TRG_CREATE_TABLE_BEFORE +ACTIVE BEFORE CREATE TABLE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_TABLE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_TABLE_AFTER +ACTIVE AFTER CREATE TABLE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_TABLE_AFTER'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_TABLE_BEFORE +ACTIVE BEFORE ALTER TABLE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_TABLE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_TABLE_AFTER +ACTIVE AFTER ALTER TABLE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_TABLE_AFTER'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_TABLE_BEFORE +ACTIVE BEFORE DROP TABLE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_TABLE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_TABLE_AFTER +ACTIVE AFTER DROP TABLE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_TABLE_AFTER'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_PROCEDURE_BEFORE +ACTIVE BEFORE CREATE PROCEDURE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_PROCEDURE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_PROCEDURE_AFTER +ACTIVE AFTER CREATE PROCEDURE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_PROCEDURE_AFTER'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_PROCEDURE_BEFORE +ACTIVE BEFORE ALTER PROCEDURE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_PROCEDURE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_PROCEDURE_AFTER +ACTIVE AFTER ALTER PROCEDURE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_PROCEDURE_AFTER'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_PROCEDURE_BEFORE +ACTIVE BEFORE DROP PROCEDURE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_PROCEDURE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_PROCEDURE_AFTER +ACTIVE AFTER DROP PROCEDURE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_PROCEDURE_AFTER'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_FUNCTION_BEFORE +ACTIVE BEFORE CREATE FUNCTION POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_FUNCTION_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_FUNCTION_AFTER +ACTIVE AFTER CREATE FUNCTION POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_FUNCTION_AFTER'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_FUNCTION_BEFORE +ACTIVE BEFORE ALTER FUNCTION POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_FUNCTION_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_FUNCTION_AFTER +ACTIVE AFTER ALTER FUNCTION POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_FUNCTION_AFTER'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_FUNCTION_BEFORE +ACTIVE BEFORE DROP FUNCTION POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_FUNCTION_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_FUNCTION_AFTER +ACTIVE AFTER DROP FUNCTION POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_FUNCTION_AFTER'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_TRIGGER_BEFORE +ACTIVE BEFORE CREATE TRIGGER POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_TRIGGER_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_TRIGGER_AFTER +ACTIVE AFTER CREATE TRIGGER POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_TRIGGER_AFTER'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_TRIGGER_BEFORE +ACTIVE BEFORE ALTER TRIGGER POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_TRIGGER_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_TRIGGER_AFTER +ACTIVE AFTER ALTER TRIGGER POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_TRIGGER_AFTER'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_TRIGGER_BEFORE +ACTIVE BEFORE DROP TRIGGER POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_TRIGGER_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_TRIGGER_AFTER +ACTIVE AFTER DROP TRIGGER POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_TRIGGER_AFTER'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_EXCEPTION_BEFORE +ACTIVE BEFORE CREATE EXCEPTION POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_EXCEPTION_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_EXCEPTION_AFTER +ACTIVE AFTER CREATE EXCEPTION POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_EXCEPTION_AFTER'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_EXCEPTION_BEFORE +ACTIVE BEFORE ALTER EXCEPTION POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_EXCEPTION_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_EXCEPTION_BEFORE +ACTIVE BEFORE DROP EXCEPTION POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_EXCEPTION_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_VIEW_BEFORE +ACTIVE BEFORE CREATE VIEW POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_VIEW_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_VIEW_BEFORE +ACTIVE BEFORE ALTER VIEW POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_VIEW_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_VIEW_BEFORE +ACTIVE BEFORE DROP VIEW POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_VIEW_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_DOMAIN_BEFORE +ACTIVE BEFORE CREATE DOMAIN POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_DOMAIN_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_DOMAIN_BEFORE +ACTIVE BEFORE ALTER DOMAIN POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_DOMAIN_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_DOMAIN_BEFORE +ACTIVE BEFORE DROP DOMAIN POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_DOMAIN_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_ROLE_BEFORE +ACTIVE BEFORE CREATE ROLE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_ROLE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_ROLE_BEFORE +ACTIVE BEFORE ALTER ROLE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_ROLE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_ROLE_BEFORE +ACTIVE BEFORE DROP ROLE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_ROLE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_INDEX_BEFORE +ACTIVE BEFORE CREATE INDEX POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_INDEX_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_INDEX_BEFORE +ACTIVE BEFORE ALTER INDEX POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_INDEX_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_INDEX_BEFORE +ACTIVE BEFORE DROP INDEX POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_INDEX_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_SEQUENCE_BEFORE +ACTIVE BEFORE CREATE SEQUENCE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_SEQUENCE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_SEQUENCE_BEFORE +ACTIVE BEFORE ALTER SEQUENCE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_SEQUENCE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_SEQUENCE_BEFORE +ACTIVE BEFORE DROP SEQUENCE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_SEQUENCE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_USER_BEFORE +ACTIVE BEFORE CREATE USER POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_USER_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_USER_BEFORE +ACTIVE BEFORE ALTER USER POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_USER_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_USER_BEFORE +ACTIVE BEFORE DROP USER POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_USER_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_COLLATION_BEFORE +ACTIVE BEFORE CREATE COLLATION POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_COLLATION_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_COLLATION_BEFORE +ACTIVE BEFORE DROP COLLATION POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_COLLATION_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_CHARACTER_SET_BEFORE +ACTIVE BEFORE ALTER CHARACTER SET POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_CHARACTER_SET_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_PACKAGE_BEFORE +ACTIVE BEFORE CREATE PACKAGE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_PACKAGE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_PACKAGE_BEFORE +ACTIVE BEFORE ALTER PACKAGE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_PACKAGE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_PACKAGE_BEFORE +ACTIVE BEFORE DROP PACKAGE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_PACKAGE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_PACKAGE_BODY_BEFORE +ACTIVE BEFORE CREATE PACKAGE BODY POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_PACKAGE_BODY_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_PACKAGE_BODY_BEFORE +ACTIVE BEFORE DROP PACKAGE BODY POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_PACKAGE_BODY_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ANY_DDL_STATEMENT_BEFORE +ACTIVE BEFORE ANY DDL STATEMENT POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ANY_DDL_STATEMENT_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ANY_DDL_STATEMENT_AFTER +ACTIVE AFTER ANY DDL STATEMENT POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ANY_DDL_STATEMENT_AFTER'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^+++SET TERM ; ^+COMMIT WORK;+ /* Grant permissions for this database */ GRANT USAGE ON SCHEMA PUBLIC TO USER PUBLIC;
2025-06-13 03:01:24.652 E -
2025-06-13 03:01:24.656
2025-06-13 03:01:24.661 tests/functional/replication/test_ddl_triggers_must_not_fire_on_replica.py:663: AssertionError
|
3 #text |
act_db_main = <firebird.qa.plugin.Action pytest object at [hex]>
act_db_repl = <firebird.qa.plugin.Action pytest object at [hex]>
capsys = <_pytest.capture.CaptureFixture pytest object at [hex]>
@pytest.mark.replication
@pytest.mark.version('>=4.0.1')
def test_1(act_db_main: Action, act_db_repl: Action, capsys):
out_prep, out_main, out_drop = '', '', ''
# Obtain full path + filename for DB_MAIN and DB_REPL aliases.
# NOTE: we must NOT use 'a.db.db_path' for ALIASED databases!
# It will return '.' rather than full path+filename.
# Use only con.info.name for that!
#
db_main_file, db_repl_file = '', ''
db_main_fw, db_repl_fw = DbWriteMode.ASYNC, DbWriteMode.ASYNC
with act_db_main.db.connect(no_db_triggers = True) as con:
#if act_db_main.vars['server-arch'] == 'Classic' and os.name != 'nt':
# pytest.skip("Waiting for FIX: 'Engine is shutdown' in replication log for CS. Linux only.")
db_main_file = con.info.name
db_main_fw = con.info.write_mode
with act_db_repl.db.connect(no_db_triggers = True) as con:
db_repl_file = con.info.name
db_repl_fw = con.info.write_mode
# ONLY FOR THIS test: forcedly change FW to OFF, without any condition.
# Otherwise changes may not be delivered to replica for <MAX_TIME_FOR_WAIT_DATA_IN_REPLICA> seconds.
#####################
act_db_main.db.set_async_write()
act_db_repl.db.set_async_write()
# Must be EMPTY:
out_prep = capsys.readouterr().out
sql_init = """
set bail on;
recreate table log_ddl_triggers_activity (
id int generated by default as identity constraint pk_log_ddl_triggers_activity primary key
,ddl_trigger_name varchar(64)
,event_type varchar(25) not null
,object_type varchar(25) not null
,ddl_event varchar(25) not null
,object_name varchar(64) not null
,dts timestamp default 'now'
);
set term ^;
execute block as
declare v_lf char(1) = x'0A';
begin
rdb$set_context('USER_SESSION', 'SKIP_DDL_TRIGGER', '1');
for
with
a as (
select 'ANY DDL STATEMENT' x from rdb$database union all
select 'CREATE TABLE' from rdb$database union all
select 'ALTER TABLE' from rdb$database union all
select 'DROP TABLE' from rdb$database union all
select 'CREATE PROCEDURE' from rdb$database union all
select 'ALTER PROCEDURE' from rdb$database union all
select 'DROP PROCEDURE' from rdb$database union all
select 'CREATE FUNCTION' from rdb$database union all
select 'ALTER FUNCTION' from rdb$database union all
select 'DROP FUNCTION' from rdb$database union all
select 'CREATE TRIGGER' from rdb$database union all
select 'ALTER TRIGGER' from rdb$database union all
select 'DROP TRIGGER' from rdb$database union all
select 'CREATE EXCEPTION' from rdb$database union all
select 'ALTER EXCEPTION' from rdb$database union all
select 'DROP EXCEPTION' from rdb$database union all
select 'CREATE VIEW' from rdb$database union all
select 'ALTER VIEW' from rdb$database union all
select 'DROP VIEW' from rdb$database union all
select 'CREATE DOMAIN' from rdb$database union all
select 'ALTER DOMAIN' from rdb$database union all
select 'DROP DOMAIN' from rdb$database union all
select 'CREATE ROLE' from rdb$database union all
select 'ALTER ROLE' from rdb$database union all
select 'DROP ROLE' from rdb$database union all
select 'CREATE SEQUENCE' from rdb$database union all
select 'ALTER SEQUENCE' from rdb$database union all
select 'DROP SEQUENCE' from rdb$database union all
select 'CREATE USER' from rdb$database union all
select 'ALTER USER' from rdb$database union all
select 'DROP USER' from rdb$database union all
select 'CREATE INDEX' from rdb$database union all
select 'ALTER INDEX' from rdb$database union all
select 'DROP INDEX' from rdb$database union all
select 'CREATE COLLATION' from rdb$database union all
select 'DROP COLLATION' from rdb$database union all
select 'ALTER CHARACTER SET' from rdb$database union all
select 'CREATE PACKAGE' from rdb$database union all
select 'ALTER PACKAGE' from rdb$database union all
select 'DROP PACKAGE' from rdb$database union all
select 'CREATE PACKAGE BODY' from rdb$database union all
select 'DROP PACKAGE BODY' from rdb$database
)
,e as (
select 'before' w from rdb$database union all select 'after' from rdb$database
)
,t as (
select upper(trim(replace(trim(a.x),' ','_')) || iif(e.w='before', '_before', '_after')) as trg_name, a.x, e.w
from e, a
)
select
'create or alter trigger trg_' || t.trg_name
|| ' active ' || t.w || ' ' || trim(t.x) || ' as '
|| :v_lf
|| 'begin'
|| :v_lf
|| q'{ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then}'
|| :v_lf
|| ' insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values('
|| :v_lf
|| q'{'}' || trim(t.trg_name) || q'{'}'
|| :v_lf
|| q'{, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')}'
|| :v_lf
|| q'{, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')}'
|| :v_lf
|| q'{, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')}'
|| :v_lf
|| q'{, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')}'
|| :v_lf
|| ');'
|| :v_lf
|| ' end'
as sttm
from t
as cursor c
do begin
execute statement(c.sttm) with autonomous transaction;
end
rdb$set_context('USER_SESSION', 'SKIP_DDL_TRIGGER', null);
end
^
commit
^
create table test(id int not null, name varchar(10))
^
alter table test add constraint test_pk primary key(id)
^
----------
create procedure sp_test as begin end
^
alter procedure sp_test as declare x int; begin x=1; end
^
----------
create function fn_test(a_id int) returns bigint as
begin
return a_id * a_id;
end
^
alter function fn_test(a_id int) returns int128 as
begin
return a_id * a_id * a_id;
end
^
----------
create trigger trg_connect_test on connect as
begin
end
^
alter trigger trg_connect_test as
declare x int;
begin
x = 1;
end
^
----------
create exception exc_test 'Invalud value: @1'
^
alter exception exc_test 'Bad values: @1 and @2'
^
----------
create view v_test as select 1 x from rdb$database
^
alter view v_test as select 1 x, 2 y from rdb$database
^
----------
create domain dm_test int
^
alter domain dm_test set not null
^
----------
create role r_test
^
alter role r_test set system privileges to use_gstat_utility, ignore_db_triggers
^
----------
create sequence g_test
^
alter sequence g_test restart with 123
^
----------
/*
create or alter user u_test password '123' using plugin Srp
^
alter user u_test password '456'
^
*/
----------
create index test_name on test(name)
^
alter index test_name inactive
^
----------
create collation name_coll for utf8 from unicode case insensitive
^
----------
alter character set iso8859_1 set default collation pt_br
^
----------
create or alter package pg_test as
begin
function pg_fn1 returns int;
end
^
alter package pg_test as
begin
function pg_fn1(a_x int) returns int128;
end
^
create package body pg_test as
begin
function pg_fn1(a_x int) returns int128 as
begin
return a_x * a_x * a_x;
end
end
^
recreate table t_ddl_completed(id int primary key)
^
commit
^
"""
act_db_main.isql(switches=['-q'], input = sql_init, combine_output = True)
out_prep = act_db_main.clean_stdout
act_db_main.reset()
if out_prep:
# Init SQL raised error.
pass
else:
# Query to be used for check that all DB objects present in replica (after last DDL statement completed on master DB):
ddl_ready_query = "select 1 from rdb$relations r where r.rdb$relation_name = upper('t_ddl_completed')"
isql_check_script = ''
# DO NOT DELETE! To be used after #7547 will be fixed
# (currently this query returns NOTHING on replica db)
######################################
#isql_check_script = """
# set list on;
# set count on;
# select
# a.id
# ,a.ddl_trigger_name
# ,a.event_type
# ,a.object_type
# ,a.ddl_event
# ,a.object_name
# from log_ddl_triggers_activity a
# order by a.id;
#"""
isql_expected_out = """
"""
##############################################################################
### W A I T U N T I L R E P L I C A B E C O M E S A C T U A L ###
##############################################################################
watch_replica( act_db_repl, MAX_TIME_FOR_WAIT_DATA_IN_REPLICA, ddl_ready_query, isql_check_script, isql_expected_out)
# Must be EMPTY:
out_main = capsys.readouterr().out
drop_db_objects(act_db_main, act_db_repl, capsys)
# Return FW to initial values (if needed):
if db_main_fw == DbWriteMode.SYNC:
act_db_main.db.set_sync_write()
if db_repl_fw == DbWriteMode.SYNC:
act_db_repl.db.set_sync_write()
# Must be EMPTY:
out_drop = capsys.readouterr().out
if [ x for x in (out_prep, out_main, out_drop) if x.strip() ]:
# We have a problem either with DDL/DML or with dropping DB objects.
# First, we have to RECREATE both master and slave databases
# (otherwise further execution of this test or other replication-related tests most likely will fail):
out_reset = reset_replication(act_db_main, act_db_repl, db_main_file, db_repl_file)
# Next, we display out_main, out_drop and out_reset:
#
print('Problem(s) detected:')
if out_prep.strip():
print('out_prep:')
print(out_prep)
if out_main.strip():
print('out_main:')
print(out_main)
if out_drop.strip():
print('out_drop:')
print(out_drop)
if out_reset.strip():
print('out_reset:')
print(out_reset)
> assert '' == capsys.readouterr().out
E assert
E - Problem(s) detected:
E - out_prep:
E - Statement failed, SQLSTATE = HY000
E - ALTER CHARACTER SET "SYSTEM"."ISO8859_1" failed
E - -Cannot CREATE/ALTER/DROP CHARACTER SET in SYSTEM schema
E - out_drop:
E -
E - ---
E - +++
E - @@ -12,5 +12,805 @@
E - COMMIT WORK; +/* Table: PUBLIC.LOG_DDL_TRIGGERS_ACTIVITY, Owner: SYSDBA */+CREATE TABLE PUBLIC.LOG_DDL_TRIGGERS_ACTIVITY (ID INTEGER GENERATED BY DEFAULT AS IDENTITY (START WITH 1) NOT NULL,+ DDL_TRIGGER_NAME VARCHAR(64),+ EVENT_TYPE VARCHAR(25) NOT NULL,+ OBJECT_TYPE VARCHAR(25) NOT NULL,+ DDL_EVENT VARCHAR(25) NOT NULL,+ OBJECT_NAME VARCHAR(64) NOT NULL,+ DTS TIMESTAMP default 'now',+CONSTRAINT PK_LOG_DDL_TRIGGERS_ACTIVITY PRIMARY KEY (ID));+SET TERM ^ ;++/* Triggers only will work for SQL triggers */+CREATE TRIGGER PUBLIC.TRG_CREATE_TABLE_BEFORE +ACTIVE BEFORE CREATE TABLE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_TABLE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_TABLE_AFTER +ACTIVE AFTER CREATE TABLE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_TABLE_AFTER'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_TABLE_BEFORE +ACTIVE BEFORE ALTER TABLE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_TABLE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_TABLE_AFTER +ACTIVE AFTER ALTER TABLE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_TABLE_AFTER'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_TABLE_BEFORE +ACTIVE BEFORE DROP TABLE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_TABLE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_TABLE_AFTER +ACTIVE AFTER DROP TABLE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_TABLE_AFTER'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_PROCEDURE_BEFORE +ACTIVE BEFORE CREATE PROCEDURE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_PROCEDURE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_PROCEDURE_AFTER +ACTIVE AFTER CREATE PROCEDURE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_PROCEDURE_AFTER'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_PROCEDURE_BEFORE +ACTIVE BEFORE ALTER PROCEDURE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_PROCEDURE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_PROCEDURE_AFTER +ACTIVE AFTER ALTER PROCEDURE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_PROCEDURE_AFTER'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_PROCEDURE_BEFORE +ACTIVE BEFORE DROP PROCEDURE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_PROCEDURE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_PROCEDURE_AFTER +ACTIVE AFTER DROP PROCEDURE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_PROCEDURE_AFTER'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_FUNCTION_BEFORE +ACTIVE BEFORE CREATE FUNCTION POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_FUNCTION_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_FUNCTION_AFTER +ACTIVE AFTER CREATE FUNCTION POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_FUNCTION_AFTER'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_FUNCTION_BEFORE +ACTIVE BEFORE ALTER FUNCTION POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_FUNCTION_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_FUNCTION_AFTER +ACTIVE AFTER ALTER FUNCTION POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_FUNCTION_AFTER'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_FUNCTION_BEFORE +ACTIVE BEFORE DROP FUNCTION POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_FUNCTION_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_FUNCTION_AFTER +ACTIVE AFTER DROP FUNCTION POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_FUNCTION_AFTER'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_TRIGGER_BEFORE +ACTIVE BEFORE CREATE TRIGGER POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_TRIGGER_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_TRIGGER_AFTER +ACTIVE AFTER CREATE TRIGGER POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_TRIGGER_AFTER'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_TRIGGER_BEFORE +ACTIVE BEFORE ALTER TRIGGER POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_TRIGGER_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_TRIGGER_AFTER +ACTIVE AFTER ALTER TRIGGER POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_TRIGGER_AFTER'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_TRIGGER_BEFORE +ACTIVE BEFORE DROP TRIGGER POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_TRIGGER_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_TRIGGER_AFTER +ACTIVE AFTER DROP TRIGGER POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_TRIGGER_AFTER'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_EXCEPTION_BEFORE +ACTIVE BEFORE CREATE EXCEPTION POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_EXCEPTION_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_EXCEPTION_AFTER +ACTIVE AFTER CREATE EXCEPTION POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_EXCEPTION_AFTER'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_EXCEPTION_BEFORE +ACTIVE BEFORE ALTER EXCEPTION POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_EXCEPTION_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_EXCEPTION_BEFORE +ACTIVE BEFORE DROP EXCEPTION POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_EXCEPTION_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_VIEW_BEFORE +ACTIVE BEFORE CREATE VIEW POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_VIEW_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_VIEW_BEFORE +ACTIVE BEFORE ALTER VIEW POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_VIEW_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_VIEW_BEFORE +ACTIVE BEFORE DROP VIEW POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_VIEW_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_DOMAIN_BEFORE +ACTIVE BEFORE CREATE DOMAIN POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_DOMAIN_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_DOMAIN_BEFORE +ACTIVE BEFORE ALTER DOMAIN POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_DOMAIN_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_DOMAIN_BEFORE +ACTIVE BEFORE DROP DOMAIN POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_DOMAIN_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_ROLE_BEFORE +ACTIVE BEFORE CREATE ROLE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_ROLE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_ROLE_BEFORE +ACTIVE BEFORE ALTER ROLE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_ROLE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_ROLE_BEFORE +ACTIVE BEFORE DROP ROLE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_ROLE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_INDEX_BEFORE +ACTIVE BEFORE CREATE INDEX POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_INDEX_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_INDEX_BEFORE +ACTIVE BEFORE ALTER INDEX POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_INDEX_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_INDEX_BEFORE +ACTIVE BEFORE DROP INDEX POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_INDEX_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_SEQUENCE_BEFORE +ACTIVE BEFORE CREATE SEQUENCE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_SEQUENCE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_SEQUENCE_BEFORE +ACTIVE BEFORE ALTER SEQUENCE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_SEQUENCE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_SEQUENCE_BEFORE +ACTIVE BEFORE DROP SEQUENCE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_SEQUENCE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_USER_BEFORE +ACTIVE BEFORE CREATE USER POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_USER_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_USER_BEFORE +ACTIVE BEFORE ALTER USER POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_USER_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_USER_BEFORE +ACTIVE BEFORE DROP USER POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_USER_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_COLLATION_BEFORE +ACTIVE BEFORE CREATE COLLATION POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_COLLATION_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_COLLATION_BEFORE +ACTIVE BEFORE DROP COLLATION POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_COLLATION_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_CHARACTER_SET_BEFORE +ACTIVE BEFORE ALTER CHARACTER SET POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_CHARACTER_SET_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_PACKAGE_BEFORE +ACTIVE BEFORE CREATE PACKAGE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_PACKAGE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ALTER_PACKAGE_BEFORE +ACTIVE BEFORE ALTER PACKAGE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ALTER_PACKAGE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_PACKAGE_BEFORE +ACTIVE BEFORE DROP PACKAGE POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_PACKAGE_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_CREATE_PACKAGE_BODY_BEFORE +ACTIVE BEFORE CREATE PACKAGE BODY POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'CREATE_PACKAGE_BODY_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_DROP_PACKAGE_BODY_BEFORE +ACTIVE BEFORE DROP PACKAGE BODY POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'DROP_PACKAGE_BODY_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ANY_DDL_STATEMENT_BEFORE +ACTIVE BEFORE ANY DDL STATEMENT POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ANY_DDL_STATEMENT_BEFORE'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^++CREATE TRIGGER PUBLIC.TRG_ANY_DDL_STATEMENT_AFTER +ACTIVE AFTER ANY DDL STATEMENT POSITION 0 +as +begin+ if (rdb$get_context('USER_SESSION', 'SKIP_DDL_TRIGGER') is null) then+ insert into log_ddl_triggers_activity(ddl_trigger_name, event_type, object_type, ddl_event, object_name) values(+'ANY_DDL_STATEMENT_AFTER'+, rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE')+, rdb$get_context('DDL_TRIGGER', 'DDL_EVENT')+, rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME')+);+ end ^+++SET TERM ; ^+COMMIT WORK;+ /* Grant permissions for this database */ GRANT USAGE ON SCHEMA PUBLIC TO USER PUBLIC;
E -
tests/functional/replication/test_ddl_triggers_must_not_fire_on_replica.py:663: AssertionError
|