78 const char *queryString,
390 elog(
ERROR,
"unrecognized TransactionStmtKind: %d",
396 elog(
ERROR,
"unrecognized node type: %d",
415 errmsg(
"cannot execute %s in a read-only transaction",
433 errmsg(
"cannot execute %s during a parallel operation",
452 errmsg(
"cannot execute %s during recovery",
470 errmsg(
"cannot execute %s within security-restricted operation",
505 const char *queryString,
524 (*ProcessUtility_hook) (pstmt, queryString,
readOnlyTree,
525 context, params, queryEnv,
529 context, params, queryEnv,
549 const char *queryString,
618 foreach(
lc,
stmt->options)
626 else if (
strcmp(item->
defname,
"transaction_read_only") == 0)
630 else if (
strcmp(item->
defname,
"transaction_deferrable") == 0)
829 errmsg(
"cannot execute %s within a background process",
841 if (
stmt->conditionname)
965 context, params, queryEnv,
978 context, params, queryEnv,
991 context, params, queryEnv,
1004 context, params, queryEnv,
1017 context, params, queryEnv,
1030 context, params, queryEnv,
1043 context, params, queryEnv,
1056 context, params, queryEnv,
1073 context, params, queryEnv,
1096 const char *queryString,
1153 while (stmts !=
NIL)
1286 foreach(cell,
atstmt->cmds)
1295 "ALTER TABLE ... DETACH CONCURRENTLY");
1331 (
errmsg(
"relation \"%s\" does not exist, skipping",
1332 atstmt->relation->relname)));
1347 switch (
stmt->subtype)
1388 elog(
ERROR,
"unrecognized alter domain type: %d",
1389 (
int)
stmt->subtype);
1448 stmt->if_not_exists);
1451 elog(
ERROR,
"unrecognized define stmt type: %d",
1466 if (
stmt->concurrent)
1468 "CREATE INDEX CONCURRENTLY");
1498 if (
stmt->relation->inh &&
1514 elog(
ERROR,
"unexpected relkind \"%c\" on partition \"%s\"",
1515 relkind,
stmt->relation->relname);
1521 errmsg(
"cannot create unique index on partitioned table \"%s\"",
1522 stmt->relation->relname),
1523 errdetail(
"Table \"%s\" contains partitions that are foreign tables.",
1524 stmt->relation->relname)));
1683 params, queryEnv, qc);
1898 errmsg(
"CREATE STATISTICS only supports relation names in the FROM clause")));
1929 elog(
ERROR,
"unrecognized node type: %d",
2010 switch (
stmt->removeType)
2013 if (
stmt->concurrent)
2015 "DROP INDEX CONCURRENTLY");
2568 switch (((
DropStmt *) parsetree)->removeType)
2888 if (((
VacuumStmt *) parsetree)->is_vacuumcmd)
3148 switch (
stmt->commandType)
3199 (
int)
stmt->commandType);
3211 switch (
stmt->commandType)
3262 (
int)
stmt->commandType);
3386 if (((
CopyStmt *) parsetree)->is_from)
3408 if (
ps &&
ps->plansource->raw_parse_tree)
3565 foreach(
lc,
stmt->options)
3758 switch (
stmt->commandType)
3777 (
int)
stmt->commandType);
3789 switch (
stmt->commandType)
3808 (
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 Assert(condition)
#define OidIsValid(objectId)
void ExecCheckpoint(ParseState *pstate, CheckPointStmt *stmt)
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 errcode(int sqlerrcode)
int errdetail(const char *fmt,...) pg_attribute_printf(1
#define ereport(elevel,...)
void EventTriggerUndoInhibitCommandCollection(void)
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 EventTriggerAlterTableStart(const Node *parsetree)
void EventTriggerAlterTableEnd(void)
void EventTriggerCollectAlterDefPrivs(const AlterDefaultPrivilegesStmt *stmt)
void EventTriggerDDLCommandEnd(Node *parsetree)
void EventTriggerCollectSimpleCommand(ObjectAddress address, ObjectAddress secondaryObject, const 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, const ReindexStmt *stmt, bool isTopLevel)
ObjectAddress DefineIndex(ParseState *pstate, Oid tableId, const 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 AlterPropGraph(ParseState *pstate, const AlterPropGraphStmt *stmt)
ObjectAddress CreatePropGraph(ParseState *pstate, const CreatePropGraphStmt *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
void ExecRepack(ParseState *pstate, RepackStmt *stmt, bool isTopLevel)
ObjectAddress DefineRule(RuleStmt *stmt, const char *queryString)
Oid CreateSchemaCommand(ParseState *pstate, CreateSchemaStmt *stmt, 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(const 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)
TupleDesc WaitStmtResultDesc(WaitStmt *stmt)
void ExecWaitStmt(ParseState *pstate, WaitStmt *stmt, bool isTopLevel, DestReceiver *dest)
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)