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;
1563 commandCollected =
true;
1572 commandCollected =
true;
1575 case T_CreateExtensionStmt:
1579 case T_AlterExtensionStmt:
1583 case T_AlterExtensionContentsStmt:
1588 case T_CreateFdwStmt:
1592 case T_AlterFdwStmt:
1596 case T_CreateForeignServerStmt:
1600 case T_AlterForeignServerStmt:
1604 case T_CreateUserMappingStmt:
1608 case T_AlterUserMappingStmt:
1612 case T_DropUserMappingStmt:
1615 commandCollected =
true;
1618 case T_ImportForeignSchemaStmt:
1621 commandCollected =
true;
1624 case T_CompositeTypeStmt:
1633 case T_CreateEnumStmt:
1637 case T_CreateRangeStmt:
1641 case T_AlterEnumStmt:
1652 commandCollected =
true;
1656 case T_CreateFunctionStmt:
1660 case T_AlterFunctionStmt:
1668 case T_CreateSeqStmt:
1672 case T_AlterSeqStmt:
1676 case T_CreateTableAsStmt:
1678 params, queryEnv, qc);
1681 case T_RefreshMatViewStmt:
1702 case T_CreateTrigStmt:
1709 case T_CreatePLangStmt:
1713 case T_CreateDomainStmt:
1717 case T_CreateConversionStmt:
1721 case T_CreateCastStmt:
1725 case T_CreateOpClassStmt:
1728 commandCollected =
true;
1731 case T_CreateOpFamilyStmt:
1738 commandCollected =
true;
1741 case T_CreateTransformStmt:
1745 case T_AlterOpFamilyStmt:
1748 commandCollected =
true;
1751 case T_AlterTSDictionaryStmt:
1755 case T_AlterTSConfigurationStmt:
1763 commandCollected =
true;
1766 case T_AlterTableMoveAllStmt:
1769 commandCollected =
true;
1775 commandCollected =
true;
1782 case T_AlterObjectDependsStmt:
1788 case T_AlterObjectSchemaStmt:
1794 case T_AlterOwnerStmt:
1798 case T_AlterOperatorStmt:
1802 case T_AlterTypeStmt:
1813 commandCollected =
true;
1816 case T_DropOwnedStmt:
1819 commandCollected =
true;
1822 case T_AlterDefaultPrivilegesStmt:
1825 commandCollected =
true;
1828 case T_CreatePolicyStmt:
1832 case T_AlterPolicyStmt:
1836 case T_SecLabelStmt:
1840 case T_CreateAmStmt:
1844 case T_CreatePublicationStmt:
1848 case T_AlterPublicationStmt:
1855 commandCollected =
true;
1858 case T_CreateSubscriptionStmt:
1864 case T_AlterSubscriptionStmt:
1870 case T_DropSubscriptionStmt:
1873 commandCollected =
true;
1876 case T_CreateStatsStmt:
1884 (
errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
1885 errmsg(
"CREATE STATISTICS only supports relation names in the FROM clause")));
1907 case T_AlterStatsStmt:
1911 case T_AlterCollationStmt:
1916 elog(
ERROR,
"unrecognized node type: %d",
1925 if (!commandCollected)
1929 if (isCompleteQuery)
1997 switch (
stmt->removeType)
2000 if (
stmt->concurrent)
2002 "DROP INDEX CONCURRENTLY");
2036 return (
stmt->funcexpr->funcresulttype == RECORDOID);
2067 case T_VariableShowStmt:
2121 case T_VariableShowStmt:
2143QueryReturnsTuples(
Query *parsetree)
2191 case T_DeclareCursorStmt:
2203 case T_CreateTableAsStmt:
2229 tag = CMDTAG_ALTER_AGGREGATE;
2232 tag = CMDTAG_ALTER_TYPE;
2235 tag = CMDTAG_ALTER_CAST;
2238 tag = CMDTAG_ALTER_COLLATION;
2241 tag = CMDTAG_ALTER_TABLE;
2244 tag = CMDTAG_ALTER_CONVERSION;
2247 tag = CMDTAG_ALTER_DATABASE;
2251 tag = CMDTAG_ALTER_DOMAIN;
2254 tag = CMDTAG_ALTER_EXTENSION;
2257 tag = CMDTAG_ALTER_FOREIGN_DATA_WRAPPER;
2260 tag = CMDTAG_ALTER_SERVER;
2263 tag = CMDTAG_ALTER_FOREIGN_TABLE;
2266 tag = CMDTAG_ALTER_FUNCTION;
2269 tag = CMDTAG_ALTER_INDEX;
2272 tag = CMDTAG_ALTER_LANGUAGE;
2275 tag = CMDTAG_ALTER_LARGE_OBJECT;
2278 tag = CMDTAG_ALTER_OPERATOR_CLASS;
2281 tag = CMDTAG_ALTER_OPERATOR;
2284 tag = CMDTAG_ALTER_OPERATOR_FAMILY;
2287 tag = CMDTAG_ALTER_POLICY;
2290 tag = CMDTAG_ALTER_PROCEDURE;
2293 tag = CMDTAG_ALTER_ROLE;
2296 tag = CMDTAG_ALTER_ROUTINE;
2299 tag = CMDTAG_ALTER_RULE;
2302 tag = CMDTAG_ALTER_SCHEMA;
2305 tag = CMDTAG_ALTER_SEQUENCE;
2309 tag = CMDTAG_ALTER_TABLE;
2312 tag = CMDTAG_ALTER_TABLESPACE;
2315 tag = CMDTAG_ALTER_TRIGGER;
2318 tag = CMDTAG_ALTER_EVENT_TRIGGER;
2321 tag = CMDTAG_ALTER_TEXT_SEARCH_CONFIGURATION;
2324 tag = CMDTAG_ALTER_TEXT_SEARCH_DICTIONARY;
2327 tag = CMDTAG_ALTER_TEXT_SEARCH_PARSER;
2330 tag = CMDTAG_ALTER_TEXT_SEARCH_TEMPLATE;
2333 tag = CMDTAG_ALTER_TYPE;
2336 tag = CMDTAG_ALTER_VIEW;
2339 tag = CMDTAG_ALTER_MATERIALIZED_VIEW;
2342 tag = CMDTAG_ALTER_PUBLICATION;
2345 tag = CMDTAG_ALTER_SUBSCRIPTION;
2348 tag = CMDTAG_ALTER_STATISTICS;
2351 tag = CMDTAG_UNKNOWN;
2381 tag = CMDTAG_INSERT;
2385 tag = CMDTAG_DELETE;
2389 tag = CMDTAG_UPDATE;
2397 tag = CMDTAG_SELECT;
2400 case T_PLAssignStmt:
2401 tag = CMDTAG_SELECT;
2405 case T_TransactionStmt:
2416 tag = CMDTAG_START_TRANSACTION;
2420 tag = CMDTAG_COMMIT;
2425 tag = CMDTAG_ROLLBACK;
2429 tag = CMDTAG_SAVEPOINT;
2433 tag = CMDTAG_RELEASE;
2437 tag = CMDTAG_PREPARE_TRANSACTION;
2441 tag = CMDTAG_COMMIT_PREPARED;
2445 tag = CMDTAG_ROLLBACK_PREPARED;
2449 tag = CMDTAG_UNKNOWN;
2455 case T_DeclareCursorStmt:
2456 tag = CMDTAG_DECLARE_CURSOR;
2459 case T_ClosePortalStmt:
2463 if (
stmt->portalname == NULL)
2464 tag = CMDTAG_CLOSE_CURSOR_ALL;
2466 tag = CMDTAG_CLOSE_CURSOR;
2474 tag = (
stmt->ismove) ? CMDTAG_MOVE : CMDTAG_FETCH;
2478 case T_CreateDomainStmt:
2479 tag = CMDTAG_CREATE_DOMAIN;
2482 case T_CreateSchemaStmt:
2483 tag = CMDTAG_CREATE_SCHEMA;
2487 tag = CMDTAG_CREATE_TABLE;
2490 case T_CreateTableSpaceStmt:
2491 tag = CMDTAG_CREATE_TABLESPACE;
2494 case T_DropTableSpaceStmt:
2495 tag = CMDTAG_DROP_TABLESPACE;
2498 case T_AlterTableSpaceOptionsStmt:
2499 tag = CMDTAG_ALTER_TABLESPACE;
2502 case T_CreateExtensionStmt:
2503 tag = CMDTAG_CREATE_EXTENSION;
2506 case T_AlterExtensionStmt:
2507 tag = CMDTAG_ALTER_EXTENSION;
2510 case T_AlterExtensionContentsStmt:
2511 tag = CMDTAG_ALTER_EXTENSION;
2514 case T_CreateFdwStmt:
2515 tag = CMDTAG_CREATE_FOREIGN_DATA_WRAPPER;
2518 case T_AlterFdwStmt:
2519 tag = CMDTAG_ALTER_FOREIGN_DATA_WRAPPER;
2522 case T_CreateForeignServerStmt:
2523 tag = CMDTAG_CREATE_SERVER;
2526 case T_AlterForeignServerStmt:
2527 tag = CMDTAG_ALTER_SERVER;
2530 case T_CreateUserMappingStmt:
2531 tag = CMDTAG_CREATE_USER_MAPPING;
2534 case T_AlterUserMappingStmt:
2535 tag = CMDTAG_ALTER_USER_MAPPING;
2538 case T_DropUserMappingStmt:
2539 tag = CMDTAG_DROP_USER_MAPPING;
2542 case T_CreateForeignTableStmt:
2543 tag = CMDTAG_CREATE_FOREIGN_TABLE;
2546 case T_ImportForeignSchemaStmt:
2547 tag = CMDTAG_IMPORT_FOREIGN_SCHEMA;
2551 switch (((
DropStmt *) parsetree)->removeType)
2554 tag = CMDTAG_DROP_TABLE;
2557 tag = CMDTAG_DROP_SEQUENCE;
2560 tag = CMDTAG_DROP_VIEW;
2563 tag = CMDTAG_DROP_MATERIALIZED_VIEW;
2566 tag = CMDTAG_DROP_INDEX;
2569 tag = CMDTAG_DROP_TYPE;
2572 tag = CMDTAG_DROP_DOMAIN;
2575 tag = CMDTAG_DROP_COLLATION;
2578 tag = CMDTAG_DROP_CONVERSION;
2581 tag = CMDTAG_DROP_SCHEMA;
2584 tag = CMDTAG_DROP_TEXT_SEARCH_PARSER;
2587 tag = CMDTAG_DROP_TEXT_SEARCH_DICTIONARY;
2590 tag = CMDTAG_DROP_TEXT_SEARCH_TEMPLATE;
2593 tag = CMDTAG_DROP_TEXT_SEARCH_CONFIGURATION;
2596 tag = CMDTAG_DROP_FOREIGN_TABLE;
2599 tag = CMDTAG_DROP_EXTENSION;
2602 tag = CMDTAG_DROP_FUNCTION;
2605 tag = CMDTAG_DROP_PROCEDURE;
2608 tag = CMDTAG_DROP_ROUTINE;
2611 tag = CMDTAG_DROP_AGGREGATE;
2614 tag = CMDTAG_DROP_OPERATOR;
2617 tag = CMDTAG_DROP_LANGUAGE;
2620 tag = CMDTAG_DROP_CAST;
2623 tag = CMDTAG_DROP_TRIGGER;
2626 tag = CMDTAG_DROP_EVENT_TRIGGER;
2629 tag = CMDTAG_DROP_RULE;
2632 tag = CMDTAG_DROP_FOREIGN_DATA_WRAPPER;
2635 tag = CMDTAG_DROP_SERVER;
2638 tag = CMDTAG_DROP_OPERATOR_CLASS;
2641 tag = CMDTAG_DROP_OPERATOR_FAMILY;
2644 tag = CMDTAG_DROP_POLICY;
2647 tag = CMDTAG_DROP_TRANSFORM;
2650 tag = CMDTAG_DROP_ACCESS_METHOD;
2653 tag = CMDTAG_DROP_PUBLICATION;
2656 tag = CMDTAG_DROP_STATISTICS;
2659 tag = CMDTAG_UNKNOWN;
2663 case T_TruncateStmt:
2664 tag = CMDTAG_TRUNCATE_TABLE;
2668 tag = CMDTAG_COMMENT;
2671 case T_SecLabelStmt:
2672 tag = CMDTAG_SECURITY_LABEL;
2690 case T_AlterObjectDependsStmt:
2694 case T_AlterObjectSchemaStmt:
2698 case T_AlterOwnerStmt:
2702 case T_AlterTableMoveAllStmt:
2706 case T_AlterTableStmt:
2710 case T_AlterDomainStmt:
2711 tag = CMDTAG_ALTER_DOMAIN;
2714 case T_AlterFunctionStmt:
2718 tag = CMDTAG_ALTER_FUNCTION;
2721 tag = CMDTAG_ALTER_PROCEDURE;
2724 tag = CMDTAG_ALTER_ROUTINE;
2727 tag = CMDTAG_UNKNOWN;
2735 tag = (
stmt->is_grant) ? CMDTAG_GRANT : CMDTAG_REVOKE;
2739 case T_GrantRoleStmt:
2743 tag = (
stmt->is_grant) ? CMDTAG_GRANT_ROLE : CMDTAG_REVOKE_ROLE;
2747 case T_AlterDefaultPrivilegesStmt:
2748 tag = CMDTAG_ALTER_DEFAULT_PRIVILEGES;
2755 tag = CMDTAG_CREATE_AGGREGATE;
2758 tag = CMDTAG_CREATE_OPERATOR;
2761 tag = CMDTAG_CREATE_TYPE;
2764 tag = CMDTAG_CREATE_TEXT_SEARCH_PARSER;
2767 tag = CMDTAG_CREATE_TEXT_SEARCH_DICTIONARY;
2770 tag = CMDTAG_CREATE_TEXT_SEARCH_TEMPLATE;
2773 tag = CMDTAG_CREATE_TEXT_SEARCH_CONFIGURATION;
2776 tag = CMDTAG_CREATE_COLLATION;
2779 tag = CMDTAG_CREATE_ACCESS_METHOD;
2782 tag = CMDTAG_UNKNOWN;
2786 case T_CompositeTypeStmt:
2787 tag = CMDTAG_CREATE_TYPE;
2790 case T_CreateEnumStmt:
2791 tag = CMDTAG_CREATE_TYPE;
2794 case T_CreateRangeStmt:
2795 tag = CMDTAG_CREATE_TYPE;
2798 case T_AlterEnumStmt:
2799 tag = CMDTAG_ALTER_TYPE;
2803 tag = CMDTAG_CREATE_VIEW;
2806 case T_CreateFunctionStmt:
2808 tag = CMDTAG_CREATE_PROCEDURE;
2810 tag = CMDTAG_CREATE_FUNCTION;
2814 tag = CMDTAG_CREATE_INDEX;
2818 tag = CMDTAG_CREATE_RULE;
2821 case T_CreateSeqStmt:
2822 tag = CMDTAG_CREATE_SEQUENCE;
2825 case T_AlterSeqStmt:
2826 tag = CMDTAG_ALTER_SEQUENCE;
2833 case T_CreatedbStmt:
2834 tag = CMDTAG_CREATE_DATABASE;
2837 case T_AlterDatabaseStmt:
2838 case T_AlterDatabaseRefreshCollStmt:
2839 case T_AlterDatabaseSetStmt:
2840 tag = CMDTAG_ALTER_DATABASE;
2844 tag = CMDTAG_DROP_DATABASE;
2848 tag = CMDTAG_NOTIFY;
2852 tag = CMDTAG_LISTEN;
2855 case T_UnlistenStmt:
2856 tag = CMDTAG_UNLISTEN;
2868 tag = CMDTAG_CLUSTER;
2872 if (((
VacuumStmt *) parsetree)->is_vacuumcmd)
2873 tag = CMDTAG_VACUUM;
2875 tag = CMDTAG_ANALYZE;
2879 tag = CMDTAG_EXPLAIN;
2882 case T_CreateTableAsStmt:
2887 tag = CMDTAG_SELECT_INTO;
2889 tag = CMDTAG_CREATE_TABLE_AS;
2892 tag = CMDTAG_CREATE_MATERIALIZED_VIEW;
2895 tag = CMDTAG_UNKNOWN;
2899 case T_RefreshMatViewStmt:
2900 tag = CMDTAG_REFRESH_MATERIALIZED_VIEW;
2903 case T_AlterSystemStmt:
2904 tag = CMDTAG_ALTER_SYSTEM;
2907 case T_VariableSetStmt:
2921 tag = CMDTAG_UNKNOWN;
2925 case T_VariableShowStmt:
2933 tag = CMDTAG_DISCARD_ALL;
2936 tag = CMDTAG_DISCARD_PLANS;
2939 tag = CMDTAG_DISCARD_TEMP;
2942 tag = CMDTAG_DISCARD_SEQUENCES;
2945 tag = CMDTAG_UNKNOWN;
2949 case T_CreateTransformStmt:
2950 tag = CMDTAG_CREATE_TRANSFORM;
2953 case T_CreateTrigStmt:
2954 tag = CMDTAG_CREATE_TRIGGER;
2957 case T_CreateEventTrigStmt:
2958 tag = CMDTAG_CREATE_EVENT_TRIGGER;
2961 case T_AlterEventTrigStmt:
2962 tag = CMDTAG_ALTER_EVENT_TRIGGER;
2965 case T_CreatePLangStmt:
2966 tag = CMDTAG_CREATE_LANGUAGE;
2969 case T_CreateRoleStmt:
2970 tag = CMDTAG_CREATE_ROLE;
2973 case T_AlterRoleStmt:
2974 tag = CMDTAG_ALTER_ROLE;
2977 case T_AlterRoleSetStmt:
2978 tag = CMDTAG_ALTER_ROLE;
2981 case T_DropRoleStmt:
2982 tag = CMDTAG_DROP_ROLE;
2985 case T_DropOwnedStmt:
2986 tag = CMDTAG_DROP_OWNED;
2989 case T_ReassignOwnedStmt:
2990 tag = CMDTAG_REASSIGN_OWNED;
2994 tag = CMDTAG_LOCK_TABLE;
2997 case T_ConstraintsSetStmt:
2998 tag = CMDTAG_SET_CONSTRAINTS;
3001 case T_CheckPointStmt:
3002 tag = CMDTAG_CHECKPOINT;
3006 tag = CMDTAG_REINDEX;
3009 case T_CreateConversionStmt:
3010 tag = CMDTAG_CREATE_CONVERSION;
3013 case T_CreateCastStmt:
3014 tag = CMDTAG_CREATE_CAST;
3017 case T_CreateOpClassStmt:
3018 tag = CMDTAG_CREATE_OPERATOR_CLASS;
3021 case T_CreateOpFamilyStmt:
3022 tag = CMDTAG_CREATE_OPERATOR_FAMILY;
3025 case T_AlterOpFamilyStmt:
3026 tag = CMDTAG_ALTER_OPERATOR_FAMILY;
3029 case T_AlterOperatorStmt:
3030 tag = CMDTAG_ALTER_OPERATOR;
3033 case T_AlterTypeStmt:
3034 tag = CMDTAG_ALTER_TYPE;
3037 case T_AlterTSDictionaryStmt:
3038 tag = CMDTAG_ALTER_TEXT_SEARCH_DICTIONARY;
3041 case T_AlterTSConfigurationStmt:
3042 tag = CMDTAG_ALTER_TEXT_SEARCH_CONFIGURATION;
3045 case T_CreatePolicyStmt:
3046 tag = CMDTAG_CREATE_POLICY;
3049 case T_AlterPolicyStmt:
3050 tag = CMDTAG_ALTER_POLICY;
3053 case T_CreateAmStmt:
3054 tag = CMDTAG_CREATE_ACCESS_METHOD;
3057 case T_CreatePublicationStmt:
3058 tag = CMDTAG_CREATE_PUBLICATION;
3061 case T_AlterPublicationStmt:
3062 tag = CMDTAG_ALTER_PUBLICATION;
3065 case T_CreateSubscriptionStmt:
3066 tag = CMDTAG_CREATE_SUBSCRIPTION;
3069 case T_AlterSubscriptionStmt:
3070 tag = CMDTAG_ALTER_SUBSCRIPTION;
3073 case T_DropSubscriptionStmt:
3074 tag = CMDTAG_DROP_SUBSCRIPTION;
3077 case T_AlterCollationStmt:
3078 tag = CMDTAG_ALTER_COLLATION;
3082 tag = CMDTAG_PREPARE;
3086 tag = CMDTAG_EXECUTE;
3089 case T_CreateStatsStmt:
3090 tag = CMDTAG_CREATE_STATISTICS;
3093 case T_AlterStatsStmt:
3094 tag = CMDTAG_ALTER_STATISTICS;
3097 case T_DeallocateStmt:
3101 if (
stmt->name == NULL)
3102 tag = CMDTAG_DEALLOCATE_ALL;
3104 tag = CMDTAG_DEALLOCATE;
3117 switch (
stmt->commandType)
3132 tag = CMDTAG_SELECT_FOR_KEY_SHARE;
3135 tag = CMDTAG_SELECT_FOR_SHARE;
3138 tag = CMDTAG_SELECT_FOR_NO_KEY_UPDATE;
3141 tag = CMDTAG_SELECT_FOR_UPDATE;
3144 tag = CMDTAG_SELECT;
3149 tag = CMDTAG_SELECT;
3152 tag = CMDTAG_UPDATE;
3155 tag = CMDTAG_INSERT;
3158 tag = CMDTAG_DELETE;
3168 (
int)
stmt->commandType);
3169 tag = CMDTAG_UNKNOWN;
3180 switch (
stmt->commandType)
3195 tag = CMDTAG_SELECT_FOR_KEY_SHARE;
3198 tag = CMDTAG_SELECT_FOR_SHARE;
3201 tag = CMDTAG_SELECT_FOR_NO_KEY_UPDATE;
3204 tag = CMDTAG_SELECT_FOR_UPDATE;
3207 tag = CMDTAG_UNKNOWN;
3212 tag = CMDTAG_SELECT;
3215 tag = CMDTAG_UPDATE;
3218 tag = CMDTAG_INSERT;
3221 tag = CMDTAG_DELETE;
3231 (
int)
stmt->commandType);
3232 tag = CMDTAG_UNKNOWN;
3241 tag = CMDTAG_UNKNOWN;
3285 case T_PLAssignStmt:
3290 case T_TransactionStmt:
3294 case T_DeclareCursorStmt:
3298 case T_ClosePortalStmt:
3306 case T_CreateSchemaStmt:
3311 case T_CreateForeignTableStmt:
3315 case T_CreateTableSpaceStmt:
3316 case T_DropTableSpaceStmt:
3317 case T_AlterTableSpaceOptionsStmt:
3321 case T_CreateExtensionStmt:
3322 case T_AlterExtensionStmt:
3323 case T_AlterExtensionContentsStmt:
3327 case T_CreateFdwStmt:
3328 case T_AlterFdwStmt:
3329 case T_CreateForeignServerStmt:
3330 case T_AlterForeignServerStmt:
3331 case T_CreateUserMappingStmt:
3332 case T_AlterUserMappingStmt:
3333 case T_DropUserMappingStmt:
3334 case T_ImportForeignSchemaStmt:
3342 case T_TruncateStmt:
3350 case T_SecLabelStmt:
3355 if (((
CopyStmt *) parsetree)->is_from)
3377 if (
ps &&
ps->plansource->raw_parse_tree)
3384 case T_DeallocateStmt:
3392 case T_AlterObjectDependsStmt:
3396 case T_AlterObjectSchemaStmt:
3400 case T_AlterOwnerStmt:
3404 case T_AlterOperatorStmt:
3408 case T_AlterTypeStmt:
3412 case T_AlterTableMoveAllStmt:
3413 case T_AlterTableStmt:
3417 case T_AlterDomainStmt:
3425 case T_GrantRoleStmt:
3429 case T_AlterDefaultPrivilegesStmt:
3437 case T_CompositeTypeStmt:
3441 case T_CreateEnumStmt:
3445 case T_CreateRangeStmt:
3449 case T_AlterEnumStmt:
3457 case T_CreateFunctionStmt:
3461 case T_AlterFunctionStmt:
3473 case T_CreateSeqStmt:
3477 case T_AlterSeqStmt:
3485 case T_CreatedbStmt:
3489 case T_AlterDatabaseStmt:
3490 case T_AlterDatabaseRefreshCollStmt:
3491 case T_AlterDatabaseSetStmt:
3507 case T_UnlistenStmt:
3534 foreach(lc,
stmt->options)
3538 if (strcmp(opt->
defname,
"analyze") == 0)
3550 case T_CreateTableAsStmt:
3554 case T_RefreshMatViewStmt:
3558 case T_AlterSystemStmt:
3562 case T_VariableSetStmt:
3566 case T_VariableShowStmt:
3574 case T_CreateTrigStmt:
3578 case T_CreateEventTrigStmt:
3582 case T_AlterEventTrigStmt:
3586 case T_CreatePLangStmt:
3590 case T_CreateDomainStmt:
3594 case T_CreateRoleStmt:
3598 case T_AlterRoleStmt:
3602 case T_AlterRoleSetStmt:
3606 case T_DropRoleStmt:
3610 case T_DropOwnedStmt:
3614 case T_ReassignOwnedStmt:
3622 case T_ConstraintsSetStmt:
3626 case T_CheckPointStmt:
3634 case T_CreateConversionStmt:
3638 case T_CreateCastStmt:
3642 case T_CreateOpClassStmt:
3646 case T_CreateOpFamilyStmt:
3650 case T_CreateTransformStmt:
3654 case T_AlterOpFamilyStmt:
3658 case T_CreatePolicyStmt:
3662 case T_AlterPolicyStmt:
3666 case T_AlterTSDictionaryStmt:
3670 case T_AlterTSConfigurationStmt:
3674 case T_CreateAmStmt:
3678 case T_CreatePublicationStmt:
3682 case T_AlterPublicationStmt:
3686 case T_CreateSubscriptionStmt:
3690 case T_AlterSubscriptionStmt:
3694 case T_DropSubscriptionStmt:
3698 case T_CreateStatsStmt:
3702 case T_AlterStatsStmt:
3706 case T_AlterCollationStmt:
3719 switch (
stmt->commandType)
3738 (
int)
stmt->commandType);
3750 switch (
stmt->commandType)
3769 (
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(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)