ProcessUtilitySlow主要用于处理event triggers支持的语句,所以执行真正处理函数之前都需要执行event triggers支持相关的调用。如果传入参数不为PROCESS_UTILITY_SUBCOMMAND,就需要执行event triggers支持相关的调用。
event triggers支持相关的调用流程如下所示,后续博客讲解。
真正处理的情况
T_CreateSchemaStmt
T_CreateStmt
T_CreateForeignTableStmt
T_AlterTableStmt
T_AlterDomainStmt
T_DefineStmt
T_IndexStmt
T_CreateExtensionStmt
T_AlterExtensionStmt
T_AlterExtensionContentsStmt
T_CreateFdwStmt
T_AlterFdwStmt
T_CreateForeignServerStmt
T_AlterForeignServerStmt
T_CreateUserMappingStmt
T_AlterUserMappingStmt
T_DropUserMappingStmt
T_ImportForeignSchemaStmt
T_CompositeTypeStmt
T_CreateEnumStmt
T_CreateRangeStmt
T_AlterEnumStmt: /* ALTER TYPE (enum) /
T_ViewStmt: / CREATE VIEW /
T_CreateFunctionStmt / CREATE FUNCTION /
T_AlterFunctionStmt / ALTER FUNCTION /
T_RuleStmt / CREATE RULE /
T_CreateSeqStmt
T_AlterSeqStmt
T_CreateTableAsStmt
T_RefreshMatViewStmt
T_CreateTrigStmt
T_CreatePLangStmt
T_CreateDomainStmt
T_CreateConversionStmt
T_CreateCastStmt
T_CreateOpClassStmt
T_CreateOpFamilyStmt
T_CreateTransformStmt
T_AlterOpFamilyStmt
T_AlterTSDictionaryStmt
T_AlterTSConfigurationStmt
T_AlterTableMoveAllStmt
T_DropStmt:
T_RenameStmt
T_AlterObjectDependsStmt
T_AlterObjectSchemaStmt
T_AlterOwnerStmt
T_AlterOperatorStmt
T_CommentStmt
T_GrantStmt
T_DropOwnedStmt
T_AlterDefaultPrivilegesStmt
T_CreatePolicyStmt / CREATE POLICY /
T_AlterPolicyStmt / ALTER POLICY */
T_SecLabelStmt
T_CreateAmStmt
T_CreatePublicationStmt
T_AlterPublicationStmt
T_CreateSubscriptionStmt
T_AlterSubscriptionStmt
T_DropSubscriptionStmt
T_CreateStatsStmt
T_AlterCollationStmt