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