77 const char *queryString,
133 case T_AlterCollationStmt:
134 case T_AlterDatabaseRefreshCollStmt:
135 case T_AlterDatabaseSetStmt:
136 case T_AlterDatabaseStmt:
137 case T_AlterDefaultPrivilegesStmt:
138 case T_AlterDomainStmt:
139 case T_AlterEnumStmt:
140 case T_AlterEventTrigStmt:
141 case T_AlterExtensionContentsStmt:
142 case T_AlterExtensionStmt:
144 case T_AlterForeignServerStmt:
145 case T_AlterFunctionStmt:
146 case T_AlterObjectDependsStmt:
147 case T_AlterObjectSchemaStmt:
148 case T_AlterOpFamilyStmt:
149 case T_AlterOperatorStmt:
150 case T_AlterOwnerStmt:
151 case T_AlterPolicyStmt:
152 case T_AlterPublicationStmt:
153 case T_AlterRoleSetStmt:
154 case T_AlterRoleStmt:
156 case T_AlterStatsStmt:
157 case T_AlterSubscriptionStmt:
158 case T_AlterTSConfigurationStmt:
159 case T_AlterTSDictionaryStmt:
160 case T_AlterTableMoveAllStmt:
161 case T_AlterTableSpaceOptionsStmt:
162 case T_AlterTableStmt:
163 case T_AlterTypeStmt:
164 case T_AlterUserMappingStmt:
166 case T_CompositeTypeStmt:
168 case T_CreateCastStmt:
169 case T_CreateConversionStmt:
170 case T_CreateDomainStmt:
171 case T_CreateEnumStmt:
172 case T_CreateEventTrigStmt:
173 case T_CreateExtensionStmt:
174 case T_CreateFdwStmt:
175 case T_CreateForeignServerStmt:
176 case T_CreateForeignTableStmt:
177 case T_CreateFunctionStmt:
178 case T_CreateOpClassStmt:
179 case T_CreateOpFamilyStmt:
180 case T_CreatePLangStmt:
181 case T_CreatePolicyStmt:
182 case T_CreatePublicationStmt:
183 case T_CreateRangeStmt:
184 case T_CreateRoleStmt:
185 case T_CreateSchemaStmt:
186 case T_CreateSeqStmt:
187 case T_CreateStatsStmt:
189 case T_CreateSubscriptionStmt:
190 case T_CreateTableAsStmt:
191 case T_CreateTableSpaceStmt:
192 case T_CreateTransformStmt:
193 case T_CreateTrigStmt:
194 case T_CreateUserMappingStmt:
197 case T_DropOwnedStmt:
200 case T_DropSubscriptionStmt:
201 case T_DropTableSpaceStmt:
202 case T_DropUserMappingStmt:
204 case T_GrantRoleStmt:
206 case T_ImportForeignSchemaStmt:
208 case T_ReassignOwnedStmt:
209 case T_RefreshMatViewStmt:
220 case T_AlterSystemStmt:
247 case T_CheckPointStmt:
259 case T_ClosePortalStmt:
260 case T_ConstraintsSetStmt:
261 case T_DeallocateStmt:
262 case T_DeclareCursorStmt:
269 case T_VariableSetStmt:
318 case T_VariableShowStmt:
358 case T_TransactionStmt:
387 elog(
ERROR,
"unrecognized TransactionStmtKind: %d",
393 elog(
ERROR,
"unrecognized node type: %d",
410 (
errcode(ERRCODE_READ_ONLY_SQL_TRANSACTION),
412 errmsg(
"cannot execute %s in a read-only transaction",
428 (
errcode(ERRCODE_INVALID_TRANSACTION_STATE),
430 errmsg(
"cannot execute %s during a parallel operation",
447 (
errcode(ERRCODE_READ_ONLY_SQL_TRANSACTION),
449 errmsg(
"cannot execute %s during recovery",
465 (
errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
467 errmsg(
"cannot execute %s within security-restricted operation",
502 const char *queryString,
512 Assert(queryString != NULL);
521 (*ProcessUtility_hook) (pstmt, queryString, readOnlyTree,
522 context, params, queryEnv,
526 context, params, queryEnv,
546 const char *queryString,
599 case T_TransactionStmt:
615 foreach(lc,
stmt->options)
619 if (strcmp(item->
defname,
"transaction_isolation") == 0)
623 else if (strcmp(item->
defname,
"transaction_read_only") == 0)
627 else if (strcmp(item->
defname,
"transaction_deferrable") == 0)
693 case T_DeclareCursorStmt:
698 case T_ClosePortalStmt:
715 case T_CreateTableSpaceStmt:
721 case T_DropTableSpaceStmt:
727 case T_AlterTableSpaceOptionsStmt:
761 case T_DeallocateStmt:
766 case T_GrantRoleStmt:
777 case T_AlterDatabaseStmt:
782 case T_AlterDatabaseRefreshCollStmt:
787 case T_AlterDatabaseSetStmt:
824 (
errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
826 errmsg(
"cannot execute %s within a background process",
838 if (
stmt->conditionname)
871 case T_AlterSystemStmt:
876 case T_VariableSetStmt:
880 case T_VariableShowStmt:
894 case T_CreateEventTrigStmt:
899 case T_AlterEventTrigStmt:
907 case T_CreateRoleStmt:
912 case T_AlterRoleStmt:
917 case T_AlterRoleSetStmt:
927 case T_ReassignOwnedStmt:
942 case T_ConstraintsSetStmt:
947 case T_CheckPointStmt:
962 context, params, queryEnv,
975 context, params, queryEnv,
988 context, params, queryEnv,
995 case T_AlterObjectDependsStmt:
1001 context, params, queryEnv,
1008 case T_AlterObjectSchemaStmt:
1014 context, params, queryEnv,
1021 case T_AlterOwnerStmt:
1027 context, params, queryEnv,
1040 context, params, queryEnv,
1047 case T_SecLabelStmt:
1053 context, params, queryEnv,
1069 context, params, queryEnv,
1092 const char *queryString,
1103 bool commandCollected =
false;
1113 if (isCompleteQuery)
1121 case T_CreateSchemaStmt:
1131 commandCollected =
true;
1135 case T_CreateForeignTableStmt:
1149 while (stmts !=
NIL)
1158 Datum toast_options;
1205 RELKIND_FOREIGN_TABLE,
1225 Assert(table_rv != NULL);
1266 commandCollected =
true;
1270 case T_AlterTableStmt:
1282 foreach(cell, atstmt->
cmds)
1291 "ALTER TABLE ... DETACH CONCURRENTLY");
1309 atcontext.
pstmt = pstmt;
1311 atcontext.
relid = relid;
1312 atcontext.
params = params;
1327 (
errmsg(
"relation \"%s\" does not exist, skipping",
1332 commandCollected =
true;
1335 case T_AlterDomainStmt:
1343 switch (
stmt->subtype)
1384 elog(
ERROR,
"unrecognized alter domain type: %d",
1385 (
int)
stmt->subtype);
1444 stmt->if_not_exists);
1447 elog(
ERROR,
"unrecognized define stmt type: %d",
1460 bool is_alter_table;
1462 if (
stmt->concurrent)
1464 "CREATE INDEX CONCURRENTLY");
1494 if (
stmt->relation->inh &&
1501 foreach(lc, inheritors)
1506 if (relkind != RELKIND_RELATION &&
1507 relkind != RELKIND_MATVIEW &&
1508 relkind != RELKIND_PARTITIONED_TABLE &&
1509 relkind != RELKIND_FOREIGN_TABLE)
1510 elog(
ERROR,
"unexpected relkind \"%c\" on partition \"%s\"",
1511 relkind,
stmt->relation->relname);
1513 if (relkind == RELKIND_FOREIGN_TABLE &&
1516 (
errcode(ERRCODE_WRONG_OBJECT_TYPE),
1517 errmsg(
"cannot create unique index on partitioned table \"%s\"",
1518 stmt->relation->relname),
1519 errdetail(
"Table \"%s\" contains partitions that are foreign tables.",
1520 stmt->relation->relname)));
1536 is_alter_table =
stmt->transformed;
1564 commandCollected =
true;
1573 commandCollected =
true;
1576 case T_CreateExtensionStmt:
1580 case T_AlterExtensionStmt:
1584 case T_AlterExtensionContentsStmt:
1589 case T_CreateFdwStmt:
1593 case T_AlterFdwStmt:
1597 case T_CreateForeignServerStmt:
1601 case T_AlterForeignServerStmt:
1605 case T_CreateUserMappingStmt:
1609 case T_AlterUserMappingStmt:
1613 case T_DropUserMappingStmt:
1616 commandCollected =
true;
1619 case T_ImportForeignSchemaStmt:
1622 commandCollected =
true;
1625 case T_CompositeTypeStmt:
1634 case T_CreateEnumStmt:
1638 case T_CreateRangeStmt:
1642 case T_AlterEnumStmt:
1653 commandCollected =
true;
1657 case T_CreateFunctionStmt:
1661 case T_AlterFunctionStmt:
1669 case T_CreateSeqStmt:
1673 case T_AlterSeqStmt:
1677 case T_CreateTableAsStmt:
1679 params, queryEnv, qc);
1682 case T_RefreshMatViewStmt:
1703 case T_CreateTrigStmt:
1710 case T_CreatePLangStmt:
1714 case T_CreateDomainStmt:
1718 case T_CreateConversionStmt:
1722 case T_CreateCastStmt:
1726 case T_CreateOpClassStmt:
1729 commandCollected =
true;
1732 case T_CreateOpFamilyStmt:
1739 commandCollected =
true;
1742 case T_CreateTransformStmt:
1746 case T_AlterOpFamilyStmt:
1749 commandCollected =
true;
1752 case T_AlterTSDictionaryStmt:
1756 case T_AlterTSConfigurationStmt:
1764 commandCollected =
true;
1767 case T_AlterTableMoveAllStmt:
1770 commandCollected =
true;
1776 commandCollected =
true;
1783 case T_AlterObjectDependsStmt:
1789 case T_AlterObjectSchemaStmt:
1795 case T_AlterOwnerStmt:
1799 case T_AlterOperatorStmt:
1803 case T_AlterTypeStmt:
1814 commandCollected =
true;
1817 case T_DropOwnedStmt:
1820 commandCollected =
true;
1823 case T_AlterDefaultPrivilegesStmt:
1826 commandCollected =
true;
1829 case T_CreatePolicyStmt:
1833 case T_AlterPolicyStmt:
1837 case T_SecLabelStmt:
1841 case T_CreateAmStmt:
1845 case T_CreatePublicationStmt:
1849 case T_AlterPublicationStmt:
1856 commandCollected =
true;
1859 case T_CreateSubscriptionStmt:
1865 case T_AlterSubscriptionStmt:
1871 case T_DropSubscriptionStmt:
1874 commandCollected =
true;
1877 case T_CreateStatsStmt:
1885 (
errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
1886 errmsg(
"CREATE STATISTICS only supports relation names in the FROM clause")));
1908 case T_AlterStatsStmt:
1912 case T_AlterCollationStmt:
1917 elog(
ERROR,
"unrecognized node type: %d",
1926 if (!commandCollected)
1930 if (isCompleteQuery)
1998 switch (
stmt->removeType)
2001 if (
stmt->concurrent)
2003 "DROP INDEX CONCURRENTLY");
2037 return (
stmt->funcexpr->funcresulttype == RECORDOID);
2068 case T_VariableShowStmt:
2122 case T_VariableShowStmt:
2144QueryReturnsTuples(
Query *parsetree)
2192 case T_DeclareCursorStmt:
2204 case T_CreateTableAsStmt:
2230 tag = CMDTAG_ALTER_AGGREGATE;
2233 tag = CMDTAG_ALTER_TYPE;
2236 tag = CMDTAG_ALTER_CAST;
2239 tag = CMDTAG_ALTER_COLLATION;
2242 tag = CMDTAG_ALTER_TABLE;
2245 tag = CMDTAG_ALTER_CONVERSION;
2248 tag = CMDTAG_ALTER_DATABASE;
2252 tag = CMDTAG_ALTER_DOMAIN;
2255 tag = CMDTAG_ALTER_EXTENSION;
2258 tag = CMDTAG_ALTER_FOREIGN_DATA_WRAPPER;
2261 tag = CMDTAG_ALTER_SERVER;
2264 tag = CMDTAG_ALTER_FOREIGN_TABLE;
2267 tag = CMDTAG_ALTER_FUNCTION;
2270 tag = CMDTAG_ALTER_INDEX;
2273 tag = CMDTAG_ALTER_LANGUAGE;
2276 tag = CMDTAG_ALTER_LARGE_OBJECT;
2279 tag = CMDTAG_ALTER_OPERATOR_CLASS;
2282 tag = CMDTAG_ALTER_OPERATOR;
2285 tag = CMDTAG_ALTER_OPERATOR_FAMILY;
2288 tag = CMDTAG_ALTER_POLICY;
2291 tag = CMDTAG_ALTER_PROCEDURE;
2294 tag = CMDTAG_ALTER_ROLE;
2297 tag = CMDTAG_ALTER_ROUTINE;
2300 tag = CMDTAG_ALTER_RULE;
2303 tag = CMDTAG_ALTER_SCHEMA;
2306 tag = CMDTAG_ALTER_SEQUENCE;
2310 tag = CMDTAG_ALTER_TABLE;
2313 tag = CMDTAG_ALTER_TABLESPACE;
2316 tag = CMDTAG_ALTER_TRIGGER;
2319 tag = CMDTAG_ALTER_EVENT_TRIGGER;
2322 tag = CMDTAG_ALTER_TEXT_SEARCH_CONFIGURATION;
2325 tag = CMDTAG_ALTER_TEXT_SEARCH_DICTIONARY;
2328 tag = CMDTAG_ALTER_TEXT_SEARCH_PARSER;
2331 tag = CMDTAG_ALTER_TEXT_SEARCH_TEMPLATE;
2334 tag = CMDTAG_ALTER_TYPE;
2337 tag = CMDTAG_ALTER_VIEW;
2340 tag = CMDTAG_ALTER_MATERIALIZED_VIEW;
2343 tag = CMDTAG_ALTER_PUBLICATION;
2346 tag = CMDTAG_ALTER_SUBSCRIPTION;
2349 tag = CMDTAG_ALTER_STATISTICS;
2352 tag = CMDTAG_UNKNOWN;
2382 tag = CMDTAG_INSERT;
2386 tag = CMDTAG_DELETE;
2390 tag = CMDTAG_UPDATE;
2398 tag = CMDTAG_SELECT;
2401 case T_PLAssignStmt:
2402 tag = CMDTAG_SELECT;
2406 case T_TransactionStmt:
2417 tag = CMDTAG_START_TRANSACTION;
2421 tag = CMDTAG_COMMIT;
2426 tag = CMDTAG_ROLLBACK;
2430 tag = CMDTAG_SAVEPOINT;
2434 tag = CMDTAG_RELEASE;
2438 tag = CMDTAG_PREPARE_TRANSACTION;
2442 tag = CMDTAG_COMMIT_PREPARED;
2446 tag = CMDTAG_ROLLBACK_PREPARED;
2450 tag = CMDTAG_UNKNOWN;
2456 case T_DeclareCursorStmt:
2457 tag = CMDTAG_DECLARE_CURSOR;
2460 case T_ClosePortalStmt:
2464 if (
stmt->portalname == NULL)
2465 tag = CMDTAG_CLOSE_CURSOR_ALL;
2467 tag = CMDTAG_CLOSE_CURSOR;
2475 tag = (
stmt->ismove) ? CMDTAG_MOVE : CMDTAG_FETCH;
2479 case T_CreateDomainStmt:
2480 tag = CMDTAG_CREATE_DOMAIN;
2483 case T_CreateSchemaStmt:
2484 tag = CMDTAG_CREATE_SCHEMA;
2488 tag = CMDTAG_CREATE_TABLE;
2491 case T_CreateTableSpaceStmt:
2492 tag = CMDTAG_CREATE_TABLESPACE;
2495 case T_DropTableSpaceStmt:
2496 tag = CMDTAG_DROP_TABLESPACE;
2499 case T_AlterTableSpaceOptionsStmt:
2500 tag = CMDTAG_ALTER_TABLESPACE;
2503 case T_CreateExtensionStmt:
2504 tag = CMDTAG_CREATE_EXTENSION;
2507 case T_AlterExtensionStmt:
2508 tag = CMDTAG_ALTER_EXTENSION;
2511 case T_AlterExtensionContentsStmt:
2512 tag = CMDTAG_ALTER_EXTENSION;
2515 case T_CreateFdwStmt:
2516 tag = CMDTAG_CREATE_FOREIGN_DATA_WRAPPER;
2519 case T_AlterFdwStmt:
2520 tag = CMDTAG_ALTER_FOREIGN_DATA_WRAPPER;
2523 case T_CreateForeignServerStmt:
2524 tag = CMDTAG_CREATE_SERVER;
2527 case T_AlterForeignServerStmt:
2528 tag = CMDTAG_ALTER_SERVER;
2531 case T_CreateUserMappingStmt:
2532 tag = CMDTAG_CREATE_USER_MAPPING;
2535 case T_AlterUserMappingStmt:
2536 tag = CMDTAG_ALTER_USER_MAPPING;
2539 case T_DropUserMappingStmt:
2540 tag = CMDTAG_DROP_USER_MAPPING;
2543 case T_CreateForeignTableStmt:
2544 tag = CMDTAG_CREATE_FOREIGN_TABLE;
2547 case T_ImportForeignSchemaStmt:
2548 tag = CMDTAG_IMPORT_FOREIGN_SCHEMA;
2552 switch (((
DropStmt *) parsetree)->removeType)
2555 tag = CMDTAG_DROP_TABLE;
2558 tag = CMDTAG_DROP_SEQUENCE;
2561 tag = CMDTAG_DROP_VIEW;
2564 tag = CMDTAG_DROP_MATERIALIZED_VIEW;
2567 tag = CMDTAG_DROP_INDEX;
2570 tag = CMDTAG_DROP_TYPE;
2573 tag = CMDTAG_DROP_DOMAIN;
2576 tag = CMDTAG_DROP_COLLATION;
2579 tag = CMDTAG_DROP_CONVERSION;
2582 tag = CMDTAG_DROP_SCHEMA;
2585 tag = CMDTAG_DROP_TEXT_SEARCH_PARSER;
2588 tag = CMDTAG_DROP_TEXT_SEARCH_DICTIONARY;
2591 tag = CMDTAG_DROP_TEXT_SEARCH_TEMPLATE;
2594 tag = CMDTAG_DROP_TEXT_SEARCH_CONFIGURATION;
2597 tag = CMDTAG_DROP_FOREIGN_TABLE;
2600 tag = CMDTAG_DROP_EXTENSION;
2603 tag = CMDTAG_DROP_FUNCTION;
2606 tag = CMDTAG_DROP_PROCEDURE;
2609 tag = CMDTAG_DROP_ROUTINE;
2612 tag = CMDTAG_DROP_AGGREGATE;
2615 tag = CMDTAG_DROP_OPERATOR;
2618 tag = CMDTAG_DROP_LANGUAGE;
2621 tag = CMDTAG_DROP_CAST;
2624 tag = CMDTAG_DROP_TRIGGER;
2627 tag = CMDTAG_DROP_EVENT_TRIGGER;
2630 tag = CMDTAG_DROP_RULE;
2633 tag = CMDTAG_DROP_FOREIGN_DATA_WRAPPER;
2636 tag = CMDTAG_DROP_SERVER;
2639 tag = CMDTAG_DROP_OPERATOR_CLASS;
2642 tag = CMDTAG_DROP_OPERATOR_FAMILY;
2645 tag = CMDTAG_DROP_POLICY;
2648 tag = CMDTAG_DROP_TRANSFORM;
2651 tag = CMDTAG_DROP_ACCESS_METHOD;
2654 tag = CMDTAG_DROP_PUBLICATION;
2657 tag = CMDTAG_DROP_STATISTICS;
2660 tag = CMDTAG_UNKNOWN;
2664 case T_TruncateStmt:
2665 tag = CMDTAG_TRUNCATE_TABLE;
2669 tag = CMDTAG_COMMENT;
2672 case T_SecLabelStmt:
2673 tag = CMDTAG_SECURITY_LABEL;
2691 case T_AlterObjectDependsStmt:
2695 case T_AlterObjectSchemaStmt:
2699 case T_AlterOwnerStmt:
2703 case T_AlterTableMoveAllStmt:
2707 case T_AlterTableStmt:
2711 case T_AlterDomainStmt:
2712 tag = CMDTAG_ALTER_DOMAIN;
2715 case T_AlterFunctionStmt:
2719 tag = CMDTAG_ALTER_FUNCTION;
2722 tag = CMDTAG_ALTER_PROCEDURE;
2725 tag = CMDTAG_ALTER_ROUTINE;
2728 tag = CMDTAG_UNKNOWN;
2736 tag = (
stmt->is_grant) ? CMDTAG_GRANT : CMDTAG_REVOKE;
2740 case T_GrantRoleStmt:
2744 tag = (
stmt->is_grant) ? CMDTAG_GRANT_ROLE : CMDTAG_REVOKE_ROLE;
2748 case T_AlterDefaultPrivilegesStmt:
2749 tag = CMDTAG_ALTER_DEFAULT_PRIVILEGES;
2756 tag = CMDTAG_CREATE_AGGREGATE;
2759 tag = CMDTAG_CREATE_OPERATOR;
2762 tag = CMDTAG_CREATE_TYPE;
2765 tag = CMDTAG_CREATE_TEXT_SEARCH_PARSER;
2768 tag = CMDTAG_CREATE_TEXT_SEARCH_DICTIONARY;
2771 tag = CMDTAG_CREATE_TEXT_SEARCH_TEMPLATE;
2774 tag = CMDTAG_CREATE_TEXT_SEARCH_CONFIGURATION;
2777 tag = CMDTAG_CREATE_COLLATION;
2780 tag = CMDTAG_CREATE_ACCESS_METHOD;
2783 tag = CMDTAG_UNKNOWN;
2787 case T_CompositeTypeStmt:
2788 tag = CMDTAG_CREATE_TYPE;
2791 case T_CreateEnumStmt:
2792 tag = CMDTAG_CREATE_TYPE;
2795 case T_CreateRangeStmt:
2796 tag = CMDTAG_CREATE_TYPE;
2799 case T_AlterEnumStmt:
2800 tag = CMDTAG_ALTER_TYPE;
2804 tag = CMDTAG_CREATE_VIEW;
2807 case T_CreateFunctionStmt:
2809 tag = CMDTAG_CREATE_PROCEDURE;
2811 tag = CMDTAG_CREATE_FUNCTION;
2815 tag = CMDTAG_CREATE_INDEX;
2819 tag = CMDTAG_CREATE_RULE;
2822 case T_CreateSeqStmt:
2823 tag = CMDTAG_CREATE_SEQUENCE;
2826 case T_AlterSeqStmt:
2827 tag = CMDTAG_ALTER_SEQUENCE;
2834 case T_CreatedbStmt:
2835 tag = CMDTAG_CREATE_DATABASE;
2838 case T_AlterDatabaseStmt:
2839 case T_AlterDatabaseRefreshCollStmt:
2840 case T_AlterDatabaseSetStmt:
2841 tag = CMDTAG_ALTER_DATABASE;
2845 tag = CMDTAG_DROP_DATABASE;
2849 tag = CMDTAG_NOTIFY;
2853 tag = CMDTAG_LISTEN;
2856 case T_UnlistenStmt:
2857 tag = CMDTAG_UNLISTEN;
2869 tag = CMDTAG_CLUSTER;
2873 if (((
VacuumStmt *) parsetree)->is_vacuumcmd)
2874 tag = CMDTAG_VACUUM;
2876 tag = CMDTAG_ANALYZE;
2880 tag = CMDTAG_EXPLAIN;
2883 case T_CreateTableAsStmt:
2888 tag = CMDTAG_SELECT_INTO;
2890 tag = CMDTAG_CREATE_TABLE_AS;
2893 tag = CMDTAG_CREATE_MATERIALIZED_VIEW;
2896 tag = CMDTAG_UNKNOWN;
2900 case T_RefreshMatViewStmt:
2901 tag = CMDTAG_REFRESH_MATERIALIZED_VIEW;
2904 case T_AlterSystemStmt:
2905 tag = CMDTAG_ALTER_SYSTEM;
2908 case T_VariableSetStmt:
2922 tag = CMDTAG_UNKNOWN;
2926 case T_VariableShowStmt:
2934 tag = CMDTAG_DISCARD_ALL;
2937 tag = CMDTAG_DISCARD_PLANS;
2940 tag = CMDTAG_DISCARD_TEMP;
2943 tag = CMDTAG_DISCARD_SEQUENCES;
2946 tag = CMDTAG_UNKNOWN;
2950 case T_CreateTransformStmt:
2951 tag = CMDTAG_CREATE_TRANSFORM;
2954 case T_CreateTrigStmt:
2955 tag = CMDTAG_CREATE_TRIGGER;
2958 case T_CreateEventTrigStmt:
2959 tag = CMDTAG_CREATE_EVENT_TRIGGER;
2962 case T_AlterEventTrigStmt:
2963 tag = CMDTAG_ALTER_EVENT_TRIGGER;
2966 case T_CreatePLangStmt:
2967 tag = CMDTAG_CREATE_LANGUAGE;
2970 case T_CreateRoleStmt:
2971 tag = CMDTAG_CREATE_ROLE;
2974 case T_AlterRoleStmt:
2975 tag = CMDTAG_ALTER_ROLE;
2978 case T_AlterRoleSetStmt:
2979 tag = CMDTAG_ALTER_ROLE;
2982 case T_DropRoleStmt:
2983 tag = CMDTAG_DROP_ROLE;
2986 case T_DropOwnedStmt:
2987 tag = CMDTAG_DROP_OWNED;
2990 case T_ReassignOwnedStmt:
2991 tag = CMDTAG_REASSIGN_OWNED;
2995 tag = CMDTAG_LOCK_TABLE;
2998 case T_ConstraintsSetStmt:
2999 tag = CMDTAG_SET_CONSTRAINTS;
3002 case T_CheckPointStmt:
3003 tag = CMDTAG_CHECKPOINT;
3007 tag = CMDTAG_REINDEX;
3010 case T_CreateConversionStmt:
3011 tag = CMDTAG_CREATE_CONVERSION;
3014 case T_CreateCastStmt:
3015 tag = CMDTAG_CREATE_CAST;
3018 case T_CreateOpClassStmt:
3019 tag = CMDTAG_CREATE_OPERATOR_CLASS;
3022 case T_CreateOpFamilyStmt:
3023 tag = CMDTAG_CREATE_OPERATOR_FAMILY;
3026 case T_AlterOpFamilyStmt:
3027 tag = CMDTAG_ALTER_OPERATOR_FAMILY;
3030 case T_AlterOperatorStmt:
3031 tag = CMDTAG_ALTER_OPERATOR;
3034 case T_AlterTypeStmt:
3035 tag = CMDTAG_ALTER_TYPE;
3038 case T_AlterTSDictionaryStmt:
3039 tag = CMDTAG_ALTER_TEXT_SEARCH_DICTIONARY;
3042 case T_AlterTSConfigurationStmt:
3043 tag = CMDTAG_ALTER_TEXT_SEARCH_CONFIGURATION;
3046 case T_CreatePolicyStmt:
3047 tag = CMDTAG_CREATE_POLICY;
3050 case T_AlterPolicyStmt:
3051 tag = CMDTAG_ALTER_POLICY;
3054 case T_CreateAmStmt:
3055 tag = CMDTAG_CREATE_ACCESS_METHOD;
3058 case T_CreatePublicationStmt:
3059 tag = CMDTAG_CREATE_PUBLICATION;
3062 case T_AlterPublicationStmt:
3063 tag = CMDTAG_ALTER_PUBLICATION;
3066 case T_CreateSubscriptionStmt:
3067 tag = CMDTAG_CREATE_SUBSCRIPTION;
3070 case T_AlterSubscriptionStmt:
3071 tag = CMDTAG_ALTER_SUBSCRIPTION;
3074 case T_DropSubscriptionStmt:
3075 tag = CMDTAG_DROP_SUBSCRIPTION;
3078 case T_AlterCollationStmt:
3079 tag = CMDTAG_ALTER_COLLATION;
3083 tag = CMDTAG_PREPARE;
3087 tag = CMDTAG_EXECUTE;
3090 case T_CreateStatsStmt:
3091 tag = CMDTAG_CREATE_STATISTICS;
3094 case T_AlterStatsStmt:
3095 tag = CMDTAG_ALTER_STATISTICS;
3098 case T_DeallocateStmt:
3102 if (
stmt->name == NULL)
3103 tag = CMDTAG_DEALLOCATE_ALL;
3105 tag = CMDTAG_DEALLOCATE;
3118 switch (
stmt->commandType)
3133 tag = CMDTAG_SELECT_FOR_KEY_SHARE;
3136 tag = CMDTAG_SELECT_FOR_SHARE;
3139 tag = CMDTAG_SELECT_FOR_NO_KEY_UPDATE;
3142 tag = CMDTAG_SELECT_FOR_UPDATE;
3145 tag = CMDTAG_SELECT;
3150 tag = CMDTAG_SELECT;
3153 tag = CMDTAG_UPDATE;
3156 tag = CMDTAG_INSERT;
3159 tag = CMDTAG_DELETE;
3169 (
int)
stmt->commandType);
3170 tag = CMDTAG_UNKNOWN;
3181 switch (
stmt->commandType)
3196 tag = CMDTAG_SELECT_FOR_KEY_SHARE;
3199 tag = CMDTAG_SELECT_FOR_SHARE;
3202 tag = CMDTAG_SELECT_FOR_NO_KEY_UPDATE;
3205 tag = CMDTAG_SELECT_FOR_UPDATE;
3208 tag = CMDTAG_UNKNOWN;
3213 tag = CMDTAG_SELECT;
3216 tag = CMDTAG_UPDATE;
3219 tag = CMDTAG_INSERT;
3222 tag = CMDTAG_DELETE;
3232 (
int)
stmt->commandType);
3233 tag = CMDTAG_UNKNOWN;
3242 tag = CMDTAG_UNKNOWN;
3286 case T_PLAssignStmt:
3291 case T_TransactionStmt:
3295 case T_DeclareCursorStmt:
3299 case T_ClosePortalStmt:
3307 case T_CreateSchemaStmt:
3312 case T_CreateForeignTableStmt:
3316 case T_CreateTableSpaceStmt:
3317 case T_DropTableSpaceStmt:
3318 case T_AlterTableSpaceOptionsStmt:
3322 case T_CreateExtensionStmt:
3323 case T_AlterExtensionStmt:
3324 case T_AlterExtensionContentsStmt:
3328 case T_CreateFdwStmt:
3329 case T_AlterFdwStmt:
3330 case T_CreateForeignServerStmt:
3331 case T_AlterForeignServerStmt:
3332 case T_CreateUserMappingStmt:
3333 case T_AlterUserMappingStmt:
3334 case T_DropUserMappingStmt:
3335 case T_ImportForeignSchemaStmt:
3343 case T_TruncateStmt:
3351 case T_SecLabelStmt:
3356 if (((
CopyStmt *) parsetree)->is_from)
3378 if (
ps &&
ps->plansource->raw_parse_tree)
3385 case T_DeallocateStmt:
3393 case T_AlterObjectDependsStmt:
3397 case T_AlterObjectSchemaStmt:
3401 case T_AlterOwnerStmt:
3405 case T_AlterOperatorStmt:
3409 case T_AlterTypeStmt:
3413 case T_AlterTableMoveAllStmt:
3414 case T_AlterTableStmt:
3418 case T_AlterDomainStmt:
3426 case T_GrantRoleStmt:
3430 case T_AlterDefaultPrivilegesStmt:
3438 case T_CompositeTypeStmt:
3442 case T_CreateEnumStmt:
3446 case T_CreateRangeStmt:
3450 case T_AlterEnumStmt:
3458 case T_CreateFunctionStmt:
3462 case T_AlterFunctionStmt:
3474 case T_CreateSeqStmt:
3478 case T_AlterSeqStmt:
3486 case T_CreatedbStmt:
3490 case T_AlterDatabaseStmt:
3491 case T_AlterDatabaseRefreshCollStmt:
3492 case T_AlterDatabaseSetStmt:
3508 case T_UnlistenStmt:
3535 foreach(lc,
stmt->options)
3539 if (strcmp(opt->
defname,
"analyze") == 0)
3551 case T_CreateTableAsStmt:
3555 case T_RefreshMatViewStmt:
3559 case T_AlterSystemStmt:
3563 case T_VariableSetStmt:
3567 case T_VariableShowStmt:
3575 case T_CreateTrigStmt:
3579 case T_CreateEventTrigStmt:
3583 case T_AlterEventTrigStmt:
3587 case T_CreatePLangStmt:
3591 case T_CreateDomainStmt:
3595 case T_CreateRoleStmt:
3599 case T_AlterRoleStmt:
3603 case T_AlterRoleSetStmt:
3607 case T_DropRoleStmt:
3611 case T_DropOwnedStmt:
3615 case T_ReassignOwnedStmt:
3623 case T_ConstraintsSetStmt:
3627 case T_CheckPointStmt:
3635 case T_CreateConversionStmt:
3639 case T_CreateCastStmt:
3643 case T_CreateOpClassStmt:
3647 case T_CreateOpFamilyStmt:
3651 case T_CreateTransformStmt:
3655 case T_AlterOpFamilyStmt:
3659 case T_CreatePolicyStmt:
3663 case T_AlterPolicyStmt:
3667 case T_AlterTSDictionaryStmt:
3671 case T_AlterTSConfigurationStmt:
3675 case T_CreateAmStmt:
3679 case T_CreatePublicationStmt:
3683 case T_AlterPublicationStmt:
3687 case T_CreateSubscriptionStmt:
3691 case T_AlterSubscriptionStmt:
3695 case T_DropSubscriptionStmt:
3699 case T_CreateStatsStmt:
3703 case T_AlterStatsStmt:
3707 case T_AlterCollationStmt:
3720 switch (
stmt->commandType)
3739 (
int)
stmt->commandType);
3751 switch (
stmt->commandType)
3770 (
int)
stmt->commandType);
void ExecuteGrantStmt(GrantStmt *stmt)
void ExecAlterDefaultPrivilegesStmt(ParseState *pstate, AlterDefaultPrivilegesStmt *stmt)
ObjectAddress DefineAggregate(ParseState *pstate, List *name, List *args, bool oldstyle, List *parameters, bool replace)
ObjectAddress ExecAlterOwnerStmt(AlterOwnerStmt *stmt)
ObjectAddress ExecAlterObjectDependsStmt(AlterObjectDependsStmt *stmt, ObjectAddress *refAddress)
ObjectAddress ExecRenameStmt(RenameStmt *stmt)
ObjectAddress ExecAlterObjectSchemaStmt(AlterObjectSchemaStmt *stmt, ObjectAddress *oldSchemaAddr)
ObjectAddress CreateAccessMethod(CreateAmStmt *stmt)
void Async_UnlistenAll(void)
void Async_Unlisten(const char *channel)
void Async_Listen(const char *channel)
void Async_Notify(const char *channel, const char *payload)
void DoCopy(ParseState *pstate, const CopyStmt *stmt, int stmt_location, int stmt_len, uint64 *processed)
void PrepareQuery(ParseState *pstate, PrepareStmt *stmt, int stmt_location, int stmt_len)
TupleDesc FetchPreparedStatementResultDesc(PreparedStatement *stmt)
PreparedStatement * FetchPreparedStatement(const char *stmt_name, bool throwError)
void ExecuteQuery(ParseState *pstate, ExecuteStmt *stmt, IntoClause *intoClause, ParamListInfo params, DestReceiver *dest, QueryCompletion *qc)
void DeallocateQuery(DeallocateStmt *stmt)
Oid AlterTableSpaceOptions(AlterTableSpaceOptionsStmt *stmt)
void DropTableSpace(DropTableSpaceStmt *stmt)
Oid CreateTableSpace(CreateTableSpaceStmt *stmt)
#define OidIsValid(objectId)
void ExecCheckpoint(ParseState *pstate, CheckPointStmt *stmt)
void cluster(ParseState *pstate, ClusterStmt *stmt, bool isTopLevel)
const char * GetCommandTagName(CommandTag commandTag)
static void SetQueryCompletion(QueryCompletion *qc, CommandTag commandTag, uint64 nprocessed)
ObjectAddress AlterCollation(AlterCollationStmt *stmt)
ObjectAddress DefineCollation(ParseState *pstate, List *names, List *parameters, bool if_not_exists)
ObjectAddress DefineSequence(ParseState *pstate, CreateSeqStmt *seq)
ObjectAddress AlterSequence(ParseState *pstate, AlterSeqStmt *stmt)
ObjectAddress CreateConversionCommand(CreateConversionStmt *stmt)
ObjectAddress ExecCreateTableAs(ParseState *pstate, CreateTableAsStmt *stmt, ParamListInfo params, QueryEnvironment *queryEnv, QueryCompletion *qc)
ObjectAddress AlterDatabaseRefreshColl(AlterDatabaseRefreshCollStmt *stmt)
Oid createdb(ParseState *pstate, const CreatedbStmt *stmt)
Oid AlterDatabase(ParseState *pstate, AlterDatabaseStmt *stmt, bool isTopLevel)
void DropDatabase(ParseState *pstate, DropdbStmt *stmt)
Oid AlterDatabaseSet(AlterDatabaseSetStmt *stmt)
bool defGetBoolean(DefElem *def)
DestReceiver * None_Receiver
void load_file(const char *filename, bool restricted)
void DiscardCommand(DiscardStmt *stmt, bool isTopLevel)
void RemoveObjects(DropStmt *stmt)
int errdetail(const char *fmt,...)
int errcode(int sqlerrcode)
int errmsg(const char *fmt,...)
#define ereport(elevel,...)
void EventTriggerUndoInhibitCommandCollection(void)
void EventTriggerAlterTableStart(Node *parsetree)
void EventTriggerCollectAlterDefPrivs(AlterDefaultPrivilegesStmt *stmt)
void EventTriggerDDLCommandStart(Node *parsetree)
void EventTriggerInhibitCommandCollection(void)
bool EventTriggerBeginCompleteQuery(void)
bool EventTriggerSupportsObjectType(ObjectType obtype)
Oid CreateEventTrigger(CreateEventTrigStmt *stmt)
Oid AlterEventTrigger(AlterEventTrigStmt *stmt)
void EventTriggerSQLDrop(Node *parsetree)
void EventTriggerEndCompleteQuery(void)
void EventTriggerAlterTableRelid(Oid objectId)
void EventTriggerAlterTableEnd(void)
void EventTriggerCollectSimpleCommand(ObjectAddress address, ObjectAddress secondaryObject, Node *parsetree)
void EventTriggerDDLCommandEnd(Node *parsetree)
void ExplainQuery(ParseState *pstate, ExplainStmt *stmt, ParamListInfo params, DestReceiver *dest)
TupleDesc ExplainResultDesc(ExplainStmt *stmt)
ObjectAddress CreateExtension(ParseState *pstate, CreateExtensionStmt *stmt)
ObjectAddress ExecAlterExtensionStmt(ParseState *pstate, AlterExtensionStmt *stmt)
ObjectAddress ExecAlterExtensionContentsStmt(AlterExtensionContentsStmt *stmt, ObjectAddress *objAddr)
void ImportForeignSchema(ImportForeignSchemaStmt *stmt)
ObjectAddress AlterForeignServer(AlterForeignServerStmt *stmt)
ObjectAddress AlterForeignDataWrapper(ParseState *pstate, AlterFdwStmt *stmt)
ObjectAddress CreateForeignServer(CreateForeignServerStmt *stmt)
Oid RemoveUserMapping(DropUserMappingStmt *stmt)
ObjectAddress CreateForeignDataWrapper(ParseState *pstate, CreateFdwStmt *stmt)
ObjectAddress AlterUserMapping(AlterUserMappingStmt *stmt)
void CreateForeignTable(CreateForeignTableStmt *stmt, Oid relid)
ObjectAddress CreateUserMapping(CreateUserMappingStmt *stmt)
void ExecuteCallStmt(CallStmt *stmt, ParamListInfo params, bool atomic, DestReceiver *dest)
ObjectAddress CreateCast(CreateCastStmt *stmt)
ObjectAddress CreateFunction(ParseState *pstate, CreateFunctionStmt *stmt)
ObjectAddress AlterFunction(ParseState *pstate, AlterFunctionStmt *stmt)
TupleDesc CallStmtResultDesc(CallStmt *stmt)
void ExecuteDoStmt(ParseState *pstate, DoStmt *stmt, bool atomic)
ObjectAddress CreateTransform(CreateTransformStmt *stmt)
void AlterSystemSetConfigFile(AlterSystemStmt *altersysstmt)
void GetPGVariable(const char *name, DestReceiver *dest)
TupleDesc GetPGVariableResultDesc(const char *name)
void SetPGVariable(const char *name, List *args, bool is_local)
void ExecSetVariableStmt(VariableSetStmt *stmt, bool isTopLevel)
Assert(PointerIsAligned(start, uint64))
void ExecReindex(ParseState *pstate, const ReindexStmt *stmt, bool isTopLevel)
ObjectAddress DefineIndex(ParseState *pstate, Oid tableId, IndexStmt *stmt, Oid indexRelationId, Oid parentIndexId, Oid parentConstraintId, int total_parts, bool is_alter_table, bool check_rights, bool check_not_in_use, bool skip_build, bool quiet)
List * list_delete_first(List *list)
List * list_concat(List *list1, const List *list2)
void list_free(List *list)
void LockTableCommand(LockStmt *lockstmt)
#define ShareUpdateExclusiveLock
char get_rel_relkind(Oid relid)
ObjectAddress ExecRefreshMatView(RefreshMatViewStmt *stmt, const char *queryString, QueryCompletion *qc)
bool InSecurityRestrictedOperation(void)
BackendType MyBackendType
Oid RangeVarGetRelidExtended(const RangeVar *relation, LOCKMODE lockmode, uint32 flags, RangeVarGetRelidCallback callback, void *callback_arg)
#define RangeVarGetRelid(relation, lockmode, missing_ok)
#define IsA(nodeptr, _type_)
#define castNode(_type_, nodeptr)
const ObjectAddress InvalidObjectAddress
ObjectAddress DefineOpClass(CreateOpClassStmt *stmt)
ObjectAddress DefineOpFamily(CreateOpFamilyStmt *stmt)
Oid AlterOpFamily(AlterOpFamilyStmt *stmt)
ObjectAddress AlterOperator(AlterOperatorStmt *stmt)
ObjectAddress DefineOperator(List *names, List *parameters)
void free_parsestate(ParseState *pstate)
ParseState * make_parsestate(ParseState *parentParseState)
List * transformCreateStmt(CreateStmt *stmt, const char *queryString)
IndexStmt * transformIndexStmt(Oid relid, IndexStmt *stmt, const char *queryString)
List * expandTableLikeClause(RangeVar *heapRel, TableLikeClause *table_like_clause)
CreateStatsStmt * transformStatsStmt(Oid relid, CreateStatsStmt *stmt, const char *queryString)
@ TRANS_STMT_COMMIT_PREPARED
@ TRANS_STMT_ROLLBACK_PREPARED
List * find_all_inheritors(Oid parentrelId, LOCKMODE lockmode, List **numparents)
static int list_length(const List *l)
ObjectAddress CreatePolicy(CreatePolicyStmt *stmt)
ObjectAddress AlterPolicy(AlterPolicyStmt *stmt)
void PerformCursorOpen(ParseState *pstate, DeclareCursorStmt *cstmt, ParamListInfo params, bool isTopLevel)
void PerformPortalClose(const char *name)
void PerformPortalFetch(FetchStmt *stmt, DestReceiver *dest, QueryCompletion *qc)
Portal GetPortalByName(const char *name)
ObjectAddress CreateProceduralLanguage(CreatePLangStmt *stmt)
ObjectAddress CreatePublication(ParseState *pstate, CreatePublicationStmt *stmt)
void AlterPublication(ParseState *pstate, AlterPublicationStmt *stmt)
static long analyze(struct nfa *nfa)
Datum transformRelOptions(Datum oldOptions, List *defList, const char *nameSpace, const char *const validnsps[], bool acceptOidsOff, bool isReset)
bytea * heap_reloptions(char relkind, Datum reloptions, bool validate)
#define HEAP_RELOPT_NAMESPACES
ObjectAddress DefineRule(RuleStmt *stmt, const char *queryString)
Oid CreateSchemaCommand(CreateSchemaStmt *stmt, const char *queryString, int stmt_location, int stmt_len)
ObjectAddress ExecSecLabelStmt(SecLabelStmt *stmt)
void check_stack_depth(void)
ObjectAddress CreateStatistics(CreateStatsStmt *stmt, bool check_rights)
ObjectAddress AlterStatistics(AlterStatsStmt *stmt)
QueryEnvironment * queryEnv
QueryEnvironment * p_queryEnv
const char * p_sourcetext
PlannedStmtOrigin planOrigin
CachedPlanSource * plansource
void DropSubscription(DropSubscriptionStmt *stmt, bool isTopLevel)
ObjectAddress CreateSubscription(ParseState *pstate, CreateSubscriptionStmt *stmt, bool isTopLevel)
ObjectAddress AlterSubscription(ParseState *pstate, AlterSubscriptionStmt *stmt, bool isTopLevel)
void AlterTable(AlterTableStmt *stmt, LOCKMODE lockmode, AlterTableUtilityContext *context)
void RemoveRelations(DropStmt *drop)
LOCKMODE AlterTableGetLockLevel(List *cmds)
void ExecuteTruncate(TruncateStmt *stmt)
Oid AlterTableLookupRelation(AlterTableStmt *stmt, LOCKMODE lockmode)
ObjectAddress DefineRelation(CreateStmt *stmt, char relkind, Oid ownerId, ObjectAddress *typaddress, const char *queryString)
Oid AlterTableMoveAll(AlterTableMoveAllStmt *stmt)
void RangeVarCallbackOwnsRelation(const RangeVar *relation, Oid relId, Oid oldRelId, void *arg)
void NewRelationCreateToastTable(Oid relOid, Datum reloptions)
void AfterTriggerSetState(ConstraintsSetStmt *stmt)
ObjectAddress CreateTrigger(CreateTrigStmt *stmt, const char *queryString, Oid relOid, Oid refRelOid, Oid constraintOid, Oid indexOid, Oid funcoid, Oid parentTriggerOid, Node *whenClause, bool isInternal, bool in_partition)
ObjectAddress AlterTSConfiguration(AlterTSConfigurationStmt *stmt)
ObjectAddress DefineTSTemplate(List *names, List *parameters)
ObjectAddress DefineTSDictionary(List *names, List *parameters)
ObjectAddress DefineTSConfiguration(List *names, List *parameters, ObjectAddress *copied)
ObjectAddress AlterTSDictionary(AlterTSDictionaryStmt *stmt)
ObjectAddress DefineTSParser(List *names, List *parameters)
TupleDesc CreateTupleDescCopy(TupleDesc tupdesc)
void FinishPreparedTransaction(const char *gid, bool isCommit)
ObjectAddress AlterDomainNotNull(List *names, bool notNull)
ObjectAddress DefineType(ParseState *pstate, List *names, List *parameters)
ObjectAddress DefineEnum(CreateEnumStmt *stmt)
ObjectAddress AlterDomainDropConstraint(List *names, const char *constrName, DropBehavior behavior, bool missing_ok)
ObjectAddress AlterEnum(AlterEnumStmt *stmt)
ObjectAddress AlterDomainAddConstraint(List *names, Node *newConstraint, ObjectAddress *constrAddr)
ObjectAddress DefineDomain(ParseState *pstate, CreateDomainStmt *stmt)
ObjectAddress AlterDomainValidateConstraint(List *names, const char *constrName)
ObjectAddress AlterDomainDefault(List *names, Node *defaultRaw)
ObjectAddress DefineCompositeType(RangeVar *typevar, List *coldeflist)
ObjectAddress AlterType(AlterTypeStmt *stmt)
ObjectAddress DefineRange(ParseState *pstate, CreateRangeStmt *stmt)
void ReassignOwnedObjects(ReassignOwnedStmt *stmt)
Oid AlterRole(ParseState *pstate, AlterRoleStmt *stmt)
Oid AlterRoleSet(AlterRoleSetStmt *stmt)
void DropRole(DropRoleStmt *stmt)
Oid CreateRole(ParseState *pstate, CreateRoleStmt *stmt)
void GrantRole(ParseState *pstate, GrantRoleStmt *stmt)
void DropOwnedObjects(DropOwnedStmt *stmt)
static int ClassifyUtilityCommandAsReadOnly(Node *parsetree)
void standard_ProcessUtility(PlannedStmt *pstmt, const char *queryString, bool readOnlyTree, ProcessUtilityContext context, ParamListInfo params, QueryEnvironment *queryEnv, DestReceiver *dest, QueryCompletion *qc)
void PreventCommandIfReadOnly(const char *cmdname)
void ProcessUtility(PlannedStmt *pstmt, const char *queryString, bool readOnlyTree, ProcessUtilityContext context, ParamListInfo params, QueryEnvironment *queryEnv, DestReceiver *dest, QueryCompletion *qc)
void PreventCommandIfParallelMode(const char *cmdname)
bool UtilityReturnsTuples(Node *parsetree)
static void ExecDropStmt(DropStmt *stmt, bool isTopLevel)
bool CommandIsReadOnly(PlannedStmt *pstmt)
static void CheckRestrictedOperation(const char *cmdname)
CommandTag CreateCommandTag(Node *parsetree)
static CommandTag AlterObjectTypeCommandTag(ObjectType objtype)
void ProcessUtilityForAlterTable(Node *stmt, AlterTableUtilityContext *context)
ProcessUtility_hook_type ProcessUtility_hook
void PreventCommandDuringRecovery(const char *cmdname)
Query * UtilityContainsQuery(Node *parsetree)
TupleDesc UtilityTupleDescriptor(Node *parsetree)
LogStmtLevel GetCommandLogLevel(Node *parsetree)
static void ProcessUtilitySlow(ParseState *pstate, PlannedStmt *pstmt, const char *queryString, ProcessUtilityContext context, ParamListInfo params, QueryEnvironment *queryEnv, DestReceiver *dest, QueryCompletion *qc)
#define COMMAND_OK_IN_PARALLEL_MODE
#define COMMAND_OK_IN_RECOVERY
#define COMMAND_IS_STRICTLY_READ_ONLY
void(* ProcessUtility_hook_type)(PlannedStmt *pstmt, const char *queryString, bool readOnlyTree, ProcessUtilityContext context, ParamListInfo params, QueryEnvironment *queryEnv, DestReceiver *dest, QueryCompletion *qc)
#define COMMAND_IS_NOT_READ_ONLY
@ PROCESS_UTILITY_SUBCOMMAND
@ PROCESS_UTILITY_TOPLEVEL
@ PROCESS_UTILITY_QUERY_NONATOMIC
#define COMMAND_OK_IN_READ_ONLY_TXN
void ExecVacuum(ParseState *pstate, VacuumStmt *vacstmt, bool isTopLevel)
ObjectAddress DefineView(ViewStmt *stmt, const char *queryString, int stmt_location, int stmt_len)
void ExecWaitStmt(ParseState *pstate, WaitStmt *stmt, DestReceiver *dest)
TupleDesc WaitStmtResultDesc(WaitStmt *stmt)
void WarnNoTransactionBlock(bool isTopLevel, const char *stmtType)
void UserAbortTransactionBlock(bool chain)
bool PrepareTransactionBlock(const char *gid)
void RequireTransactionBlock(bool isTopLevel, const char *stmtType)
void DefineSavepoint(const char *name)
void CommandCounterIncrement(void)
void PreventInTransactionBlock(bool isTopLevel, const char *stmtType)
void ReleaseSavepoint(const char *name)
bool IsTransactionBlock(void)
bool IsInParallelMode(void)
void BeginTransactionBlock(void)
void RollbackToSavepoint(const char *name)
bool EndTransactionBlock(bool chain)
bool RecoveryInProgress(void)