diff --git a/doc/src/sgml/event-trigger.sgml b/doc/src/sgml/event-trigger.sgml index 52e9764..36f0d34 100644 --- a/doc/src/sgml/event-trigger.sgml +++ b/doc/src/sgml/event-trigger.sgml @@ -25,24 +25,25 @@ Overview of Event Trigger Behavior - An event trigger fires whenever the event with which it is - associated occurs in the database in which it is defined. Currently, - the only supported event is command_start. Support for + An event trigger fires whenever the event with which it is associated + occurs in the database in which it is defined. Currently, the only + supported event is ddl_command_start. Support for additional events may be added in future releases. - The command_start event occurs just before the execution of - many SQL commands, most of which can be broadly described as - DDL. There are a number of commands that, + The ddl_command_start event occurs just before the + execution of many SQL commands, most of which can be broadly described + as + DDL. There are a number of commands that, for various reasons, are specifically excluded from the event trigger system: - The command_start event does not occur for commands that - access or modify data within a particular table, such + The ddl_command_start event does not occur for commands + that access or modify data within a particular table, such , , , , and . This also includes commands related @@ -54,19 +55,21 @@ - The command_start event does not occur for commands that - create, alter, or drop global objects. Unlike the event trigger, these - objects are not part of the current database; they are accessible from - all databases in the cluster, and are therefore unaffected by event - triggers. Such objects include databases, tablespaces, and roles. + The ddl_command_start event does not occur for commands + that create, alter, or drop global objects. Unlike the event trigger, + these objects are not part of the current database; they are + accessible from all databases in the cluster, and are therefore + unaffected by event triggers. Such objects include databases, + tablespaces, and roles. - The command_start event does not occur for commands where - firing a trigger might result either result in system instability or - interfere with the administrator's ability to regain control of the - database. These include transaction control commands, such as + The ddl_command_start event does not occur for commands + where firing a trigger might result either result in system + instability or interfere with the administrator's ability to regain + control of the database. These include transaction control commands, + such as or ; configuration commands, such as or ; and commands related to the event trigger mechanism itself, such as @@ -97,7 +100,7 @@ A trigger definition can also specify a WHEN - condition so that, for example, a command_start + condition so that, for example, a ddl_command_start trigger can be fired only for particular commands which the user wishes to intercept. A common use of such triggers is to restrict the range of DDL operations which users may perform. @@ -118,7 +121,7 @@ command tag - command_start + ddl_command_start diff --git a/doc/src/sgml/plpgsql.sgml b/doc/src/sgml/plpgsql.sgml index a21aaf2..4ce3278 100644 --- a/doc/src/sgml/plpgsql.sgml +++ b/doc/src/sgml/plpgsql.sgml @@ -4020,7 +4020,7 @@ BEGIN END; $$ LANGUAGE plpgsql; -CREATE EVENT TRIGGER snitch ON command_start EXECUTE PROCEDURE snitch(); +CREATE EVENT TRIGGER snitch ON ddl_command_start EXECUTE PROCEDURE snitch(); diff --git a/doc/src/sgml/ref/create_event_trigger.sgml b/doc/src/sgml/ref/create_event_trigger.sgml index 3b3d474..a25c6b0 100644 --- a/doc/src/sgml/ref/create_event_trigger.sgml +++ b/doc/src/sgml/ref/create_event_trigger.sgml @@ -122,8 +122,7 @@ CREATE EVENT TRIGGER name Examples - Forbid the execution of any command supported by the event trigger - mechanism: + Forbid the execution of any ddl command: CREATE OR REPLACE FUNCTION abort_any_command() @@ -135,7 +134,7 @@ BEGIN END; $$; -CREATE EVENT TRIGGER abort_ddl ON command_start +CREATE EVENT TRIGGER abort_ddl ON ddl_command_start EXECUTE PROCEDURE abort_any_command(); @@ -156,8 +155,8 @@ END; $$; CREATE EVENT TRIGGER check_style - ON command_start - WHEN tag IN (CREATE TABLE) + ON ddl_command_start + WHEN tag IN ('CREATE TABLE', 'CREATE TABLE AS', 'SELECT INTO') EXECUTE PROCEDURE enforce_local_style(); diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c index 4e1a8c0..dcbd180 100644 --- a/src/backend/tcop/utility.c +++ b/src/backend/tcop/utility.c @@ -355,7 +355,7 @@ standard_ProcessUtility(Node *parsetree, if (completionTag) completionTag[0] = '\0'; - /* Event Trigger support for command_start */ + /* Event Trigger support for ddl_command_start */ InitEventContext(&evt, parsetree); switch (nodeTag(parsetree)) @@ -509,7 +509,8 @@ standard_ProcessUtility(Node *parsetree, * relation and attribute manipulation */ case T_CreateSchemaStmt: - ExecEventTriggers(&evt, EVT_CommandStart); + evt.objecttype = OBJECT_SCHEMA; + ExecEventTriggers(&evt, EVT_DDLCommandStart); CreateSchemaCommand((CreateSchemaStmt *) parsetree, queryString); break; @@ -523,7 +524,11 @@ standard_ProcessUtility(Node *parsetree, CreateStmt *stmt = (CreateStmt *) parsetree; /* possibly run event triggers */ - ExecEventTriggers(&evt, EVT_CommandStart); + if (nodeTag(parsetree) == T_CreateStmt) + evt.objecttype = OBJECT_TABLE; + else + evt.objecttype = OBJECT_FOREIGN_TABLE; + ExecEventTriggers(&evt, EVT_DDLCommandStart); /* Run parse analysis ... */ stmts = transformCreateStmt(stmt, queryString); @@ -589,74 +594,81 @@ standard_ProcessUtility(Node *parsetree, case T_CreateTableSpaceStmt: PreventTransactionChain(isTopLevel, "CREATE TABLESPACE"); - ExecEventTriggers(&evt, EVT_CommandStart); CreateTableSpace((CreateTableSpaceStmt *) parsetree); break; case T_DropTableSpaceStmt: PreventTransactionChain(isTopLevel, "DROP TABLESPACE"); - ExecEventTriggers(&evt, EVT_CommandStart); DropTableSpace((DropTableSpaceStmt *) parsetree); break; case T_AlterTableSpaceOptionsStmt: - ExecEventTriggers(&evt, EVT_CommandStart); AlterTableSpaceOptions((AlterTableSpaceOptionsStmt *) parsetree); break; case T_CreateExtensionStmt: - ExecEventTriggers(&evt, EVT_CommandStart); + evt.objecttype = OBJECT_EXTENSION; + ExecEventTriggers(&evt, EVT_DDLCommandStart); CreateExtension((CreateExtensionStmt *) parsetree); break; case T_AlterExtensionStmt: - ExecEventTriggers(&evt, EVT_CommandStart); + evt.objecttype = OBJECT_EXTENSION; + ExecEventTriggers(&evt, EVT_DDLCommandStart); ExecAlterExtensionStmt((AlterExtensionStmt *) parsetree); break; case T_AlterExtensionContentsStmt: - ExecEventTriggers(&evt, EVT_CommandStart); + evt.objecttype = OBJECT_EXTENSION; + ExecEventTriggers(&evt, EVT_DDLCommandStart); ExecAlterExtensionContentsStmt((AlterExtensionContentsStmt *) parsetree); break; case T_CreateFdwStmt: - ExecEventTriggers(&evt, EVT_CommandStart); + evt.objecttype = OBJECT_FDW; + ExecEventTriggers(&evt, EVT_DDLCommandStart); CreateForeignDataWrapper((CreateFdwStmt *) parsetree); break; case T_AlterFdwStmt: - ExecEventTriggers(&evt, EVT_CommandStart); + evt.objecttype = OBJECT_FDW; + ExecEventTriggers(&evt, EVT_DDLCommandStart); AlterForeignDataWrapper((AlterFdwStmt *) parsetree); break; case T_CreateForeignServerStmt: - ExecEventTriggers(&evt, EVT_CommandStart); + evt.objecttype = OBJECT_FOREIGN_SERVER; + ExecEventTriggers(&evt, EVT_DDLCommandStart); CreateForeignServer((CreateForeignServerStmt *) parsetree); break; case T_AlterForeignServerStmt: - ExecEventTriggers(&evt, EVT_CommandStart); + evt.objecttype = OBJECT_FOREIGN_SERVER; + ExecEventTriggers(&evt, EVT_DDLCommandStart); AlterForeignServer((AlterForeignServerStmt *) parsetree); break; case T_CreateUserMappingStmt: - ExecEventTriggers(&evt, EVT_CommandStart); + /* there's no OBJECT_ for user mappings */ + ExecEventTriggers(&evt, EVT_DDLCommandStart); CreateUserMapping((CreateUserMappingStmt *) parsetree); break; case T_AlterUserMappingStmt: - ExecEventTriggers(&evt, EVT_CommandStart); + /* there's no OBJECT_ for user mappings */ + ExecEventTriggers(&evt, EVT_DDLCommandStart); AlterUserMapping((AlterUserMappingStmt *) parsetree); break; case T_DropUserMappingStmt: - ExecEventTriggers(&evt, EVT_CommandStart); + /* there's no OBJECT_ for user mappings */ + ExecEventTriggers(&evt, EVT_DDLCommandStart); RemoveUserMapping((DropUserMappingStmt *) parsetree); break; case T_DropStmt: evt.objecttype = ((DropStmt *) parsetree)->removeType; - ExecEventTriggers(&evt, EVT_CommandStart); + ExecEventTriggers(&evt, EVT_DDLCommandStart); switch (((DropStmt *) parsetree)->removeType) { @@ -722,19 +734,19 @@ standard_ProcessUtility(Node *parsetree, */ case T_RenameStmt: evt.objecttype = ((RenameStmt *) parsetree)->renameType; - ExecEventTriggers(&evt, EVT_CommandStart); + ExecEventTriggers(&evt, EVT_DDLCommandStart); ExecRenameStmt((RenameStmt *) parsetree); break; case T_AlterObjectSchemaStmt: evt.objecttype = ((AlterObjectSchemaStmt *) parsetree)->objectType; - ExecEventTriggers(&evt, EVT_CommandStart); + ExecEventTriggers(&evt, EVT_DDLCommandStart); ExecAlterObjectSchemaStmt((AlterObjectSchemaStmt *) parsetree); break; case T_AlterOwnerStmt: evt.objecttype = ((AlterOwnerStmt *) parsetree)->objectType; - ExecEventTriggers(&evt, EVT_CommandStart); + ExecEventTriggers(&evt, EVT_DDLCommandStart); ExecAlterOwnerStmt((AlterOwnerStmt *) parsetree); break; @@ -746,8 +758,9 @@ standard_ProcessUtility(Node *parsetree, ListCell *l; LOCKMODE lockmode; - /* run command_start event triggers, if any */ - ExecEventTriggers(&evt, EVT_CommandStart); + /* run ddl_command_start event triggers, if any */ + evt.objecttype = OBJECT_TABLE; + ExecEventTriggers(&evt, EVT_DDLCommandStart); /* * Figure out lock mode, and acquire lock. This also does @@ -800,8 +813,9 @@ standard_ProcessUtility(Node *parsetree, { AlterDomainStmt *stmt = (AlterDomainStmt *) parsetree; - /* run command_start event triggers, if any */ - ExecEventTriggers(&evt, EVT_CommandStart); + /* run ddl_command_start event triggers, if any */ + evt.objecttype = OBJECT_DOMAIN; + ExecEventTriggers(&evt, EVT_DDLCommandStart); /* * Some or all of these functions are recursive to cover @@ -868,7 +882,7 @@ standard_ProcessUtility(Node *parsetree, DefineStmt *stmt = (DefineStmt *) parsetree; evt.objecttype = stmt->kind; - ExecEventTriggers(&evt, EVT_CommandStart); + ExecEventTriggers(&evt, EVT_DDLCommandStart); switch (stmt->kind) { @@ -916,18 +930,21 @@ standard_ProcessUtility(Node *parsetree, { CompositeTypeStmt *stmt = (CompositeTypeStmt *) parsetree; - ExecEventTriggers(&evt, EVT_CommandStart); + evt.objecttype = OBJECT_TYPE; + ExecEventTriggers(&evt, EVT_DDLCommandStart); DefineCompositeType(stmt->typevar, stmt->coldeflist); } break; case T_CreateEnumStmt: /* CREATE TYPE AS ENUM */ - ExecEventTriggers(&evt, EVT_CommandStart); + evt.objecttype = OBJECT_TYPE; + ExecEventTriggers(&evt, EVT_DDLCommandStart); DefineEnum((CreateEnumStmt *) parsetree); break; case T_CreateRangeStmt: /* CREATE TYPE AS RANGE */ - ExecEventTriggers(&evt, EVT_CommandStart); + evt.objecttype = OBJECT_TYPE; + ExecEventTriggers(&evt, EVT_DDLCommandStart); DefineRange((CreateRangeStmt *) parsetree); break; @@ -938,23 +955,27 @@ standard_ProcessUtility(Node *parsetree, * with enum OID values getting into indexes and then having their * defining pg_enum entries go away. */ + evt.objecttype = OBJECT_TYPE; + ExecEventTriggers(&evt, EVT_DDLCommandStart); PreventTransactionChain(isTopLevel, "ALTER TYPE ... ADD"); - ExecEventTriggers(&evt, EVT_CommandStart); AlterEnum((AlterEnumStmt *) parsetree); break; case T_ViewStmt: /* CREATE VIEW */ - ExecEventTriggers(&evt, EVT_CommandStart); + evt.objecttype = OBJECT_VIEW; + ExecEventTriggers(&evt, EVT_DDLCommandStart); DefineView((ViewStmt *) parsetree, queryString); break; case T_CreateFunctionStmt: /* CREATE FUNCTION */ - ExecEventTriggers(&evt, EVT_CommandStart); + evt.objecttype = OBJECT_FUNCTION; + ExecEventTriggers(&evt, EVT_DDLCommandStart); CreateFunction((CreateFunctionStmt *) parsetree, queryString); break; case T_AlterFunctionStmt: /* ALTER FUNCTION */ - ExecEventTriggers(&evt, EVT_CommandStart); + evt.objecttype = OBJECT_FUNCTION; + ExecEventTriggers(&evt, EVT_DDLCommandStart); AlterFunction((AlterFunctionStmt *) parsetree); break; @@ -962,7 +983,8 @@ standard_ProcessUtility(Node *parsetree, { IndexStmt *stmt = (IndexStmt *) parsetree; - ExecEventTriggers(&evt, EVT_CommandStart); + evt.objecttype = OBJECT_INDEX; + ExecEventTriggers(&evt, EVT_DDLCommandStart); if (stmt->concurrent) PreventTransactionChain(isTopLevel, @@ -998,17 +1020,20 @@ standard_ProcessUtility(Node *parsetree, break; case T_RuleStmt: /* CREATE RULE */ - ExecEventTriggers(&evt, EVT_CommandStart); + evt.objecttype = OBJECT_RULE; + ExecEventTriggers(&evt, EVT_DDLCommandStart); DefineRule((RuleStmt *) parsetree, queryString); break; case T_CreateSeqStmt: - ExecEventTriggers(&evt, EVT_CommandStart); + evt.objecttype = OBJECT_SEQUENCE; + ExecEventTriggers(&evt, EVT_DDLCommandStart); DefineSequence((CreateSeqStmt *) parsetree); break; case T_AlterSeqStmt: - ExecEventTriggers(&evt, EVT_CommandStart); + evt.objecttype = OBJECT_SEQUENCE; + ExecEventTriggers(&evt, EVT_DDLCommandStart); AlterSequence((AlterSeqStmt *) parsetree); break; @@ -1075,8 +1100,6 @@ standard_ProcessUtility(Node *parsetree, { LoadStmt *stmt = (LoadStmt *) parsetree; - ExecEventTriggers(&evt, EVT_CommandStart); - closeAllVfds(); /* probably not necessary... */ /* Allowed names are restricted if you're not superuser */ load_file(stmt->filename, !superuser()); @@ -1085,14 +1108,12 @@ standard_ProcessUtility(Node *parsetree, case T_ClusterStmt: /* we choose to allow this during "read only" transactions */ - ExecEventTriggers(&evt, EVT_CommandStart); PreventCommandDuringRecovery("CLUSTER"); cluster((ClusterStmt *) parsetree, isTopLevel); break; case T_VacuumStmt: /* we choose to allow this during "read only" transactions */ - ExecEventTriggers(&evt, EVT_CommandStart); PreventCommandDuringRecovery("VACUUM"); vacuum((VacuumStmt *) parsetree, InvalidOid, true, NULL, false, isTopLevel); @@ -1103,7 +1124,10 @@ standard_ProcessUtility(Node *parsetree, break; case T_CreateTableAsStmt: - ExecEventTriggers(&evt, EVT_CommandStart); + evt.objecttype = OBJECT_TABLE; + if (((CreateTableAsStmt *) parsetree)->is_select_into) + evt.operation = "CREATE"; + ExecEventTriggers(&evt, EVT_DDLCommandStart); ExecCreateTableAs((CreateTableAsStmt *) parsetree, queryString, params, completionTag); break; @@ -1127,7 +1151,8 @@ standard_ProcessUtility(Node *parsetree, break; case T_CreateTrigStmt: - ExecEventTriggers(&evt, EVT_CommandStart); + evt.objecttype = OBJECT_TRIGGER; + ExecEventTriggers(&evt, EVT_DDLCommandStart); (void) CreateTrigger((CreateTrigStmt *) parsetree, queryString, InvalidOid, InvalidOid, false); break; @@ -1141,7 +1166,8 @@ standard_ProcessUtility(Node *parsetree, break; case T_CreatePLangStmt: - ExecEventTriggers(&evt, EVT_CommandStart); + evt.objecttype = OBJECT_LANGUAGE; + ExecEventTriggers(&evt, EVT_DDLCommandStart); CreateProceduralLanguage((CreatePLangStmt *) parsetree); break; @@ -1149,7 +1175,8 @@ standard_ProcessUtility(Node *parsetree, * ******************************** DOMAIN statements **** */ case T_CreateDomainStmt: - ExecEventTriggers(&evt, EVT_CommandStart); + evt.objecttype = OBJECT_DOMAIN; + ExecEventTriggers(&evt, EVT_DDLCommandStart); DefineDomain((CreateDomainStmt *) parsetree); break; @@ -1215,8 +1242,6 @@ standard_ProcessUtility(Node *parsetree, { ReindexStmt *stmt = (ReindexStmt *) parsetree; - ExecEventTriggers(&evt, EVT_CommandStart); - /* we choose to allow this during "read only" transactions */ PreventCommandDuringRecovery("REINDEX"); switch (stmt->kind) @@ -1250,37 +1275,44 @@ standard_ProcessUtility(Node *parsetree, break; case T_CreateConversionStmt: - ExecEventTriggers(&evt, EVT_CommandStart); + evt.objecttype = OBJECT_CONVERSION; + ExecEventTriggers(&evt, EVT_DDLCommandStart); CreateConversionCommand((CreateConversionStmt *) parsetree); break; case T_CreateCastStmt: - ExecEventTriggers(&evt, EVT_CommandStart); + evt.objecttype = OBJECT_CAST; + ExecEventTriggers(&evt, EVT_DDLCommandStart); CreateCast((CreateCastStmt *) parsetree); break; case T_CreateOpClassStmt: - ExecEventTriggers(&evt, EVT_CommandStart); + evt.objecttype = OBJECT_OPCLASS; + ExecEventTriggers(&evt, EVT_DDLCommandStart); DefineOpClass((CreateOpClassStmt *) parsetree); break; case T_CreateOpFamilyStmt: - ExecEventTriggers(&evt, EVT_CommandStart); + evt.objecttype = OBJECT_OPFAMILY; + ExecEventTriggers(&evt, EVT_DDLCommandStart); DefineOpFamily((CreateOpFamilyStmt *) parsetree); break; case T_AlterOpFamilyStmt: - ExecEventTriggers(&evt, EVT_CommandStart); + evt.objecttype = OBJECT_OPFAMILY; + ExecEventTriggers(&evt, EVT_DDLCommandStart); AlterOpFamily((AlterOpFamilyStmt *) parsetree); break; case T_AlterTSDictionaryStmt: - ExecEventTriggers(&evt, EVT_CommandStart); + evt.objecttype = OBJECT_TSDICTIONARY; + ExecEventTriggers(&evt, EVT_DDLCommandStart); AlterTSDictionary((AlterTSDictionaryStmt *) parsetree); break; case T_AlterTSConfigurationStmt: - ExecEventTriggers(&evt, EVT_CommandStart); + evt.objecttype = OBJECT_TSCONFIGURATION; + ExecEventTriggers(&evt, EVT_DDLCommandStart); AlterTSConfiguration((AlterTSConfigurationStmt *) parsetree); break; diff --git a/src/backend/utils/cache/evtcache.c b/src/backend/utils/cache/evtcache.c index bae9c35..df517e8 100644 --- a/src/backend/utils/cache/evtcache.c +++ b/src/backend/utils/cache/evtcache.c @@ -102,7 +102,7 @@ static EventTriggerCommandTagsType EventTriggerCommandTags[] = ETC_CreateCast, "CREATE CAST", T_CreateCastStmt, - -1 + OBJECT_CAST }, { ETC_CreateCollation, @@ -114,49 +114,49 @@ static EventTriggerCommandTagsType EventTriggerCommandTags[] = ETC_CreateConversion, "CREATE CONVERSION", T_CreateConversionStmt, - -1 + OBJECT_CONVERSION }, { ETC_CreateDomain, "CREATE DOMAIN", T_CreateDomainStmt, - -1 + OBJECT_DOMAIN }, { ETC_CreateExtension, "CREATE EXTENSION", T_CreateExtensionStmt, - -1 + OBJECT_EXTENSION }, { ETC_CreateForeignDataWrapper, "CREATE FOREIGN DATA WRAPPER", T_CreateFdwStmt, - -1 + OBJECT_FDW }, { ETC_CreateForeignTable, "CREATE FOREIGN TABLE", T_CreateForeignTableStmt, - -1 + OBJECT_FOREIGN_TABLE }, { ETC_CreateFunction, "CREATE FUNCTION", T_CreateFunctionStmt, - -1 + OBJECT_FUNCTION }, { ETC_CreateIndex, "CREATE INDEX", T_IndexStmt, - -1 + OBJECT_INDEX }, { ETC_CreateLanguage, "CREATE LANGUAGE", T_CreatePLangStmt, - -1 + OBJECT_LANGUAGE }, { ETC_CreateOperator, @@ -168,13 +168,13 @@ static EventTriggerCommandTagsType EventTriggerCommandTags[] = ETC_CreateOperatorClass, "CREATE OPERATOR CLASS", T_CreateOpClassStmt, - -1 + OBJECT_OPCLASS }, { ETC_CreateOperatorFamily, "CREATE OPERATOR FAMILY", T_CreateOpFamilyStmt, - -1 + OBJECT_OPFAMILY }, { ETC_CreateRule, @@ -186,37 +186,37 @@ static EventTriggerCommandTagsType EventTriggerCommandTags[] = ETC_CreateSchema, "CREATE SCHEMA", T_CreateSchemaStmt, - -1 + OBJECT_SCHEMA }, { ETC_CreateSequence, "CREATE SEQUENCE", T_CreateSeqStmt, - -1 + OBJECT_SEQUENCE }, { ETC_CreateServer, "CREATE SERVER", T_CreateForeignServerStmt, - -1 + OBJECT_FOREIGN_SERVER }, { ETC_CreateTable, "CREATE TABLE", T_CreateStmt, - -1 + OBJECT_TABLE }, { ETC_CreateTableAs, "CREATE TABLE AS", T_CreateTableAsStmt, - -1 + OBJECT_TABLE }, { ETC_SelectInto, "SELECT INTO", T_CreateTableAsStmt, - -1 + OBJECT_TABLE }, { ETC_CreateTextSearchParser, @@ -246,7 +246,7 @@ static EventTriggerCommandTagsType EventTriggerCommandTags[] = ETC_CreateTrigger, "CREATE TRIGGER", T_CreateTrigStmt, - -1 + OBJECT_TRIGGER }, { ETC_CreateType, @@ -258,19 +258,19 @@ static EventTriggerCommandTagsType EventTriggerCommandTags[] = ETC_CreateType, "CREATE TYPE", T_CompositeTypeStmt, - -1 + OBJECT_TYPE }, { ETC_CreateType, "CREATE TYPE", T_CreateEnumStmt, - -1 + OBJECT_TYPE }, { ETC_CreateType, "CREATE TYPE", T_CreateRangeStmt, - -1 + OBJECT_TYPE }, { ETC_CreateUserMapping, @@ -282,13 +282,13 @@ static EventTriggerCommandTagsType EventTriggerCommandTags[] = ETC_CreateView, "CREATE VIEW", T_ViewStmt, - -1 + OBJECT_VIEW }, { ETC_AlterTable, "ALTER TABLE", T_AlterTableStmt, - -1 + OBJECT_TABLE }, { ETC_DropAggregate, @@ -453,34 +453,10 @@ static EventTriggerCommandTagsType EventTriggerCommandTags[] = OBJECT_VIEW }, { - ETC_Vacuum, - "VACUUM", - T_VacuumStmt, - -1 - }, - { - ETC_Cluster, - "CLUSTER", - T_ClusterStmt, - -1 - }, - { - ETC_Load, - "LOAD", - T_LoadStmt, - -1 - }, - { - ETC_Reindex, - "REINDEX", - T_ReindexStmt, - -1 - }, - { ETC_AlterSequence, "ALTER SEQUENCE", T_AlterSeqStmt, - -1 + OBJECT_SEQUENCE }, { ETC_AlterUserMapping, @@ -492,13 +468,13 @@ static EventTriggerCommandTagsType EventTriggerCommandTags[] = ETC_AlterFunction, "ALTER FUNCTION", T_AlterFunctionStmt, - -1 + OBJECT_FUNCTION }, { ETC_AlterDomain, "ALTER DOMAIN", T_AlterDomainStmt, - -1 + OBJECT_DOMAIN }, /* ALTER name RENAME TO */ { @@ -818,7 +794,7 @@ static EventTriggerCommandTagsType EventTriggerCommandTags[] = ETC_AlterType, "ALTER TYPE", T_AlterEnumStmt, - -1 + OBJECT_TYPE }, { ETC_AlterType, @@ -842,7 +818,7 @@ static EventTriggerCommandTagsType EventTriggerCommandTags[] = ETC_AlterTextSearchDictionary, "ALTER TEXT SEARCH DICTIONARY", T_AlterTSDictionaryStmt, - -1 + OBJECT_TSDICTIONARY }, /* ALTER name OWNER TO */ { @@ -1319,8 +1295,8 @@ event_to_string(TrigEvent event) { switch (event) { - case EVT_CommandStart: - return "command_start"; + case EVT_DDLCommandStart: + return "ddl_command_start"; } return NULL; } @@ -1328,8 +1304,8 @@ event_to_string(TrigEvent event) TrigEvent parse_event_name(char *event) { - if (pg_strcasecmp(event, "command_start") == 0) - return EVT_CommandStart; + if (pg_strcasecmp(event, "ddl_command_start") == 0) + return EVT_DDLCommandStart; else ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), diff --git a/src/include/commands/event_trigger.h b/src/include/commands/event_trigger.h index 13be6bc..9772577 100644 --- a/src/include/commands/event_trigger.h +++ b/src/include/commands/event_trigger.h @@ -51,7 +51,7 @@ typedef struct EventContextData *EventContext; typedef struct EventTriggerData { NodeTag type; - char *event; /* command_start, etc */ + char *event; /* ddl_command_start, etc */ char *toplevel; /* TopLevel Command Tag */ char *tag; /* Command Tag */ char *operation; /* CREATE / ALTER / DROP, or NULL */ diff --git a/src/include/utils/evtcache.h b/src/include/utils/evtcache.h index ef84b90..397cd55 100644 --- a/src/include/utils/evtcache.h +++ b/src/include/utils/evtcache.h @@ -20,12 +20,12 @@ * Times at which an event trigger can be fired. These are the * possible values for pg_event_trigger.evtevent. * - * As of now we only implement the command_start firing point, we intend on + * As of now we only implement the ddl_command_start firing point, we intend on * adding more firing points later. */ typedef enum TrigEvent { - EVT_CommandStart = 1, + EVT_DDLCommandStart = 1, } TrigEvent; /* @@ -70,12 +70,6 @@ typedef enum TrigEventCommand ETC_AlterUserMapping, ETC_AlterView, - ETC_Cluster = 300, - ETC_Load, - ETC_Reindex, - ETC_SelectInto, - ETC_Vacuum, - ETC_CreateAggregate = 400, ETC_CreateCast, ETC_CreateCollation, @@ -96,6 +90,7 @@ typedef enum TrigEventCommand ETC_CreateServer, ETC_CreateTable, ETC_CreateTableAs, + ETC_SelectInto, ETC_CreateTextSearchParser, ETC_CreateTextSearchConfiguration, ETC_CreateTextSearchDictionary, diff --git a/src/pl/plperl/expected/plperl_trigger.out b/src/pl/plperl/expected/plperl_trigger.out index 2d1ed56..6f48bef 100644 --- a/src/pl/plperl/expected/plperl_trigger.out +++ b/src/pl/plperl/expected/plperl_trigger.out @@ -317,20 +317,22 @@ create or replace function perlsnitch() returns event_trigger language plperl as . $_TD->{schemaname} . " " . $_TD->{objectname}); $$; -create event trigger perl_snitch on command_start execute procedure perlsnitch(); +create event trigger perl_snitch + on ddl_command_start + execute procedure perlsnitch(); create or replace function foobar() returns int language sql as $$select 1;$$; -NOTICE: perlsnitch: command_start CREATE FUNCTION NULL NULL +NOTICE: perlsnitch: ddl_command_start CREATE FUNCTION NULL NULL CONTEXT: PL/Perl function "perlsnitch" alter function foobar() cost 77; -NOTICE: perlsnitch: command_start ALTER FUNCTION NULL NULL +NOTICE: perlsnitch: ddl_command_start ALTER FUNCTION NULL NULL CONTEXT: PL/Perl function "perlsnitch" drop function foobar(); -NOTICE: perlsnitch: command_start DROP FUNCTION NULL NULL +NOTICE: perlsnitch: ddl_command_start DROP FUNCTION NULL NULL CONTEXT: PL/Perl function "perlsnitch" create table foo(); -NOTICE: perlsnitch: command_start CREATE TABLE NULL NULL +NOTICE: perlsnitch: ddl_command_start CREATE TABLE NULL NULL CONTEXT: PL/Perl function "perlsnitch" drop table foo; -NOTICE: perlsnitch: command_start DROP TABLE NULL NULL +NOTICE: perlsnitch: ddl_command_start DROP TABLE NULL NULL CONTEXT: PL/Perl function "perlsnitch" drop event trigger perl_snitch; diff --git a/src/pl/plperl/sql/plperl_trigger.sql b/src/pl/plperl/sql/plperl_trigger.sql index 75a9f11..9df8a77 100644 --- a/src/pl/plperl/sql/plperl_trigger.sql +++ b/src/pl/plperl/sql/plperl_trigger.sql @@ -179,7 +179,9 @@ create or replace function perlsnitch() returns event_trigger language plperl as . $_TD->{objectname}); $$; -create event trigger perl_snitch on command_start execute procedure perlsnitch(); +create event trigger perl_snitch + on ddl_command_start + execute procedure perlsnitch(); create or replace function foobar() returns int language sql as $$select 1;$$; alter function foobar() cost 77; diff --git a/src/pl/plpython/expected/plpython_trigger.out b/src/pl/plpython/expected/plpython_trigger.out index 5294dc7..5eb92ee 100644 --- a/src/pl/plpython/expected/plpython_trigger.out +++ b/src/pl/plpython/expected/plpython_trigger.out @@ -615,20 +615,22 @@ create or replace function pysnitch() returns event_trigger language plpythonu a plpy.notice(" pysnitch: %s %s %s.%s" % (TD["event"], TD["tag"], TD["schemaname"], TD["objectname"])); $$; -create event trigger py_snitch on command_start execute procedure pysnitch(); +create event trigger py_snitch + on ddl_command_start + execute procedure pysnitch(); create or replace function foobar() returns int language sql as $$select 1;$$; -NOTICE: pysnitch: command_start CREATE FUNCTION None.None +NOTICE: pysnitch: ddl_command_start CREATE FUNCTION None.None CONTEXT: PL/Python function "pysnitch" alter function foobar() cost 77; -NOTICE: pysnitch: command_start ALTER FUNCTION None.None +NOTICE: pysnitch: ddl_command_start ALTER FUNCTION None.None CONTEXT: PL/Python function "pysnitch" drop function foobar(); -NOTICE: pysnitch: command_start DROP FUNCTION None.None +NOTICE: pysnitch: ddl_command_start DROP FUNCTION None.None CONTEXT: PL/Python function "pysnitch" create table foo(); -NOTICE: pysnitch: command_start CREATE TABLE None.None +NOTICE: pysnitch: ddl_command_start CREATE TABLE None.None CONTEXT: PL/Python function "pysnitch" drop table foo; -NOTICE: pysnitch: command_start DROP TABLE None.None +NOTICE: pysnitch: ddl_command_start DROP TABLE None.None CONTEXT: PL/Python function "pysnitch" drop event trigger py_snitch; diff --git a/src/pl/plpython/sql/plpython_trigger.sql b/src/pl/plpython/sql/plpython_trigger.sql index aaa1731..dd2ac11 100644 --- a/src/pl/plpython/sql/plpython_trigger.sql +++ b/src/pl/plpython/sql/plpython_trigger.sql @@ -394,7 +394,9 @@ create or replace function pysnitch() returns event_trigger language plpythonu a (TD["event"], TD["tag"], TD["schemaname"], TD["objectname"])); $$; -create event trigger py_snitch on command_start execute procedure pysnitch(); +create event trigger py_snitch + on ddl_command_start + execute procedure pysnitch(); create or replace function foobar() returns int language sql as $$select 1;$$; alter function foobar() cost 77; diff --git a/src/pl/tcl/expected/pltcl_setup.out b/src/pl/tcl/expected/pltcl_setup.out index cfe124c..b28cb8c 100644 --- a/src/pl/tcl/expected/pltcl_setup.out +++ b/src/pl/tcl/expected/pltcl_setup.out @@ -523,15 +523,17 @@ select tcl_date_week(2001,10,24); create or replace function tclsnitch() returns event_trigger language pltcl as $$ elog NOTICE " tclsnitch: $TG_event $TG_tag $TG_schemaname $TG_objectname" $$; -create event trigger tcl_snitch on command_start execute procedure tclsnitch(); +create event trigger tcl_snitch + on ddl_command_start + execute procedure tclsnitch(); create or replace function foobar() returns int language sql as $$select 1;$$; -NOTICE: tclsnitch: command_start CREATE FUNCTION +NOTICE: tclsnitch: ddl_command_start CREATE FUNCTION alter function foobar() cost 77; -NOTICE: tclsnitch: command_start ALTER FUNCTION +NOTICE: tclsnitch: ddl_command_start ALTER FUNCTION drop function foobar(); -NOTICE: tclsnitch: command_start DROP FUNCTION +NOTICE: tclsnitch: ddl_command_start DROP FUNCTION create table foo(); -NOTICE: tclsnitch: command_start CREATE TABLE +NOTICE: tclsnitch: ddl_command_start CREATE TABLE drop table foo; -NOTICE: tclsnitch: command_start DROP TABLE +NOTICE: tclsnitch: ddl_command_start DROP TABLE drop event trigger tcl_snitch; diff --git a/src/pl/tcl/sql/pltcl_setup.sql b/src/pl/tcl/sql/pltcl_setup.sql index 2cb4839..06aef02 100644 --- a/src/pl/tcl/sql/pltcl_setup.sql +++ b/src/pl/tcl/sql/pltcl_setup.sql @@ -565,7 +565,9 @@ create or replace function tclsnitch() returns event_trigger language pltcl as $ elog NOTICE " tclsnitch: $TG_event $TG_tag $TG_schemaname $TG_objectname" $$; -create event trigger tcl_snitch on command_start execute procedure tclsnitch(); +create event trigger tcl_snitch + on ddl_command_start + execute procedure tclsnitch(); create or replace function foobar() returns int language sql as $$select 1;$$; alter function foobar() cost 77; diff --git a/src/test/regress/expected/event_triggers.out b/src/test/regress/expected/event_triggers.out index 687d1c2..443736c 100644 --- a/src/test/regress/expected/event_triggers.out +++ b/src/test/regress/expected/event_triggers.out @@ -10,9 +10,11 @@ begin raise notice 'snitch: % % [% - %]', tg_event, tg_tag, tg_operation, tg_objecttype; end; $$; -create event trigger any_t on command_start +create event trigger any_t + on ddl_command_start execute procedure snitch(); -create event trigger foo_t on command_start +create event trigger foo_t + on ddl_command_start when tag in ('alter collation', 'alter conversion', 'alter domain', @@ -51,19 +53,17 @@ create event trigger foo_t on command_start 'drop text search parser', 'drop text search template', 'drop trigger', - 'reindex', - 'select into', - 'vacuum') + 'select into') execute procedure snitch(); alter event trigger foo_t disable; alter event trigger foo_t enable; alter event trigger foo_t rename to snitch; create schema cmd; -NOTICE: snitch: command_start CREATE SCHEMA [CREATE - ] -NOTICE: snitch: command_start CREATE SCHEMA [CREATE - ] +NOTICE: snitch: ddl_command_start CREATE SCHEMA [CREATE - SCHEMA] +NOTICE: snitch: ddl_command_start CREATE SCHEMA [CREATE - SCHEMA] create schema cmd2; -NOTICE: snitch: command_start CREATE SCHEMA [CREATE - ] -NOTICE: snitch: command_start CREATE SCHEMA [CREATE - ] +NOTICE: snitch: ddl_command_start CREATE SCHEMA [CREATE - SCHEMA] +NOTICE: snitch: ddl_command_start CREATE SCHEMA [CREATE - SCHEMA] create role regression_bob; alter event trigger snitch owner to regression_bob; ERROR: permission denied to change owner of event trigger "snitch" @@ -71,204 +71,195 @@ HINT: The owner of an event trigger must be a superuser. alter role regression_bob superuser; alter event trigger snitch owner to regression_bob; create table cmd.foo(id bigserial primary key); -NOTICE: snitch: command_start CREATE TABLE [CREATE - ] -NOTICE: snitch: command_start CREATE TABLE [CREATE - ] -NOTICE: snitch: command_start CREATE SEQUENCE [CREATE - ] -NOTICE: snitch: command_start CREATE SEQUENCE [CREATE - ] -NOTICE: snitch: command_start CREATE INDEX [CREATE - ] -NOTICE: snitch: command_start ALTER SEQUENCE [ALTER - ] -NOTICE: snitch: command_start ALTER SEQUENCE [ALTER - ] +NOTICE: snitch: ddl_command_start CREATE TABLE [CREATE - TABLE] +NOTICE: snitch: ddl_command_start CREATE TABLE [CREATE - TABLE] +NOTICE: snitch: ddl_command_start CREATE SEQUENCE [CREATE - SEQUENCE] +NOTICE: snitch: ddl_command_start CREATE SEQUENCE [CREATE - SEQUENCE] +NOTICE: snitch: ddl_command_start CREATE INDEX [CREATE - INDEX] +NOTICE: snitch: ddl_command_start ALTER SEQUENCE [ALTER - SEQUENCE] +NOTICE: snitch: ddl_command_start ALTER SEQUENCE [ALTER - SEQUENCE] create view cmd.v as select * from cmd.foo; -NOTICE: snitch: command_start CREATE VIEW [CREATE - ] -NOTICE: snitch: command_start CREATE VIEW [CREATE - ] +NOTICE: snitch: ddl_command_start CREATE VIEW [CREATE - VIEW] +NOTICE: snitch: ddl_command_start CREATE VIEW [CREATE - VIEW] alter table cmd.foo add column t text; -NOTICE: snitch: command_start ALTER TABLE [ALTER - ] -NOTICE: snitch: command_start ALTER TABLE [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER TABLE [ALTER - TABLE] +NOTICE: snitch: ddl_command_start ALTER TABLE [ALTER - TABLE] create table cmd.bar as select 1; -NOTICE: snitch: command_start CREATE TABLE AS [CREATE - ] -NOTICE: snitch: command_start CREATE TABLE AS [CREATE - ] +NOTICE: snitch: ddl_command_start CREATE TABLE AS [CREATE - TABLE] +NOTICE: snitch: ddl_command_start CREATE TABLE AS [CREATE - TABLE] drop table cmd.bar; -NOTICE: snitch: command_start DROP TABLE [DROP - TABLE] -NOTICE: snitch: command_start DROP TABLE [DROP - TABLE] +NOTICE: snitch: ddl_command_start DROP TABLE [DROP - TABLE] +NOTICE: snitch: ddl_command_start DROP TABLE [DROP - TABLE] select 1 into cmd.bar; -NOTICE: snitch: command_start SELECT INTO [ - ] -NOTICE: snitch: command_start SELECT INTO [ - ] +NOTICE: snitch: ddl_command_start SELECT INTO [CREATE - TABLE] +NOTICE: snitch: ddl_command_start SELECT INTO [CREATE - TABLE] drop table cmd.bar; -NOTICE: snitch: command_start DROP TABLE [DROP - TABLE] -NOTICE: snitch: command_start DROP TABLE [DROP - TABLE] +NOTICE: snitch: ddl_command_start DROP TABLE [DROP - TABLE] +NOTICE: snitch: ddl_command_start DROP TABLE [DROP - TABLE] create table test9 (id int, stuff text); -NOTICE: snitch: command_start CREATE TABLE [CREATE - ] -NOTICE: snitch: command_start CREATE TABLE [CREATE - ] +NOTICE: snitch: ddl_command_start CREATE TABLE [CREATE - TABLE] +NOTICE: snitch: ddl_command_start CREATE TABLE [CREATE - TABLE] alter table test9 rename to test; -NOTICE: snitch: command_start ALTER TABLE [ALTER - TABLE] -NOTICE: snitch: command_start ALTER TABLE [ALTER - TABLE] +NOTICE: snitch: ddl_command_start ALTER TABLE [ALTER - TABLE] +NOTICE: snitch: ddl_command_start ALTER TABLE [ALTER - TABLE] alter table test set schema cmd; -NOTICE: snitch: command_start ALTER TABLE [ALTER - TABLE] -NOTICE: snitch: command_start ALTER TABLE [ALTER - TABLE] +NOTICE: snitch: ddl_command_start ALTER TABLE [ALTER - TABLE] +NOTICE: snitch: ddl_command_start ALTER TABLE [ALTER - TABLE] alter table cmd.test rename column stuff to things; -NOTICE: snitch: command_start ALTER TABLE [ALTER - COLUMN] -NOTICE: snitch: command_start ALTER TABLE [ALTER - COLUMN] +NOTICE: snitch: ddl_command_start ALTER TABLE [ALTER - COLUMN] +NOTICE: snitch: ddl_command_start ALTER TABLE [ALTER - COLUMN] alter table cmd.test add column alpha text; -NOTICE: snitch: command_start ALTER TABLE [ALTER - ] -NOTICE: snitch: command_start ALTER TABLE [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER TABLE [ALTER - TABLE] +NOTICE: snitch: ddl_command_start ALTER TABLE [ALTER - TABLE] alter table cmd.test alter column alpha set data type varchar(300); -NOTICE: snitch: command_start ALTER TABLE [ALTER - ] -NOTICE: snitch: command_start ALTER TABLE [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER TABLE [ALTER - TABLE] +NOTICE: snitch: ddl_command_start ALTER TABLE [ALTER - TABLE] alter table cmd.test alter column alpha set default 'test'; -NOTICE: snitch: command_start ALTER TABLE [ALTER - ] -NOTICE: snitch: command_start ALTER TABLE [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER TABLE [ALTER - TABLE] +NOTICE: snitch: ddl_command_start ALTER TABLE [ALTER - TABLE] alter table cmd.test alter column alpha drop default; -NOTICE: snitch: command_start ALTER TABLE [ALTER - ] -NOTICE: snitch: command_start ALTER TABLE [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER TABLE [ALTER - TABLE] +NOTICE: snitch: ddl_command_start ALTER TABLE [ALTER - TABLE] alter table cmd.test alter column alpha set statistics 78; -NOTICE: snitch: command_start ALTER TABLE [ALTER - ] -NOTICE: snitch: command_start ALTER TABLE [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER TABLE [ALTER - TABLE] +NOTICE: snitch: ddl_command_start ALTER TABLE [ALTER - TABLE] alter table cmd.test alter column alpha set storage plain; -NOTICE: snitch: command_start ALTER TABLE [ALTER - ] -NOTICE: snitch: command_start ALTER TABLE [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER TABLE [ALTER - TABLE] +NOTICE: snitch: ddl_command_start ALTER TABLE [ALTER - TABLE] alter table cmd.test alter column alpha set not null; -NOTICE: snitch: command_start ALTER TABLE [ALTER - ] -NOTICE: snitch: command_start ALTER TABLE [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER TABLE [ALTER - TABLE] +NOTICE: snitch: ddl_command_start ALTER TABLE [ALTER - TABLE] alter table cmd.test alter column alpha drop not null; -NOTICE: snitch: command_start ALTER TABLE [ALTER - ] -NOTICE: snitch: command_start ALTER TABLE [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER TABLE [ALTER - TABLE] +NOTICE: snitch: ddl_command_start ALTER TABLE [ALTER - TABLE] alter table cmd.test alter column alpha set (n_distinct = -0.78); -NOTICE: snitch: command_start ALTER TABLE [ALTER - ] -NOTICE: snitch: command_start ALTER TABLE [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER TABLE [ALTER - TABLE] +NOTICE: snitch: ddl_command_start ALTER TABLE [ALTER - TABLE] alter table cmd.test alter column alpha reset (n_distinct); -NOTICE: snitch: command_start ALTER TABLE [ALTER - ] -NOTICE: snitch: command_start ALTER TABLE [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER TABLE [ALTER - TABLE] +NOTICE: snitch: ddl_command_start ALTER TABLE [ALTER - TABLE] alter table cmd.test drop column alpha; -NOTICE: snitch: command_start ALTER TABLE [ALTER - ] -NOTICE: snitch: command_start ALTER TABLE [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER TABLE [ALTER - TABLE] +NOTICE: snitch: ddl_command_start ALTER TABLE [ALTER - TABLE] alter table cmd.test add check (id > 2) not valid; -NOTICE: snitch: command_start ALTER TABLE [ALTER - ] -NOTICE: snitch: command_start ALTER TABLE [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER TABLE [ALTER - TABLE] +NOTICE: snitch: ddl_command_start ALTER TABLE [ALTER - TABLE] alter table cmd.test add check (id < 800000); -NOTICE: snitch: command_start ALTER TABLE [ALTER - ] -NOTICE: snitch: command_start ALTER TABLE [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER TABLE [ALTER - TABLE] +NOTICE: snitch: ddl_command_start ALTER TABLE [ALTER - TABLE] alter table cmd.test set without cluster; -NOTICE: snitch: command_start ALTER TABLE [ALTER - ] -NOTICE: snitch: command_start ALTER TABLE [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER TABLE [ALTER - TABLE] +NOTICE: snitch: ddl_command_start ALTER TABLE [ALTER - TABLE] alter table cmd.test set with oids; -NOTICE: snitch: command_start ALTER TABLE [ALTER - ] -NOTICE: snitch: command_start ALTER TABLE [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER TABLE [ALTER - TABLE] +NOTICE: snitch: ddl_command_start ALTER TABLE [ALTER - TABLE] alter table cmd.test set without oids; -NOTICE: snitch: command_start ALTER TABLE [ALTER - ] -NOTICE: snitch: command_start ALTER TABLE [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER TABLE [ALTER - TABLE] +NOTICE: snitch: ddl_command_start ALTER TABLE [ALTER - TABLE] create sequence test_seq_; -NOTICE: snitch: command_start CREATE SEQUENCE [CREATE - ] -NOTICE: snitch: command_start CREATE SEQUENCE [CREATE - ] +NOTICE: snitch: ddl_command_start CREATE SEQUENCE [CREATE - SEQUENCE] +NOTICE: snitch: ddl_command_start CREATE SEQUENCE [CREATE - SEQUENCE] alter sequence test_seq_ owner to regression_bob; -NOTICE: snitch: command_start ALTER SEQUENCE [ALTER - ] -NOTICE: snitch: command_start ALTER SEQUENCE [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER SEQUENCE [ALTER - TABLE] +NOTICE: snitch: ddl_command_start ALTER SEQUENCE [ALTER - TABLE] alter sequence test_seq_ rename to test_seq; -NOTICE: snitch: command_start ALTER SEQUENCE [ALTER - SEQUENCE] -NOTICE: snitch: command_start ALTER SEQUENCE [ALTER - SEQUENCE] +NOTICE: snitch: ddl_command_start ALTER SEQUENCE [ALTER - SEQUENCE] +NOTICE: snitch: ddl_command_start ALTER SEQUENCE [ALTER - SEQUENCE] alter sequence test_seq set schema cmd; -NOTICE: snitch: command_start ALTER SEQUENCE [ALTER - SEQUENCE] -NOTICE: snitch: command_start ALTER SEQUENCE [ALTER - SEQUENCE] +NOTICE: snitch: ddl_command_start ALTER SEQUENCE [ALTER - SEQUENCE] +NOTICE: snitch: ddl_command_start ALTER SEQUENCE [ALTER - SEQUENCE] alter sequence cmd.test_seq start with 3; -NOTICE: snitch: command_start ALTER SEQUENCE [ALTER - ] -NOTICE: snitch: command_start ALTER SEQUENCE [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER SEQUENCE [ALTER - SEQUENCE] +NOTICE: snitch: ddl_command_start ALTER SEQUENCE [ALTER - SEQUENCE] alter sequence cmd.test_seq restart with 4; -NOTICE: snitch: command_start ALTER SEQUENCE [ALTER - ] -NOTICE: snitch: command_start ALTER SEQUENCE [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER SEQUENCE [ALTER - SEQUENCE] +NOTICE: snitch: ddl_command_start ALTER SEQUENCE [ALTER - SEQUENCE] alter sequence cmd.test_seq minvalue 3; -NOTICE: snitch: command_start ALTER SEQUENCE [ALTER - ] -NOTICE: snitch: command_start ALTER SEQUENCE [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER SEQUENCE [ALTER - SEQUENCE] +NOTICE: snitch: ddl_command_start ALTER SEQUENCE [ALTER - SEQUENCE] alter sequence cmd.test_seq no minvalue; -NOTICE: snitch: command_start ALTER SEQUENCE [ALTER - ] -NOTICE: snitch: command_start ALTER SEQUENCE [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER SEQUENCE [ALTER - SEQUENCE] +NOTICE: snitch: ddl_command_start ALTER SEQUENCE [ALTER - SEQUENCE] alter sequence cmd.test_seq maxvalue 900000; -NOTICE: snitch: command_start ALTER SEQUENCE [ALTER - ] -NOTICE: snitch: command_start ALTER SEQUENCE [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER SEQUENCE [ALTER - SEQUENCE] +NOTICE: snitch: ddl_command_start ALTER SEQUENCE [ALTER - SEQUENCE] alter sequence cmd.test_seq no maxvalue; -NOTICE: snitch: command_start ALTER SEQUENCE [ALTER - ] -NOTICE: snitch: command_start ALTER SEQUENCE [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER SEQUENCE [ALTER - SEQUENCE] +NOTICE: snitch: ddl_command_start ALTER SEQUENCE [ALTER - SEQUENCE] alter sequence cmd.test_seq cache 876; -NOTICE: snitch: command_start ALTER SEQUENCE [ALTER - ] -NOTICE: snitch: command_start ALTER SEQUENCE [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER SEQUENCE [ALTER - SEQUENCE] +NOTICE: snitch: ddl_command_start ALTER SEQUENCE [ALTER - SEQUENCE] alter sequence cmd.test_seq cycle; -NOTICE: snitch: command_start ALTER SEQUENCE [ALTER - ] -NOTICE: snitch: command_start ALTER SEQUENCE [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER SEQUENCE [ALTER - SEQUENCE] +NOTICE: snitch: ddl_command_start ALTER SEQUENCE [ALTER - SEQUENCE] alter sequence cmd.test_seq no cycle; -NOTICE: snitch: command_start ALTER SEQUENCE [ALTER - ] -NOTICE: snitch: command_start ALTER SEQUENCE [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER SEQUENCE [ALTER - SEQUENCE] +NOTICE: snitch: ddl_command_start ALTER SEQUENCE [ALTER - SEQUENCE] create view view_test as select id, things from cmd.test; -NOTICE: snitch: command_start CREATE VIEW [CREATE - ] -NOTICE: snitch: command_start CREATE VIEW [CREATE - ] +NOTICE: snitch: ddl_command_start CREATE VIEW [CREATE - VIEW] +NOTICE: snitch: ddl_command_start CREATE VIEW [CREATE - VIEW] alter view view_test owner to regression_bob; -NOTICE: snitch: command_start ALTER VIEW [ALTER - ] -NOTICE: snitch: command_start ALTER VIEW [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER VIEW [ALTER - TABLE] +NOTICE: snitch: ddl_command_start ALTER VIEW [ALTER - TABLE] alter view view_test rename to view_test2; -NOTICE: snitch: command_start ALTER VIEW [ALTER - VIEW] -NOTICE: snitch: command_start ALTER VIEW [ALTER - VIEW] +NOTICE: snitch: ddl_command_start ALTER VIEW [ALTER - VIEW] +NOTICE: snitch: ddl_command_start ALTER VIEW [ALTER - VIEW] alter view view_test2 set schema cmd; -NOTICE: snitch: command_start ALTER VIEW [ALTER - VIEW] -NOTICE: snitch: command_start ALTER VIEW [ALTER - VIEW] +NOTICE: snitch: ddl_command_start ALTER VIEW [ALTER - VIEW] +NOTICE: snitch: ddl_command_start ALTER VIEW [ALTER - VIEW] alter view cmd.view_test2 alter column id set default 9; -NOTICE: snitch: command_start ALTER VIEW [ALTER - ] -NOTICE: snitch: command_start ALTER VIEW [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER VIEW [ALTER - TABLE] +NOTICE: snitch: ddl_command_start ALTER VIEW [ALTER - TABLE] alter view cmd.view_test2 alter column id drop default; -NOTICE: snitch: command_start ALTER VIEW [ALTER - ] -NOTICE: snitch: command_start ALTER VIEW [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER VIEW [ALTER - TABLE] +NOTICE: snitch: ddl_command_start ALTER VIEW [ALTER - TABLE] cluster cmd.foo using foo_pkey; -NOTICE: snitch: command_start CLUSTER [ - ] vacuum cmd.foo; -NOTICE: snitch: command_start VACUUM [ - ] -NOTICE: snitch: command_start VACUUM [ - ] vacuum; -NOTICE: snitch: command_start VACUUM [ - ] -NOTICE: snitch: command_start VACUUM [ - ] reindex table cmd.foo; -NOTICE: snitch: command_start REINDEX [ - ] -NOTICE: snitch: command_start REINDEX [ - ] set session_replication_role to replica; create table cmd.bar(); -NOTICE: snitch: command_start CREATE TABLE [CREATE - ] -NOTICE: snitch: command_start CREATE TABLE [CREATE - ] +NOTICE: snitch: ddl_command_start CREATE TABLE [CREATE - TABLE] +NOTICE: snitch: ddl_command_start CREATE TABLE [CREATE - TABLE] reset session_replication_role; create index idx_foo on cmd.foo(t); -NOTICE: snitch: command_start CREATE INDEX [CREATE - ] +NOTICE: snitch: ddl_command_start CREATE INDEX [CREATE - INDEX] reindex index cmd.idx_foo; -NOTICE: snitch: command_start REINDEX [ - ] -NOTICE: snitch: command_start REINDEX [ - ] drop index cmd.idx_foo; -NOTICE: snitch: command_start DROP INDEX [DROP - INDEX] +NOTICE: snitch: ddl_command_start DROP INDEX [DROP - INDEX] create function fun(int) returns text language sql as $$ select t from cmd.foo where id = $1; $$; -NOTICE: snitch: command_start CREATE FUNCTION [CREATE - ] -NOTICE: snitch: command_start CREATE FUNCTION [CREATE - ] +NOTICE: snitch: ddl_command_start CREATE FUNCTION [CREATE - FUNCTION] +NOTICE: snitch: ddl_command_start CREATE FUNCTION [CREATE - FUNCTION] alter function fun(int) strict; -NOTICE: snitch: command_start ALTER FUNCTION [ALTER - ] -NOTICE: snitch: command_start ALTER FUNCTION [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER FUNCTION [ALTER - FUNCTION] +NOTICE: snitch: ddl_command_start ALTER FUNCTION [ALTER - FUNCTION] alter function fun(int) rename to notfun; -NOTICE: snitch: command_start ALTER FUNCTION [ALTER - FUNCTION] -NOTICE: snitch: command_start ALTER FUNCTION [ALTER - FUNCTION] +NOTICE: snitch: ddl_command_start ALTER FUNCTION [ALTER - FUNCTION] +NOTICE: snitch: ddl_command_start ALTER FUNCTION [ALTER - FUNCTION] alter function notfun(int) set schema cmd; -NOTICE: snitch: command_start ALTER FUNCTION [ALTER - FUNCTION] -NOTICE: snitch: command_start ALTER FUNCTION [ALTER - FUNCTION] +NOTICE: snitch: ddl_command_start ALTER FUNCTION [ALTER - FUNCTION] +NOTICE: snitch: ddl_command_start ALTER FUNCTION [ALTER - FUNCTION] alter function cmd.notfun(int) owner to regression_bob; -NOTICE: snitch: command_start ALTER FUNCTION [ALTER - FUNCTION] -NOTICE: snitch: command_start ALTER FUNCTION [ALTER - FUNCTION] +NOTICE: snitch: ddl_command_start ALTER FUNCTION [ALTER - FUNCTION] +NOTICE: snitch: ddl_command_start ALTER FUNCTION [ALTER - FUNCTION] alter function cmd.notfun(int) cost 77; -NOTICE: snitch: command_start ALTER FUNCTION [ALTER - ] -NOTICE: snitch: command_start ALTER FUNCTION [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER FUNCTION [ALTER - FUNCTION] +NOTICE: snitch: ddl_command_start ALTER FUNCTION [ALTER - FUNCTION] drop function cmd.notfun(int); -NOTICE: snitch: command_start DROP FUNCTION [DROP - FUNCTION] +NOTICE: snitch: ddl_command_start DROP FUNCTION [DROP - FUNCTION] create function cmd.plus1(int) returns bigint language sql as $$ select $1::bigint + 1; $$; -NOTICE: snitch: command_start CREATE FUNCTION [CREATE - ] -NOTICE: snitch: command_start CREATE FUNCTION [CREATE - ] +NOTICE: snitch: ddl_command_start CREATE FUNCTION [CREATE - FUNCTION] +NOTICE: snitch: ddl_command_start CREATE FUNCTION [CREATE - FUNCTION] create operator cmd.+!(procedure = cmd.plus1, leftarg = int); -NOTICE: snitch: command_start CREATE OPERATOR [CREATE - OPERATOR] -NOTICE: snitch: command_start CREATE OPERATOR [CREATE - OPERATOR] +NOTICE: snitch: ddl_command_start CREATE OPERATOR [CREATE - OPERATOR] +NOTICE: snitch: ddl_command_start CREATE OPERATOR [CREATE - OPERATOR] alter operator cmd.+!(int, NONE) set schema public; -NOTICE: snitch: command_start ALTER OPERATOR [ALTER - OPERATOR] -NOTICE: snitch: command_start ALTER OPERATOR [ALTER - OPERATOR] +NOTICE: snitch: ddl_command_start ALTER OPERATOR [ALTER - OPERATOR] +NOTICE: snitch: ddl_command_start ALTER OPERATOR [ALTER - OPERATOR] drop operator public.+!(int, NONE); -NOTICE: snitch: command_start DROP OPERATOR [DROP - OPERATOR] +NOTICE: snitch: ddl_command_start DROP OPERATOR [DROP - OPERATOR] create aggregate cmd.avg (float8) ( sfunc = float8_accum, @@ -276,130 +267,130 @@ create aggregate cmd.avg (float8) finalfunc = float8_avg, initcond = '{0,0,0}' ); -NOTICE: snitch: command_start CREATE AGGREGATE [CREATE - AGGREGATE] -NOTICE: snitch: command_start CREATE AGGREGATE [CREATE - AGGREGATE] +NOTICE: snitch: ddl_command_start CREATE AGGREGATE [CREATE - AGGREGATE] +NOTICE: snitch: ddl_command_start CREATE AGGREGATE [CREATE - AGGREGATE] alter aggregate cmd.avg(float8) set schema public; -NOTICE: snitch: command_start ALTER AGGREGATE [ALTER - AGGREGATE] +NOTICE: snitch: ddl_command_start ALTER AGGREGATE [ALTER - AGGREGATE] drop aggregate public.avg(float8); -NOTICE: snitch: command_start DROP AGGREGATE [DROP - AGGREGATE] -NOTICE: snitch: command_start DROP AGGREGATE [DROP - AGGREGATE] +NOTICE: snitch: ddl_command_start DROP AGGREGATE [DROP - AGGREGATE] +NOTICE: snitch: ddl_command_start DROP AGGREGATE [DROP - AGGREGATE] create collation cmd.french (LOCALE = 'fr_FR'); -NOTICE: snitch: command_start CREATE COLLATION [CREATE - COLLATION] -NOTICE: snitch: command_start CREATE COLLATION [CREATE - COLLATION] +NOTICE: snitch: ddl_command_start CREATE COLLATION [CREATE - COLLATION] +NOTICE: snitch: ddl_command_start CREATE COLLATION [CREATE - COLLATION] alter collation cmd.french rename to francais; -NOTICE: snitch: command_start ALTER COLLATION [ALTER - COLLATION] -NOTICE: snitch: command_start ALTER COLLATION [ALTER - COLLATION] +NOTICE: snitch: ddl_command_start ALTER COLLATION [ALTER - COLLATION] +NOTICE: snitch: ddl_command_start ALTER COLLATION [ALTER - COLLATION] create type cmd.compfoo AS (f1 int, f2 text); -NOTICE: snitch: command_start CREATE TYPE [CREATE - ] -NOTICE: snitch: command_start CREATE TYPE [CREATE - ] +NOTICE: snitch: ddl_command_start CREATE TYPE [CREATE - TYPE] +NOTICE: snitch: ddl_command_start CREATE TYPE [CREATE - TYPE] alter type cmd.compfoo add attribute f3 text; -NOTICE: snitch: command_start ALTER TYPE [ALTER - ] -NOTICE: snitch: command_start ALTER TYPE [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER TYPE [ALTER - TABLE] +NOTICE: snitch: ddl_command_start ALTER TYPE [ALTER - TABLE] create type cmd.type_test AS (a integer, b integer, c text); -NOTICE: snitch: command_start CREATE TYPE [CREATE - ] -NOTICE: snitch: command_start CREATE TYPE [CREATE - ] +NOTICE: snitch: ddl_command_start CREATE TYPE [CREATE - TYPE] +NOTICE: snitch: ddl_command_start CREATE TYPE [CREATE - TYPE] alter type cmd.type_test owner to regression_bob; -NOTICE: snitch: command_start ALTER TYPE [ALTER - TYPE] -NOTICE: snitch: command_start ALTER TYPE [ALTER - TYPE] +NOTICE: snitch: ddl_command_start ALTER TYPE [ALTER - TYPE] +NOTICE: snitch: ddl_command_start ALTER TYPE [ALTER - TYPE] alter type cmd.type_test rename to type_test2; -NOTICE: snitch: command_start ALTER TYPE [ALTER - TYPE] -NOTICE: snitch: command_start ALTER TYPE [ALTER - TYPE] +NOTICE: snitch: ddl_command_start ALTER TYPE [ALTER - TYPE] +NOTICE: snitch: ddl_command_start ALTER TYPE [ALTER - TYPE] alter type cmd.type_test2 set schema public; -NOTICE: snitch: command_start ALTER TYPE [ALTER - TYPE] -NOTICE: snitch: command_start ALTER TYPE [ALTER - TYPE] +NOTICE: snitch: ddl_command_start ALTER TYPE [ALTER - TYPE] +NOTICE: snitch: ddl_command_start ALTER TYPE [ALTER - TYPE] alter type public.type_test2 rename attribute a to z; -NOTICE: snitch: command_start ALTER TYPE [ALTER - ATTRIBUTE] -NOTICE: snitch: command_start ALTER TYPE [ALTER - ATTRIBUTE] +NOTICE: snitch: ddl_command_start ALTER TYPE [ALTER - ATTRIBUTE] +NOTICE: snitch: ddl_command_start ALTER TYPE [ALTER - ATTRIBUTE] alter type public.type_test2 add attribute alpha text; -NOTICE: snitch: command_start ALTER TYPE [ALTER - ] -NOTICE: snitch: command_start ALTER TYPE [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER TYPE [ALTER - TABLE] +NOTICE: snitch: ddl_command_start ALTER TYPE [ALTER - TABLE] alter type public.type_test2 alter attribute alpha set data type char(90); -NOTICE: snitch: command_start ALTER TYPE [ALTER - ] -NOTICE: snitch: command_start ALTER TYPE [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER TYPE [ALTER - TABLE] +NOTICE: snitch: ddl_command_start ALTER TYPE [ALTER - TABLE] alter type public.type_test2 drop attribute alpha; -NOTICE: snitch: command_start ALTER TYPE [ALTER - ] -NOTICE: snitch: command_start ALTER TYPE [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER TYPE [ALTER - TABLE] +NOTICE: snitch: ddl_command_start ALTER TYPE [ALTER - TABLE] drop type cmd.compfoo; -NOTICE: snitch: command_start DROP TYPE [DROP - TYPE] +NOTICE: snitch: ddl_command_start DROP TYPE [DROP - TYPE] drop type public.type_test2; -NOTICE: snitch: command_start DROP TYPE [DROP - TYPE] +NOTICE: snitch: ddl_command_start DROP TYPE [DROP - TYPE] create type cmd.bug_status as enum ('new', 'open', 'closed'); -NOTICE: snitch: command_start CREATE TYPE [CREATE - ] -NOTICE: snitch: command_start CREATE TYPE [CREATE - ] +NOTICE: snitch: ddl_command_start CREATE TYPE [CREATE - TYPE] +NOTICE: snitch: ddl_command_start CREATE TYPE [CREATE - TYPE] alter type cmd.bug_status add value 'wontfix'; -NOTICE: snitch: command_start ALTER TYPE [ALTER - ] -NOTICE: snitch: command_start ALTER TYPE [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER TYPE [ALTER - TYPE] +NOTICE: snitch: ddl_command_start ALTER TYPE [ALTER - TYPE] create domain cmd.us_postal_code as text check(value ~ '^\d{5}$' or value ~ '^\d{5}-\d{4}$'); -NOTICE: snitch: command_start CREATE DOMAIN [CREATE - ] -NOTICE: snitch: command_start CREATE DOMAIN [CREATE - ] +NOTICE: snitch: ddl_command_start CREATE DOMAIN [CREATE - DOMAIN] +NOTICE: snitch: ddl_command_start CREATE DOMAIN [CREATE - DOMAIN] alter domain cmd.us_postal_code set not null; -NOTICE: snitch: command_start ALTER DOMAIN [ALTER - ] -NOTICE: snitch: command_start ALTER DOMAIN [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER DOMAIN [ALTER - DOMAIN] +NOTICE: snitch: ddl_command_start ALTER DOMAIN [ALTER - DOMAIN] alter domain cmd.us_postal_code set default 90210; -NOTICE: snitch: command_start ALTER DOMAIN [ALTER - ] -NOTICE: snitch: command_start ALTER DOMAIN [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER DOMAIN [ALTER - DOMAIN] +NOTICE: snitch: ddl_command_start ALTER DOMAIN [ALTER - DOMAIN] alter domain cmd.us_postal_code drop default; -NOTICE: snitch: command_start ALTER DOMAIN [ALTER - ] -NOTICE: snitch: command_start ALTER DOMAIN [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER DOMAIN [ALTER - DOMAIN] +NOTICE: snitch: ddl_command_start ALTER DOMAIN [ALTER - DOMAIN] alter domain cmd.us_postal_code drop not null; -NOTICE: snitch: command_start ALTER DOMAIN [ALTER - ] -NOTICE: snitch: command_start ALTER DOMAIN [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER DOMAIN [ALTER - DOMAIN] +NOTICE: snitch: ddl_command_start ALTER DOMAIN [ALTER - DOMAIN] alter domain cmd.us_postal_code add constraint dummy_constraint check (value ~ '^\d{8}$'); -NOTICE: snitch: command_start ALTER DOMAIN [ALTER - ] -NOTICE: snitch: command_start ALTER DOMAIN [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER DOMAIN [ALTER - DOMAIN] +NOTICE: snitch: ddl_command_start ALTER DOMAIN [ALTER - DOMAIN] alter domain cmd.us_postal_code drop constraint dummy_constraint; -NOTICE: snitch: command_start ALTER DOMAIN [ALTER - ] -NOTICE: snitch: command_start ALTER DOMAIN [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER DOMAIN [ALTER - DOMAIN] +NOTICE: snitch: ddl_command_start ALTER DOMAIN [ALTER - DOMAIN] alter domain cmd.us_postal_code owner to regression_bob; -NOTICE: snitch: command_start ALTER DOMAIN [ALTER - DOMAIN] -NOTICE: snitch: command_start ALTER DOMAIN [ALTER - DOMAIN] +NOTICE: snitch: ddl_command_start ALTER DOMAIN [ALTER - DOMAIN] +NOTICE: snitch: ddl_command_start ALTER DOMAIN [ALTER - DOMAIN] alter domain cmd.us_postal_code set schema cmd2; -NOTICE: snitch: command_start ALTER DOMAIN [ALTER - DOMAIN] -NOTICE: snitch: command_start ALTER DOMAIN [ALTER - DOMAIN] +NOTICE: snitch: ddl_command_start ALTER DOMAIN [ALTER - DOMAIN] +NOTICE: snitch: ddl_command_start ALTER DOMAIN [ALTER - DOMAIN] drop domain cmd2.us_postal_code; -NOTICE: snitch: command_start DROP DOMAIN [DROP - DOMAIN] -NOTICE: snitch: command_start DROP DOMAIN [DROP - DOMAIN] +NOTICE: snitch: ddl_command_start DROP DOMAIN [DROP - DOMAIN] +NOTICE: snitch: ddl_command_start DROP DOMAIN [DROP - DOMAIN] create function cmd.trigfunc() returns trigger language plpgsql as $$ begin raise notice 'trigfunc'; end;$$; -NOTICE: snitch: command_start CREATE FUNCTION [CREATE - ] -NOTICE: snitch: command_start CREATE FUNCTION [CREATE - ] +NOTICE: snitch: ddl_command_start CREATE FUNCTION [CREATE - FUNCTION] +NOTICE: snitch: ddl_command_start CREATE FUNCTION [CREATE - FUNCTION] create trigger footg before update on cmd.foo for each row execute procedure cmd.trigfunc(); -NOTICE: snitch: command_start CREATE TRIGGER [CREATE - ] -NOTICE: snitch: command_start CREATE TRIGGER [CREATE - ] +NOTICE: snitch: ddl_command_start CREATE TRIGGER [CREATE - TRIGGER] +NOTICE: snitch: ddl_command_start CREATE TRIGGER [CREATE - TRIGGER] alter trigger footg on cmd.foo rename to foo_trigger; -NOTICE: snitch: command_start ALTER TRIGGER [ALTER - TRIGGER] -NOTICE: snitch: command_start ALTER TRIGGER [ALTER - TRIGGER] +NOTICE: snitch: ddl_command_start ALTER TRIGGER [ALTER - TRIGGER] +NOTICE: snitch: ddl_command_start ALTER TRIGGER [ALTER - TRIGGER] drop trigger foo_trigger on cmd.foo; -NOTICE: snitch: command_start DROP TRIGGER [DROP - TRIGGER] -NOTICE: snitch: command_start DROP TRIGGER [DROP - TRIGGER] +NOTICE: snitch: ddl_command_start DROP TRIGGER [DROP - TRIGGER] +NOTICE: snitch: ddl_command_start DROP TRIGGER [DROP - TRIGGER] create conversion test for 'utf8' to 'sjis' from utf8_to_sjis; -NOTICE: snitch: command_start CREATE CONVERSION [CREATE - ] +NOTICE: snitch: ddl_command_start CREATE CONVERSION [CREATE - CONVERSION] create default conversion test2 for 'utf8' to 'sjis' from utf8_to_sjis; -NOTICE: snitch: command_start CREATE CONVERSION [CREATE - ] +NOTICE: snitch: ddl_command_start CREATE CONVERSION [CREATE - CONVERSION] alter conversion test2 rename to test3; -NOTICE: snitch: command_start ALTER CONVERSION [ALTER - CONVERSION] -NOTICE: snitch: command_start ALTER CONVERSION [ALTER - CONVERSION] +NOTICE: snitch: ddl_command_start ALTER CONVERSION [ALTER - CONVERSION] +NOTICE: snitch: ddl_command_start ALTER CONVERSION [ALTER - CONVERSION] drop conversion test3; -NOTICE: snitch: command_start DROP CONVERSION [DROP - CONVERSION] +NOTICE: snitch: ddl_command_start DROP CONVERSION [DROP - CONVERSION] drop conversion test; -NOTICE: snitch: command_start DROP CONVERSION [DROP - CONVERSION] +NOTICE: snitch: ddl_command_start DROP CONVERSION [DROP - CONVERSION] create operator class test_op_class for type anyenum using hash as operator 1 =, function 1 hashenum(anyenum); -NOTICE: snitch: command_start CREATE OPERATOR CLASS [CREATE - ] -NOTICE: snitch: command_start CREATE OPERATOR CLASS [CREATE - ] +NOTICE: snitch: ddl_command_start CREATE OPERATOR CLASS [CREATE - OPERATOR CLASS] +NOTICE: snitch: ddl_command_start CREATE OPERATOR CLASS [CREATE - OPERATOR CLASS] create text search configuration test (parser = "default"); -NOTICE: snitch: command_start CREATE TEXT SEARCH CONFIGURATION [CREATE - TEXT SEARCH CONFIGURATION] -NOTICE: snitch: command_start CREATE TEXT SEARCH CONFIGURATION [CREATE - TEXT SEARCH CONFIGURATION] +NOTICE: snitch: ddl_command_start CREATE TEXT SEARCH CONFIGURATION [CREATE - TEXT SEARCH CONFIGURATION] +NOTICE: snitch: ddl_command_start CREATE TEXT SEARCH CONFIGURATION [CREATE - TEXT SEARCH CONFIGURATION] create text search dictionary test_stem ( template = snowball, language = 'english', stopwords = 'english' ); -NOTICE: snitch: command_start CREATE TEXT SEARCH DICTIONARY [CREATE - TEXT SEARCH DICTIONARY] -NOTICE: snitch: command_start CREATE TEXT SEARCH DICTIONARY [CREATE - TEXT SEARCH DICTIONARY] +NOTICE: snitch: ddl_command_start CREATE TEXT SEARCH DICTIONARY [CREATE - TEXT SEARCH DICTIONARY] +NOTICE: snitch: ddl_command_start CREATE TEXT SEARCH DICTIONARY [CREATE - TEXT SEARCH DICTIONARY] alter text search dictionary test_stem (StopWords = dutch ); -NOTICE: snitch: command_start ALTER TEXT SEARCH DICTIONARY [ALTER - ] +NOTICE: snitch: ddl_command_start ALTER TEXT SEARCH DICTIONARY [ALTER - TEXT SEARCH DICTIONARY] create text search parser test_parser ( start = prsd_start, gettoken = prsd_nexttoken, @@ -407,38 +398,38 @@ create text search parser test_parser ( lextypes = prsd_lextype, headline = prsd_headline ); -NOTICE: snitch: command_start CREATE TEXT SEARCH PARSER [CREATE - TEXT SEARCH PARSER] -NOTICE: snitch: command_start CREATE TEXT SEARCH PARSER [CREATE - TEXT SEARCH PARSER] +NOTICE: snitch: ddl_command_start CREATE TEXT SEARCH PARSER [CREATE - TEXT SEARCH PARSER] +NOTICE: snitch: ddl_command_start CREATE TEXT SEARCH PARSER [CREATE - TEXT SEARCH PARSER] create text search template test_template ( init = dsimple_init, lexize = dsimple_lexize ); -NOTICE: snitch: command_start CREATE TEXT SEARCH TEMPLATE [CREATE - TEXT SEARCH TEMPLATE] -NOTICE: snitch: command_start CREATE TEXT SEARCH TEMPLATE [CREATE - TEXT SEARCH TEMPLATE] +NOTICE: snitch: ddl_command_start CREATE TEXT SEARCH TEMPLATE [CREATE - TEXT SEARCH TEMPLATE] +NOTICE: snitch: ddl_command_start CREATE TEXT SEARCH TEMPLATE [CREATE - TEXT SEARCH TEMPLATE] drop text search configuration test; -NOTICE: snitch: command_start DROP TEXT SEARCH CONFIGURATION [DROP - TEXT SEARCH CONFIGURATION] -NOTICE: snitch: command_start DROP TEXT SEARCH CONFIGURATION [DROP - TEXT SEARCH CONFIGURATION] +NOTICE: snitch: ddl_command_start DROP TEXT SEARCH CONFIGURATION [DROP - TEXT SEARCH CONFIGURATION] +NOTICE: snitch: ddl_command_start DROP TEXT SEARCH CONFIGURATION [DROP - TEXT SEARCH CONFIGURATION] drop text search dictionary test_stem; -NOTICE: snitch: command_start DROP TEXT SEARCH DICTIONARY [DROP - TEXT SEARCH DICTIONARY] -NOTICE: snitch: command_start DROP TEXT SEARCH DICTIONARY [DROP - TEXT SEARCH DICTIONARY] +NOTICE: snitch: ddl_command_start DROP TEXT SEARCH DICTIONARY [DROP - TEXT SEARCH DICTIONARY] +NOTICE: snitch: ddl_command_start DROP TEXT SEARCH DICTIONARY [DROP - TEXT SEARCH DICTIONARY] drop text search parser test_parser; -NOTICE: snitch: command_start DROP TEXT SEARCH PARSER [DROP - TEXT SEARCH PARSER] -NOTICE: snitch: command_start DROP TEXT SEARCH PARSER [DROP - TEXT SEARCH PARSER] +NOTICE: snitch: ddl_command_start DROP TEXT SEARCH PARSER [DROP - TEXT SEARCH PARSER] +NOTICE: snitch: ddl_command_start DROP TEXT SEARCH PARSER [DROP - TEXT SEARCH PARSER] drop text search template test_template; -NOTICE: snitch: command_start DROP TEXT SEARCH TEMPLATE [DROP - TEXT SEARCH TEMPLATE] -NOTICE: snitch: command_start DROP TEXT SEARCH TEMPLATE [DROP - TEXT SEARCH TEMPLATE] +NOTICE: snitch: ddl_command_start DROP TEXT SEARCH TEMPLATE [DROP - TEXT SEARCH TEMPLATE] +NOTICE: snitch: ddl_command_start DROP TEXT SEARCH TEMPLATE [DROP - TEXT SEARCH TEMPLATE] create function cmd.testcast(text) returns int4 language plpgsql as $$begin return 4::int4;end;$$; -NOTICE: snitch: command_start CREATE FUNCTION [CREATE - ] -NOTICE: snitch: command_start CREATE FUNCTION [CREATE - ] +NOTICE: snitch: ddl_command_start CREATE FUNCTION [CREATE - FUNCTION] +NOTICE: snitch: ddl_command_start CREATE FUNCTION [CREATE - FUNCTION] create cast (text as int4) with function cmd.testcast(text) as assignment; -NOTICE: snitch: command_start CREATE CAST [CREATE - ] -NOTICE: snitch: command_start CREATE CAST [CREATE - ] +NOTICE: snitch: ddl_command_start CREATE CAST [CREATE - CAST] +NOTICE: snitch: ddl_command_start CREATE CAST [CREATE - CAST] alter schema cmd rename to cmd1; -NOTICE: snitch: command_start ALTER SCHEMA [ALTER - SCHEMA] -NOTICE: snitch: command_start ALTER SCHEMA [ALTER - SCHEMA] +NOTICE: snitch: ddl_command_start ALTER SCHEMA [ALTER - SCHEMA] +NOTICE: snitch: ddl_command_start ALTER SCHEMA [ALTER - SCHEMA] drop schema cmd1 cascade; -NOTICE: snitch: command_start DROP SCHEMA [DROP - SCHEMA] -NOTICE: snitch: command_start DROP SCHEMA [DROP - SCHEMA] +NOTICE: snitch: ddl_command_start DROP SCHEMA [DROP - SCHEMA] +NOTICE: snitch: ddl_command_start DROP SCHEMA [DROP - SCHEMA] NOTICE: drop cascades to 12 other objects DETAIL: drop cascades to table cmd1.foo drop cascades to view cmd1.v @@ -453,8 +444,8 @@ drop cascades to function cmd1.trigfunc() drop cascades to function cmd1.testcast(text) drop cascades to cast from text to integer drop schema cmd2 cascade; -NOTICE: snitch: command_start DROP SCHEMA [DROP - SCHEMA] -NOTICE: snitch: command_start DROP SCHEMA [DROP - SCHEMA] +NOTICE: snitch: ddl_command_start DROP SCHEMA [DROP - SCHEMA] +NOTICE: snitch: ddl_command_start DROP SCHEMA [DROP - SCHEMA] -- fail because owning event trigger snitch drop role regression_bob; ERROR: role "regression_bob" cannot be dropped because some objects depend on it @@ -485,10 +476,12 @@ begin raise notice 'check_one_row: %', c; end; $$; -create event trigger a_insert_one_row on command_start +create event trigger a_insert_one_row + on ddl_command_start when tag in ('alter table') execute procedure insert_one_row(); -create event trigger b_check_one_row on command_start +create event trigger b_check_one_row + on ddl_command_start when tag in ('alter table') execute procedure check_one_row(); alter table onerow alter column id type bigint; diff --git a/src/test/regress/sql/event_triggers.sql b/src/test/regress/sql/event_triggers.sql index 9ca1a28..d3436b3 100644 --- a/src/test/regress/sql/event_triggers.sql +++ b/src/test/regress/sql/event_triggers.sql @@ -11,10 +11,12 @@ begin end; $$; -create event trigger any_t on command_start +create event trigger any_t + on ddl_command_start execute procedure snitch(); -create event trigger foo_t on command_start +create event trigger foo_t + on ddl_command_start when tag in ('alter collation', 'alter conversion', 'alter domain', @@ -53,9 +55,7 @@ create event trigger foo_t on command_start 'drop text search parser', 'drop text search template', 'drop trigger', - 'reindex', - 'select into', - 'vacuum') + 'select into') execute procedure snitch(); alter event trigger foo_t disable; @@ -277,11 +277,13 @@ begin end; $$; -create event trigger a_insert_one_row on command_start +create event trigger a_insert_one_row + on ddl_command_start when tag in ('alter table') execute procedure insert_one_row(); -create event trigger b_check_one_row on command_start +create event trigger b_check_one_row + on ddl_command_start when tag in ('alter table') execute procedure check_one_row();