83 const char *queryString,
139 case T_AlterCollationStmt:
140 case T_AlterDatabaseRefreshCollStmt:
141 case T_AlterDatabaseSetStmt:
142 case T_AlterDatabaseStmt:
143 case T_AlterDefaultPrivilegesStmt:
144 case T_AlterDomainStmt:
145 case T_AlterEnumStmt:
146 case T_AlterEventTrigStmt:
147 case T_AlterExtensionContentsStmt:
148 case T_AlterExtensionStmt:
150 case T_AlterForeignServerStmt:
151 case T_AlterFunctionStmt:
152 case T_AlterObjectDependsStmt:
153 case T_AlterObjectSchemaStmt:
154 case T_AlterOpFamilyStmt:
155 case T_AlterOperatorStmt:
156 case T_AlterOwnerStmt:
157 case T_AlterPolicyStmt:
158 case T_AlterPublicationStmt:
159 case T_AlterRoleSetStmt:
160 case T_AlterRoleStmt:
162 case T_AlterStatsStmt:
163 case T_AlterSubscriptionStmt:
164 case T_AlterTSConfigurationStmt:
165 case T_AlterTSDictionaryStmt:
166 case T_AlterTableMoveAllStmt:
167 case T_AlterTableSpaceOptionsStmt:
168 case T_AlterTableStmt:
169 case T_AlterTypeStmt:
170 case T_AlterUserMappingStmt:
172 case T_CompositeTypeStmt:
174 case T_CreateCastStmt:
175 case T_CreateConversionStmt:
176 case T_CreateDomainStmt:
177 case T_CreateEnumStmt:
178 case T_CreateEventTrigStmt:
179 case T_CreateExtensionStmt:
180 case T_CreateFdwStmt:
181 case T_CreateForeignServerStmt:
182 case T_CreateForeignTableStmt:
183 case T_CreateFunctionStmt:
184 case T_CreateOpClassStmt:
185 case T_CreateOpFamilyStmt:
186 case T_CreatePLangStmt:
187 case T_CreatePolicyStmt:
188 case T_CreatePublicationStmt:
189 case T_CreateRangeStmt:
190 case T_CreateRoleStmt:
191 case T_CreateSchemaStmt:
192 case T_CreateSeqStmt:
193 case T_CreateStatsStmt:
195 case T_CreateSubscriptionStmt:
196 case T_CreateTableAsStmt:
197 case T_CreateTableSpaceStmt:
198 case T_CreateTransformStmt:
199 case T_CreateTrigStmt:
200 case T_CreateUserMappingStmt:
203 case T_DropOwnedStmt:
206 case T_DropSubscriptionStmt:
207 case T_DropTableSpaceStmt:
208 case T_DropUserMappingStmt:
210 case T_GrantRoleStmt:
212 case T_ImportForeignSchemaStmt:
214 case T_ReassignOwnedStmt:
215 case T_RefreshMatViewStmt:
226 case T_AlterSystemStmt:
253 case T_CheckPointStmt:
265 case T_ClosePortalStmt:
266 case T_ConstraintsSetStmt:
267 case T_DeallocateStmt:
268 case T_DeclareCursorStmt:
275 case T_VariableSetStmt:
323 case T_VariableShowStmt:
363 case T_TransactionStmt:
392 elog(
ERROR,
"unrecognized TransactionStmtKind: %d",
398 elog(
ERROR,
"unrecognized node type: %d",
415 (
errcode(ERRCODE_READ_ONLY_SQL_TRANSACTION),
417 errmsg(
"cannot execute %s in a read-only transaction",
433 (
errcode(ERRCODE_INVALID_TRANSACTION_STATE),
435 errmsg(
"cannot execute %s during a parallel operation",
452 (
errcode(ERRCODE_READ_ONLY_SQL_TRANSACTION),
454 errmsg(
"cannot execute %s during recovery",
470 (
errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
472 errmsg(
"cannot execute %s within security-restricted operation",
507 const char *queryString,
517 Assert(queryString != NULL);
526 (*ProcessUtility_hook) (pstmt, queryString, readOnlyTree,
527 context, params, queryEnv,
531 context, params, queryEnv,
548 const char *queryString,
601 case T_TransactionStmt:
617 foreach(lc,
stmt->options)
621 if (strcmp(item->
defname,
"transaction_isolation") == 0)
625 else if (strcmp(item->
defname,
"transaction_read_only") == 0)
629 else if (strcmp(item->
defname,
"transaction_deferrable") == 0)
695 case T_DeclareCursorStmt:
700 case T_ClosePortalStmt:
717 case T_CreateTableSpaceStmt:
723 case T_DropTableSpaceStmt:
729 case T_AlterTableSpaceOptionsStmt:
763 case T_DeallocateStmt:
768 case T_GrantRoleStmt:
779 case T_AlterDatabaseStmt:
784 case T_AlterDatabaseRefreshCollStmt:
789 case T_AlterDatabaseSetStmt:
826 (
errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
828 errmsg(
"cannot execute %s within a background process",
840 if (
stmt->conditionname)
873 case T_AlterSystemStmt:
878 case T_VariableSetStmt:
882 case T_VariableShowStmt:
896 case T_CreateEventTrigStmt:
901 case T_AlterEventTrigStmt:
909 case T_CreateRoleStmt:
914 case T_AlterRoleStmt:
919 case T_AlterRoleSetStmt:
929 case T_ReassignOwnedStmt:
944 case T_ConstraintsSetStmt:
949 case T_CheckPointStmt:
952 (
errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
953 errmsg(
"permission denied to execute %s command",
955 errdetail(
"Only roles with privileges of the \"%s\" role may execute this command.",
977 context, params, queryEnv,
990 context, params, queryEnv,
1003 context, params, queryEnv,
1010 case T_AlterObjectDependsStmt:
1016 context, params, queryEnv,
1023 case T_AlterObjectSchemaStmt:
1029 context, params, queryEnv,
1036 case T_AlterOwnerStmt:
1042 context, params, queryEnv,
1055 context, params, queryEnv,
1062 case T_SecLabelStmt:
1068 context, params, queryEnv,
1078 context, params, queryEnv,
1101 const char *queryString,
1112 bool commandCollected =
false;
1122 if (isCompleteQuery)
1130 case T_CreateSchemaStmt:
1140 commandCollected =
true;
1144 case T_CreateForeignTableStmt:
1158 while (stmts !=
NIL)
1167 Datum toast_options;
1214 RELKIND_FOREIGN_TABLE,
1234 Assert(table_rv != NULL);
1274 commandCollected =
true;
1278 case T_AlterTableStmt:
1290 foreach(cell, atstmt->
cmds)
1299 "ALTER TABLE ... DETACH CONCURRENTLY");
1317 atcontext.
pstmt = pstmt;
1319 atcontext.
relid = relid;
1320 atcontext.
params = params;
1335 (
errmsg(
"relation \"%s\" does not exist, skipping",
1340 commandCollected =
true;
1343 case T_AlterDomainStmt:
1351 switch (
stmt->subtype)
1392 elog(
ERROR,
"unrecognized alter domain type: %d",
1393 (
int)
stmt->subtype);
1452 stmt->if_not_exists);
1455 elog(
ERROR,
"unrecognized define stmt type: %d",
1468 bool is_alter_table;
1470 if (
stmt->concurrent)
1472 "CREATE INDEX CONCURRENTLY");
1502 if (
stmt->relation->inh &&
1509 foreach(lc, inheritors)
1514 if (relkind != RELKIND_RELATION &&
1515 relkind != RELKIND_MATVIEW &&
1516 relkind != RELKIND_PARTITIONED_TABLE &&
1517 relkind != RELKIND_FOREIGN_TABLE)
1518 elog(
ERROR,
"unexpected relkind \"%c\" on partition \"%s\"",
1519 relkind,
stmt->relation->relname);
1521 if (relkind == RELKIND_FOREIGN_TABLE &&
1524 (
errcode(ERRCODE_WRONG_OBJECT_TYPE),
1525 errmsg(
"cannot create unique index on partitioned table \"%s\"",
1526 stmt->relation->relname),
1527 errdetail(
"Table \"%s\" contains partitions that are foreign tables.",
1528 stmt->relation->relname)));
1544 is_alter_table =
stmt->transformed;
1571 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:
1694 queryString, params, qc);
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(
"only a single relation is allowed in CREATE STATISTICS")));
1908 case T_AlterStatsStmt:
1912 case T_AlterCollationStmt:
1917 elog(
ERROR,
"unrecognized node type: %d",
1926 if (!commandCollected)
1930 if (isCompleteQuery)
1997 switch (
stmt->removeType)
2000 if (
stmt->concurrent)
2002 "DROP INDEX CONCURRENTLY");
2036 return (
stmt->funcexpr->funcresulttype == RECORDOID);
2067 case T_VariableShowStmt:
2118 case T_VariableShowStmt:
2137 QueryReturnsTuples(
Query *parsetree)
2186 case T_DeclareCursorStmt:
2198 case T_CreateTableAsStmt:
2224 tag = CMDTAG_ALTER_AGGREGATE;
2227 tag = CMDTAG_ALTER_TYPE;
2230 tag = CMDTAG_ALTER_CAST;
2233 tag = CMDTAG_ALTER_COLLATION;
2236 tag = CMDTAG_ALTER_TABLE;
2239 tag = CMDTAG_ALTER_CONVERSION;
2242 tag = CMDTAG_ALTER_DATABASE;
2246 tag = CMDTAG_ALTER_DOMAIN;
2249 tag = CMDTAG_ALTER_EXTENSION;
2252 tag = CMDTAG_ALTER_FOREIGN_DATA_WRAPPER;
2255 tag = CMDTAG_ALTER_SERVER;
2258 tag = CMDTAG_ALTER_FOREIGN_TABLE;
2261 tag = CMDTAG_ALTER_FUNCTION;
2264 tag = CMDTAG_ALTER_INDEX;
2267 tag = CMDTAG_ALTER_LANGUAGE;
2270 tag = CMDTAG_ALTER_LARGE_OBJECT;
2273 tag = CMDTAG_ALTER_OPERATOR_CLASS;
2276 tag = CMDTAG_ALTER_OPERATOR;
2279 tag = CMDTAG_ALTER_OPERATOR_FAMILY;
2282 tag = CMDTAG_ALTER_POLICY;
2285 tag = CMDTAG_ALTER_PROCEDURE;
2288 tag = CMDTAG_ALTER_ROLE;
2291 tag = CMDTAG_ALTER_ROUTINE;
2294 tag = CMDTAG_ALTER_RULE;
2297 tag = CMDTAG_ALTER_SCHEMA;
2300 tag = CMDTAG_ALTER_SEQUENCE;
2304 tag = CMDTAG_ALTER_TABLE;
2307 tag = CMDTAG_ALTER_TABLESPACE;
2310 tag = CMDTAG_ALTER_TRIGGER;
2313 tag = CMDTAG_ALTER_EVENT_TRIGGER;
2316 tag = CMDTAG_ALTER_TEXT_SEARCH_CONFIGURATION;
2319 tag = CMDTAG_ALTER_TEXT_SEARCH_DICTIONARY;
2322 tag = CMDTAG_ALTER_TEXT_SEARCH_PARSER;
2325 tag = CMDTAG_ALTER_TEXT_SEARCH_TEMPLATE;
2328 tag = CMDTAG_ALTER_TYPE;
2331 tag = CMDTAG_ALTER_VIEW;
2334 tag = CMDTAG_ALTER_MATERIALIZED_VIEW;
2337 tag = CMDTAG_ALTER_PUBLICATION;
2340 tag = CMDTAG_ALTER_SUBSCRIPTION;
2343 tag = CMDTAG_ALTER_STATISTICS;
2346 tag = CMDTAG_UNKNOWN;
2376 tag = CMDTAG_INSERT;
2380 tag = CMDTAG_DELETE;
2384 tag = CMDTAG_UPDATE;
2392 tag = CMDTAG_SELECT;
2395 case T_PLAssignStmt:
2396 tag = CMDTAG_SELECT;
2400 case T_TransactionStmt:
2411 tag = CMDTAG_START_TRANSACTION;
2415 tag = CMDTAG_COMMIT;
2420 tag = CMDTAG_ROLLBACK;
2424 tag = CMDTAG_SAVEPOINT;
2428 tag = CMDTAG_RELEASE;
2432 tag = CMDTAG_PREPARE_TRANSACTION;
2436 tag = CMDTAG_COMMIT_PREPARED;
2440 tag = CMDTAG_ROLLBACK_PREPARED;
2444 tag = CMDTAG_UNKNOWN;
2450 case T_DeclareCursorStmt:
2451 tag = CMDTAG_DECLARE_CURSOR;
2454 case T_ClosePortalStmt:
2458 if (
stmt->portalname == NULL)
2459 tag = CMDTAG_CLOSE_CURSOR_ALL;
2461 tag = CMDTAG_CLOSE_CURSOR;
2469 tag = (
stmt->ismove) ? CMDTAG_MOVE : CMDTAG_FETCH;
2473 case T_CreateDomainStmt:
2474 tag = CMDTAG_CREATE_DOMAIN;
2477 case T_CreateSchemaStmt:
2478 tag = CMDTAG_CREATE_SCHEMA;
2482 tag = CMDTAG_CREATE_TABLE;
2485 case T_CreateTableSpaceStmt:
2486 tag = CMDTAG_CREATE_TABLESPACE;
2489 case T_DropTableSpaceStmt:
2490 tag = CMDTAG_DROP_TABLESPACE;
2493 case T_AlterTableSpaceOptionsStmt:
2494 tag = CMDTAG_ALTER_TABLESPACE;
2497 case T_CreateExtensionStmt:
2498 tag = CMDTAG_CREATE_EXTENSION;
2501 case T_AlterExtensionStmt:
2502 tag = CMDTAG_ALTER_EXTENSION;
2505 case T_AlterExtensionContentsStmt:
2506 tag = CMDTAG_ALTER_EXTENSION;
2509 case T_CreateFdwStmt:
2510 tag = CMDTAG_CREATE_FOREIGN_DATA_WRAPPER;
2513 case T_AlterFdwStmt:
2514 tag = CMDTAG_ALTER_FOREIGN_DATA_WRAPPER;
2517 case T_CreateForeignServerStmt:
2518 tag = CMDTAG_CREATE_SERVER;
2521 case T_AlterForeignServerStmt:
2522 tag = CMDTAG_ALTER_SERVER;
2525 case T_CreateUserMappingStmt:
2526 tag = CMDTAG_CREATE_USER_MAPPING;
2529 case T_AlterUserMappingStmt:
2530 tag = CMDTAG_ALTER_USER_MAPPING;
2533 case T_DropUserMappingStmt:
2534 tag = CMDTAG_DROP_USER_MAPPING;
2537 case T_CreateForeignTableStmt:
2538 tag = CMDTAG_CREATE_FOREIGN_TABLE;
2541 case T_ImportForeignSchemaStmt:
2542 tag = CMDTAG_IMPORT_FOREIGN_SCHEMA;
2546 switch (((
DropStmt *) parsetree)->removeType)
2549 tag = CMDTAG_DROP_TABLE;
2552 tag = CMDTAG_DROP_SEQUENCE;
2555 tag = CMDTAG_DROP_VIEW;
2558 tag = CMDTAG_DROP_MATERIALIZED_VIEW;
2561 tag = CMDTAG_DROP_INDEX;
2564 tag = CMDTAG_DROP_TYPE;
2567 tag = CMDTAG_DROP_DOMAIN;
2570 tag = CMDTAG_DROP_COLLATION;
2573 tag = CMDTAG_DROP_CONVERSION;
2576 tag = CMDTAG_DROP_SCHEMA;
2579 tag = CMDTAG_DROP_TEXT_SEARCH_PARSER;
2582 tag = CMDTAG_DROP_TEXT_SEARCH_DICTIONARY;
2585 tag = CMDTAG_DROP_TEXT_SEARCH_TEMPLATE;
2588 tag = CMDTAG_DROP_TEXT_SEARCH_CONFIGURATION;
2591 tag = CMDTAG_DROP_FOREIGN_TABLE;
2594 tag = CMDTAG_DROP_EXTENSION;
2597 tag = CMDTAG_DROP_FUNCTION;
2600 tag = CMDTAG_DROP_PROCEDURE;
2603 tag = CMDTAG_DROP_ROUTINE;
2606 tag = CMDTAG_DROP_AGGREGATE;
2609 tag = CMDTAG_DROP_OPERATOR;
2612 tag = CMDTAG_DROP_LANGUAGE;
2615 tag = CMDTAG_DROP_CAST;
2618 tag = CMDTAG_DROP_TRIGGER;
2621 tag = CMDTAG_DROP_EVENT_TRIGGER;
2624 tag = CMDTAG_DROP_RULE;
2627 tag = CMDTAG_DROP_FOREIGN_DATA_WRAPPER;
2630 tag = CMDTAG_DROP_SERVER;
2633 tag = CMDTAG_DROP_OPERATOR_CLASS;
2636 tag = CMDTAG_DROP_OPERATOR_FAMILY;
2639 tag = CMDTAG_DROP_POLICY;
2642 tag = CMDTAG_DROP_TRANSFORM;
2645 tag = CMDTAG_DROP_ACCESS_METHOD;
2648 tag = CMDTAG_DROP_PUBLICATION;
2651 tag = CMDTAG_DROP_STATISTICS;
2654 tag = CMDTAG_UNKNOWN;
2658 case T_TruncateStmt:
2659 tag = CMDTAG_TRUNCATE_TABLE;
2663 tag = CMDTAG_COMMENT;
2666 case T_SecLabelStmt:
2667 tag = CMDTAG_SECURITY_LABEL;
2685 case T_AlterObjectDependsStmt:
2689 case T_AlterObjectSchemaStmt:
2693 case T_AlterOwnerStmt:
2697 case T_AlterTableMoveAllStmt:
2701 case T_AlterTableStmt:
2705 case T_AlterDomainStmt:
2706 tag = CMDTAG_ALTER_DOMAIN;
2709 case T_AlterFunctionStmt:
2713 tag = CMDTAG_ALTER_FUNCTION;
2716 tag = CMDTAG_ALTER_PROCEDURE;
2719 tag = CMDTAG_ALTER_ROUTINE;
2722 tag = CMDTAG_UNKNOWN;
2730 tag = (
stmt->is_grant) ? CMDTAG_GRANT : CMDTAG_REVOKE;
2734 case T_GrantRoleStmt:
2738 tag = (
stmt->is_grant) ? CMDTAG_GRANT_ROLE : CMDTAG_REVOKE_ROLE;
2742 case T_AlterDefaultPrivilegesStmt:
2743 tag = CMDTAG_ALTER_DEFAULT_PRIVILEGES;
2750 tag = CMDTAG_CREATE_AGGREGATE;
2753 tag = CMDTAG_CREATE_OPERATOR;
2756 tag = CMDTAG_CREATE_TYPE;
2759 tag = CMDTAG_CREATE_TEXT_SEARCH_PARSER;
2762 tag = CMDTAG_CREATE_TEXT_SEARCH_DICTIONARY;
2765 tag = CMDTAG_CREATE_TEXT_SEARCH_TEMPLATE;
2768 tag = CMDTAG_CREATE_TEXT_SEARCH_CONFIGURATION;
2771 tag = CMDTAG_CREATE_COLLATION;
2774 tag = CMDTAG_CREATE_ACCESS_METHOD;
2777 tag = CMDTAG_UNKNOWN;
2781 case T_CompositeTypeStmt:
2782 tag = CMDTAG_CREATE_TYPE;
2785 case T_CreateEnumStmt:
2786 tag = CMDTAG_CREATE_TYPE;
2789 case T_CreateRangeStmt:
2790 tag = CMDTAG_CREATE_TYPE;
2793 case T_AlterEnumStmt:
2794 tag = CMDTAG_ALTER_TYPE;
2798 tag = CMDTAG_CREATE_VIEW;
2801 case T_CreateFunctionStmt:
2803 tag = CMDTAG_CREATE_PROCEDURE;
2805 tag = CMDTAG_CREATE_FUNCTION;
2809 tag = CMDTAG_CREATE_INDEX;
2813 tag = CMDTAG_CREATE_RULE;
2816 case T_CreateSeqStmt:
2817 tag = CMDTAG_CREATE_SEQUENCE;
2820 case T_AlterSeqStmt:
2821 tag = CMDTAG_ALTER_SEQUENCE;
2828 case T_CreatedbStmt:
2829 tag = CMDTAG_CREATE_DATABASE;
2832 case T_AlterDatabaseStmt:
2833 case T_AlterDatabaseRefreshCollStmt:
2834 case T_AlterDatabaseSetStmt:
2835 tag = CMDTAG_ALTER_DATABASE;
2839 tag = CMDTAG_DROP_DATABASE;
2843 tag = CMDTAG_NOTIFY;
2847 tag = CMDTAG_LISTEN;
2850 case T_UnlistenStmt:
2851 tag = CMDTAG_UNLISTEN;
2863 tag = CMDTAG_CLUSTER;
2867 if (((
VacuumStmt *) parsetree)->is_vacuumcmd)
2868 tag = CMDTAG_VACUUM;
2870 tag = CMDTAG_ANALYZE;
2874 tag = CMDTAG_EXPLAIN;
2877 case T_CreateTableAsStmt:
2882 tag = CMDTAG_SELECT_INTO;
2884 tag = CMDTAG_CREATE_TABLE_AS;
2887 tag = CMDTAG_CREATE_MATERIALIZED_VIEW;
2890 tag = CMDTAG_UNKNOWN;
2894 case T_RefreshMatViewStmt:
2895 tag = CMDTAG_REFRESH_MATERIALIZED_VIEW;
2898 case T_AlterSystemStmt:
2899 tag = CMDTAG_ALTER_SYSTEM;
2902 case T_VariableSetStmt:
2916 tag = CMDTAG_UNKNOWN;
2920 case T_VariableShowStmt:
2928 tag = CMDTAG_DISCARD_ALL;
2931 tag = CMDTAG_DISCARD_PLANS;
2934 tag = CMDTAG_DISCARD_TEMP;
2937 tag = CMDTAG_DISCARD_SEQUENCES;
2940 tag = CMDTAG_UNKNOWN;
2944 case T_CreateTransformStmt:
2945 tag = CMDTAG_CREATE_TRANSFORM;
2948 case T_CreateTrigStmt:
2949 tag = CMDTAG_CREATE_TRIGGER;
2952 case T_CreateEventTrigStmt:
2953 tag = CMDTAG_CREATE_EVENT_TRIGGER;
2956 case T_AlterEventTrigStmt:
2957 tag = CMDTAG_ALTER_EVENT_TRIGGER;
2960 case T_CreatePLangStmt:
2961 tag = CMDTAG_CREATE_LANGUAGE;
2964 case T_CreateRoleStmt:
2965 tag = CMDTAG_CREATE_ROLE;
2968 case T_AlterRoleStmt:
2969 tag = CMDTAG_ALTER_ROLE;
2972 case T_AlterRoleSetStmt:
2973 tag = CMDTAG_ALTER_ROLE;
2976 case T_DropRoleStmt:
2977 tag = CMDTAG_DROP_ROLE;
2980 case T_DropOwnedStmt:
2981 tag = CMDTAG_DROP_OWNED;
2984 case T_ReassignOwnedStmt:
2985 tag = CMDTAG_REASSIGN_OWNED;
2989 tag = CMDTAG_LOCK_TABLE;
2992 case T_ConstraintsSetStmt:
2993 tag = CMDTAG_SET_CONSTRAINTS;
2996 case T_CheckPointStmt:
2997 tag = CMDTAG_CHECKPOINT;
3001 tag = CMDTAG_REINDEX;
3004 case T_CreateConversionStmt:
3005 tag = CMDTAG_CREATE_CONVERSION;
3008 case T_CreateCastStmt:
3009 tag = CMDTAG_CREATE_CAST;
3012 case T_CreateOpClassStmt:
3013 tag = CMDTAG_CREATE_OPERATOR_CLASS;
3016 case T_CreateOpFamilyStmt:
3017 tag = CMDTAG_CREATE_OPERATOR_FAMILY;
3020 case T_AlterOpFamilyStmt:
3021 tag = CMDTAG_ALTER_OPERATOR_FAMILY;
3024 case T_AlterOperatorStmt:
3025 tag = CMDTAG_ALTER_OPERATOR;
3028 case T_AlterTypeStmt:
3029 tag = CMDTAG_ALTER_TYPE;
3032 case T_AlterTSDictionaryStmt:
3033 tag = CMDTAG_ALTER_TEXT_SEARCH_DICTIONARY;
3036 case T_AlterTSConfigurationStmt:
3037 tag = CMDTAG_ALTER_TEXT_SEARCH_CONFIGURATION;
3040 case T_CreatePolicyStmt:
3041 tag = CMDTAG_CREATE_POLICY;
3044 case T_AlterPolicyStmt:
3045 tag = CMDTAG_ALTER_POLICY;
3048 case T_CreateAmStmt:
3049 tag = CMDTAG_CREATE_ACCESS_METHOD;
3052 case T_CreatePublicationStmt:
3053 tag = CMDTAG_CREATE_PUBLICATION;
3056 case T_AlterPublicationStmt:
3057 tag = CMDTAG_ALTER_PUBLICATION;
3060 case T_CreateSubscriptionStmt:
3061 tag = CMDTAG_CREATE_SUBSCRIPTION;
3064 case T_AlterSubscriptionStmt:
3065 tag = CMDTAG_ALTER_SUBSCRIPTION;
3068 case T_DropSubscriptionStmt:
3069 tag = CMDTAG_DROP_SUBSCRIPTION;
3072 case T_AlterCollationStmt:
3073 tag = CMDTAG_ALTER_COLLATION;
3077 tag = CMDTAG_PREPARE;
3081 tag = CMDTAG_EXECUTE;
3084 case T_CreateStatsStmt:
3085 tag = CMDTAG_CREATE_STATISTICS;
3088 case T_AlterStatsStmt:
3089 tag = CMDTAG_ALTER_STATISTICS;
3092 case T_DeallocateStmt:
3096 if (
stmt->name == NULL)
3097 tag = CMDTAG_DEALLOCATE_ALL;
3099 tag = CMDTAG_DEALLOCATE;
3108 switch (
stmt->commandType)
3123 tag = CMDTAG_SELECT_FOR_KEY_SHARE;
3126 tag = CMDTAG_SELECT_FOR_SHARE;
3129 tag = CMDTAG_SELECT_FOR_NO_KEY_UPDATE;
3132 tag = CMDTAG_SELECT_FOR_UPDATE;
3135 tag = CMDTAG_SELECT;
3140 tag = CMDTAG_SELECT;
3143 tag = CMDTAG_UPDATE;
3146 tag = CMDTAG_INSERT;
3149 tag = CMDTAG_DELETE;
3159 (
int)
stmt->commandType);
3160 tag = CMDTAG_UNKNOWN;
3171 switch (
stmt->commandType)
3186 tag = CMDTAG_SELECT_FOR_KEY_SHARE;
3189 tag = CMDTAG_SELECT_FOR_SHARE;
3192 tag = CMDTAG_SELECT_FOR_NO_KEY_UPDATE;
3195 tag = CMDTAG_SELECT_FOR_UPDATE;
3198 tag = CMDTAG_UNKNOWN;
3203 tag = CMDTAG_SELECT;
3206 tag = CMDTAG_UPDATE;
3209 tag = CMDTAG_INSERT;
3212 tag = CMDTAG_DELETE;
3222 (
int)
stmt->commandType);
3223 tag = CMDTAG_UNKNOWN;
3232 tag = CMDTAG_UNKNOWN;
3276 case T_PLAssignStmt:
3281 case T_TransactionStmt:
3285 case T_DeclareCursorStmt:
3289 case T_ClosePortalStmt:
3297 case T_CreateSchemaStmt:
3302 case T_CreateForeignTableStmt:
3306 case T_CreateTableSpaceStmt:
3307 case T_DropTableSpaceStmt:
3308 case T_AlterTableSpaceOptionsStmt:
3312 case T_CreateExtensionStmt:
3313 case T_AlterExtensionStmt:
3314 case T_AlterExtensionContentsStmt:
3318 case T_CreateFdwStmt:
3319 case T_AlterFdwStmt:
3320 case T_CreateForeignServerStmt:
3321 case T_AlterForeignServerStmt:
3322 case T_CreateUserMappingStmt:
3323 case T_AlterUserMappingStmt:
3324 case T_DropUserMappingStmt:
3325 case T_ImportForeignSchemaStmt:
3333 case T_TruncateStmt:
3341 case T_SecLabelStmt:
3346 if (((
CopyStmt *) parsetree)->is_from)
3368 if (
ps &&
ps->plansource->raw_parse_tree)
3375 case T_DeallocateStmt:
3383 case T_AlterObjectDependsStmt:
3387 case T_AlterObjectSchemaStmt:
3391 case T_AlterOwnerStmt:
3395 case T_AlterOperatorStmt:
3399 case T_AlterTypeStmt:
3403 case T_AlterTableMoveAllStmt:
3404 case T_AlterTableStmt:
3408 case T_AlterDomainStmt:
3416 case T_GrantRoleStmt:
3420 case T_AlterDefaultPrivilegesStmt:
3428 case T_CompositeTypeStmt:
3432 case T_CreateEnumStmt:
3436 case T_CreateRangeStmt:
3440 case T_AlterEnumStmt:
3448 case T_CreateFunctionStmt:
3452 case T_AlterFunctionStmt:
3464 case T_CreateSeqStmt:
3468 case T_AlterSeqStmt:
3476 case T_CreatedbStmt:
3480 case T_AlterDatabaseStmt:
3481 case T_AlterDatabaseRefreshCollStmt:
3482 case T_AlterDatabaseSetStmt:
3498 case T_UnlistenStmt:
3525 foreach(lc,
stmt->options)
3529 if (strcmp(opt->
defname,
"analyze") == 0)
3541 case T_CreateTableAsStmt:
3545 case T_RefreshMatViewStmt:
3549 case T_AlterSystemStmt:
3553 case T_VariableSetStmt:
3557 case T_VariableShowStmt:
3565 case T_CreateTrigStmt:
3569 case T_CreateEventTrigStmt:
3573 case T_AlterEventTrigStmt:
3577 case T_CreatePLangStmt:
3581 case T_CreateDomainStmt:
3585 case T_CreateRoleStmt:
3589 case T_AlterRoleStmt:
3593 case T_AlterRoleSetStmt:
3597 case T_DropRoleStmt:
3601 case T_DropOwnedStmt:
3605 case T_ReassignOwnedStmt:
3613 case T_ConstraintsSetStmt:
3617 case T_CheckPointStmt:
3625 case T_CreateConversionStmt:
3629 case T_CreateCastStmt:
3633 case T_CreateOpClassStmt:
3637 case T_CreateOpFamilyStmt:
3641 case T_CreateTransformStmt:
3645 case T_AlterOpFamilyStmt:
3649 case T_CreatePolicyStmt:
3653 case T_AlterPolicyStmt:
3657 case T_AlterTSDictionaryStmt:
3661 case T_AlterTSConfigurationStmt:
3665 case T_CreateAmStmt:
3669 case T_CreatePublicationStmt:
3673 case T_AlterPublicationStmt:
3677 case T_CreateSubscriptionStmt:
3681 case T_AlterSubscriptionStmt:
3685 case T_DropSubscriptionStmt:
3689 case T_CreateStatsStmt:
3693 case T_AlterStatsStmt:
3697 case T_AlterCollationStmt:
3706 switch (
stmt->commandType)
3725 (
int)
stmt->commandType);
3737 switch (
stmt->commandType)
3756 (
int)
stmt->commandType);
bool has_privs_of_role(Oid member, Oid role)
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)
PreparedStatement * FetchPreparedStatement(const char *stmt_name, bool throwError)
TupleDesc FetchPreparedStatementResultDesc(PreparedStatement *stmt)
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 RequestCheckpoint(int flags)
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 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)
elog(ERROR, "%s: %s", p2, msg)
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)
void ExecReindex(ParseState *pstate, ReindexStmt *stmt, bool isTopLevel)
ObjectAddress DefineIndex(Oid relationId, 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)
Assert(fmt[strlen(fmt) - 1] !='\n')
List * list_delete_first(List *list)
void list_free(List *list)
List * list_concat(List *list1, const List *list2)
void LockTableCommand(LockStmt *lockstmt)
#define ShareUpdateExclusiveLock
char get_rel_relkind(Oid relid)
ObjectAddress ExecRefreshMatView(RefreshMatViewStmt *stmt, const char *queryString, ParamListInfo params, 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)
CreateStatsStmt * transformStatsStmt(Oid relid, CreateStatsStmt *stmt, const char *queryString)
List * expandTableLikeClause(RangeVar *heapRel, TableLikeClause *table_like_clause)
IndexStmt * transformIndexStmt(Oid relid, IndexStmt *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)
void check_stack_depth(void)
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 *namspace, char *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)
ObjectAddress DefineSequence(ParseState *pstate, CreateSeqStmt *seq)
ObjectAddress AlterSequence(ParseState *pstate, AlterSeqStmt *stmt)
ObjectAddress AlterStatistics(AlterStatsStmt *stmt)
ObjectAddress CreateStatistics(CreateStatsStmt *stmt)
QueryEnvironment * queryEnv
QueryEnvironment * p_queryEnv
const char * p_sourcetext
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 DefineDomain(CreateDomainStmt *stmt)
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 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)
Query * UtilityContainsQuery(Node *parsetree)
ProcessUtility_hook_type ProcessUtility_hook
void PreventCommandDuringRecovery(const char *cmdname)
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 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)
#define CHECKPOINT_IMMEDIATE