195 errmsg(
"relation \"%s\" cannot be the target of a modifying statement",
217 relation->
alias, inh,
false);
452 elog(
ERROR,
"unexpected non-SELECT command in subquery in FROM");
543 fc->agg_order ==
NIL &&
548 !
fc->func_variadic &&
553 foreach(
lc2,
fc->args)
573 errmsg(
"set-returning functions must appear at top level of FROM"),
601 errmsg(
"set-returning functions must appear at top level of FROM"),
613 errmsg(
"multiple column definition lists are not allowed for the same function"),
646 errmsg(
"ROWS FROM() with multiple functions cannot have a column definition list"),
647 errhint(
"Put a separate column definition list for each function inside ROWS FROM()."),
653 errmsg(
"UNNEST() with multiple arguments cannot have a column definition list"),
654 errhint(
"Use separate UNNEST() calls inside ROWS FROM(), and attach a column definition list to each one."),
661 errmsg(
"WITH ORDINALITY cannot be used with a column definition list"),
662 errhint(
"Put the column definition list inside ROWS FROM()."),
739 tf->ordinalitycol = -1;
745 foreach(
col,
rtf->columns)
754 tf->colnames =
lappend(tf->colnames,
761 if (
rawc->for_ordinality)
763 if (tf->ordinalitycol != -1)
766 errmsg(
"only one FOR ORDINALITY column is allowed"),
771 tf->ordinalitycol = colno;
775 if (
rawc->typeName->setof)
778 errmsg(
"column \"%s\" cannot be declared SETOF",
787 tf->coltypmods =
lappend_int(tf->coltypmods, typmod);
804 if (
rawc->coldefexpr)
817 tf->coldefexprs =
lappend(tf->coldefexprs, coldefexpr);
819 if (
rawc->is_not_null)
823 for (
j = 0;
j < colno;
j++)
827 errmsg(
"column name \"%s\" is not unique",
830 names[colno] =
rawc->colname;
837 if (
rtf->namespaces !=
NIL)
845 foreach(ns,
rtf->namespaces)
860 foreach(
lc2, ns_names)
869 errmsg(
"namespace name \"%s\" is not unique",
879 errmsg(
"only one default namespace is allowed"),
889 tf->ns_uris = ns_uris;
890 tf->ns_names = ns_names;
927 errmsg(
"\"%s\" is not a property graph",
977 foreach(
lc,
rgt->columns)
996 errmsg(
"complex graph table column must specify an explicit column name"),
1005 columns =
lappend(columns, te);
1031 errmsg(
"subqueries within GRAPH_TABLE reference are not supported")));
1069 errmsg(
"tablesample method %s does not exist",
1077 errmsg(
"function %s must return type %s",
1091 errmsg_plural(
"tablesample method %s requires %d argument, not %d",
1092 "tablesample method %s requires %d arguments, not %d",
1122 if (!
tsm->repeatable_across_queries)
1125 errmsg(
"tablesample method %s does not support REPEATABLE",
1282 rte = (*top_nsitem)->p_rte;
1290 errmsg(
"TABLESAMPLE clause can only be applied to tables and materialized views"),
1427 if (
j->join_using_alias)
1428 j->join_using_alias->colnames =
j->usingClause;
1477 errmsg(
"column name \"%s\" appears more than once in USING clause",
1492 errmsg(
"common column name \"%s\" appears more than once in left table",
1501 errmsg(
"column \"%s\" specified in USING clause does not exist in left table",
1516 errmsg(
"common column name \"%s\" appears more than once in right table",
1525 errmsg(
"column \"%s\" specified in USING clause does not exist in right table",
1578 switch (
j->jointype)
1594 elog(
ERROR,
"unrecognized join type: %d",
1682 nscol->p_varattnosyn = k + 1;
1697 j->join_using_alias,
1720 if (
j->join_using_alias)
1725 jnsitem->p_names =
j->join_using_alias;
1732 jnsitem->p_rel_visible =
true;
1733 jnsitem->p_cols_visible =
true;
1734 jnsitem->p_lateral_only =
false;
1753 if (
j->alias !=
NULL)
1763 nsitem->p_cols_visible =
true;
1764 nsitem->p_lateral_only =
false;
1765 nsitem->p_lateral_ok =
true;
1800 var->varnosyn =
nscol->p_varnosyn;
1801 var->varattnosyn =
nscol->p_varattnosyn;
1902 elog(
ERROR,
"unrecognized join type: %d", (
int) jointype);
1967 foreach(
lc,
namespace)
1984 foreach(
lc,
namespace)
2055 errmsg(
"row count cannot be null in FETCH FIRST ... WITH TIES clause")));
2080 errmsg(
"argument of %s must not contain variables",
2110 errmsg(
"aggregate functions are not allowed in %s",
2119 errmsg(
"window functions are not allowed in %s",
2131 elog(
ERROR,
"unexpected exprKind in checkTargetlistEntrySQL92");
2202 int location = ((
ColumnRef *) node)->location;
2234 if (!
tle->resjunk &&
2245 errmsg(
"%s \"%s\" is ambiguous",
2273 errmsg(
"non-integer constant in %s",
2295 errmsg(
"%s position %d is not in select list",
2443 foreach(l2,
gset->content)
2473 foreach(l, (
List *) expr)
2517 List **targetlist,
List *sortClause,
2530 if (
tle->ressortgroupref > 0)
2551 return tle->ressortgroupref;
2572 foreach(
sl, sortClause)
2576 if (
sc->tleSortGroupRef ==
tle->ressortgroupref)
2581 grpc->nulls_first =
false;
2602 return tle->ressortgroupref;
2625 List **targetlist,
List *sortClause,
2678 List **targetlist,
List *sortClause,
2686 foreach(
gl,
gset->content)
2694 targetlist, sortClause,
2707 targetlist, sortClause,
2734 errmsg(
"CUBE is limited to 12 elements"),
2781 List **targetlist,
List *sortClause,
2836 targetlist, sortClause,
2845 targetlist, sortClause,
2864 *groupingSets = gsets;
2925 List *partitionClause;
2940 errmsg(
"window \"%s\" is already defined",
windef->name),
2952 errmsg(
"window \"%s\" does not exist",
2980 wc->refname =
windef->refname;
2998 if (partitionClause)
3001 errmsg(
"cannot override PARTITION BY clause of window \"%s\"",
3010 if (orderClause &&
refwc->orderClause)
3013 errmsg(
"cannot override ORDER BY clause of window \"%s\"",
3019 wc->copiedOrder =
false;
3024 wc->copiedOrder =
true;
3030 wc->copiedOrder =
false;
3043 errmsg(
"cannot copy window \"%s\" because it has a frame clause",
3049 errmsg(
"cannot copy window \"%s\" because it has a frame clause",
3051 errhint(
"Omit the parentheses in this OVER clause."),
3071 errmsg(
"RANGE with offset PRECEDING/FOLLOWING requires exactly one ORDER BY column"),
3080 elog(
ERROR,
"operator %u is not a valid ordering operator",
3084 wc->inRangeAsc = !
sortcl->reverse_sort;
3085 wc->inRangeNullsFirst =
sortcl->nulls_first;
3094 errmsg(
"GROUPS mode requires an ORDER BY clause"),
3101 &wc->startInRangeFunc,
3105 &wc->endInRangeFunc,
3155 foreach(
slitem, sortClause)
3164 errmsg(
"in an aggregate with DISTINCT, ORDER BY expressions must appear in argument list") :
3165 errmsg(
"for SELECT DISTINCT, ORDER BY expressions must appear in select list"),
3175 foreach(
tlitem, *targetlist)
3197 errmsg(
"an aggregate with DISTINCT must have at least one argument") :
3198 errmsg(
"SELECT DISTINCT must have at least one column")));
3218 List **targetlist,
List *sortClause)
3255 foreach(
lc, sortClause)
3264 errmsg(
"SELECT DISTINCT ON expressions must match initial ORDER BY expressions"),
3296 errmsg(
"SELECT DISTINCT ON expressions must match initial ORDER BY expressions"),
3335 elog(
ERROR,
"get_matching_location: no matching sortgroupref");
3374 errmsg(
"%s is not allowed in ON CONFLICT clause",
3380 errmsg(
"%s is not allowed in ON CONFLICT clause",
3381 "NULLS FIRST/LAST"),
3383 if (
ielem->opclassopts)
3386 errmsg(
"operator class options are not allowed in ON CONFLICT clause"),
3423 if (!
ielem->collation)
3429 if (!
ielem->opclass)
3433 ielem->opclass,
false);
3458 *arbiterWhere =
NULL;
3465 errmsg(
"ON CONFLICT DO %s requires inference specification or constraint name",
3467 errhint(
"For example, ON CONFLICT (column_name)."),
3478 errmsg(
"ON CONFLICT is not supported with system catalog tables"),
3486 errmsg(
"ON CONFLICT is not supported on table \"%s\" used as a catalog table",
3578 location =
sortby->location;
3584 switch (
sortby->sortby_dir)
3590 &sortop, &eqop,
NULL,
3597 NULL, &eqop, &sortop,
3617 errmsg(
"operator %s is not a valid ordering operator",
3619 errhint(
"Ordering operators must be \"<\" or \">\" members of btree operator families.")));
3646 sortcl->hashable = hashable;
3647 sortcl->reverse_sort = reverse;
3649 switch (
sortby->sortby_nulls)
3653 sortcl->nulls_first = reverse;
3656 sortcl->nulls_first =
true;
3659 sortcl->nulls_first =
false;
3662 elog(
ERROR,
"unrecognized sortby_nulls: %d",
3722 &sortop, &eqop,
NULL,
3729 grpcl->sortop = sortop;
3730 grpcl->reverse_sort =
false;
3732 grpcl->nulls_first =
false;
3733 grpcl->hashable = hashable;
3754 if (
tle->ressortgroupref)
3755 return tle->ressortgroupref;
3767 return tle->ressortgroupref;
3803 if (
scl->tleSortGroupRef ==
ref &&
3805 sortop ==
scl->sortop ||
3933 errmsg(
"RANGE with offset PRECEDING/FOLLOWING is not supported for column type %s",
3939 errmsg(
"RANGE with offset PRECEDING/FOLLOWING is not supported for column type %s and offset type %s",
3942 errhint(
"Cast the offset value to an appropriate type."),
3947 errmsg(
"RANGE with offset PRECEDING/FOLLOWING has multiple interpretations for column type %s and offset type %s",
3950 errhint(
"Cast the offset value to the exact intended type."),
bool bms_is_member(int x, const Bitmapset *a)
Bitmapset * bms_add_member(Bitmapset *a, int x)
Bitmapset * bms_add_members(Bitmapset *a, const Bitmapset *b)
#define Assert(condition)
#define OidIsValid(objectId)
bool IsCatalogRelation(Relation relation)
void ReleaseCatCacheList(CatCList *list)
int errcode(int sqlerrcode)
int errhint(const char *fmt,...) pg_attribute_printf(1
int int int errmsg_plural(const char *fmt_singular, const char *fmt_plural, unsigned long n,...) pg_attribute_printf(1
#define ereport(elevel,...)
bool equal(const void *a, const void *b)
#define palloc_object(type)
#define palloc_array(type, count)
#define palloc0_object(type)
static void * GETSTRUCT(const HeapTupleData *tuple)
List * lappend(List *list, void *datum)
List * list_concat(List *list1, const List *list2)
List * lappend_int(List *list, int datum)
List * lappend_oid(List *list, Oid datum)
bool list_member_int(const List *list, int datum)
List * list_truncate(List *list, int new_size)
char * get_propgraph_property_name(Oid propoid)
bool get_ordering_op_properties(Oid opno, Oid *opfamily, Oid *opcintype, CompareType *cmptype)
Oid get_equality_op_for_ordering_op(Oid opno, bool *reverse)
bool op_hashjoinable(Oid opno, Oid inputtype)
Oid get_typcollation(Oid typid)
Oid get_func_rettype(Oid funcid)
Oid get_commutator(Oid opno)
Expr * makeBoolExpr(BoolExprType boolop, List *args, int location)
A_Expr * makeSimpleA_Expr(A_Expr_Kind kind, char *name, Node *lexpr, Node *rexpr, int location)
Var * makeVar(int varno, AttrNumber varattno, Oid vartype, int32 vartypmod, Oid varcollid, Index varlevelsup)
RelabelType * makeRelabelType(Expr *arg, Oid rtype, int32 rtypmod, Oid rcollid, CoercionForm rformat)
FuncCall * makeFuncCall(List *name, List *args, CoercionForm funcformat, int location)
TargetEntry * makeTargetEntry(Expr *expr, AttrNumber resno, char *resname, bool resjunk)
GroupingSet * makeGroupingSet(GroupingSetKind kind, List *content, int location)
char * pstrdup(const char *in)
void pfree(void *pointer)
void * palloc0(Size size)
char * NameListToString(const List *names)
Oid exprType(const Node *expr)
int32 exprTypmod(const Node *expr)
Oid exprCollation(const Node *expr)
Node * strip_implicit_coercions(Node *node)
int exprLocation(const Node *expr)
#define IsA(nodeptr, _type_)
#define castNode(_type_, nodeptr)
Oid get_opclass_oid(Oid amID, List *opclassname, bool missing_ok)
Index assignSortGroupRef(TargetEntry *tle, List *tlist)
List * transformGroupClause(ParseState *pstate, List *grouplist, List **groupingSets, List **targetlist, List *sortClause, ParseExprKind exprKind, bool useSQL99)
static List * transformGroupClauseList(List **flatresult, ParseState *pstate, List *list, List **targetlist, List *sortClause, ParseExprKind exprKind, bool useSQL99, bool toplevel)
Node * transformWhereClause(ParseState *pstate, Node *clause, ParseExprKind exprKind, const char *constructName)
static Node * transformJoinOnClause(ParseState *pstate, JoinExpr *j, List *namespace)
static int extractRemainingColumns(ParseState *pstate, ParseNamespaceColumn *src_nscolumns, List *src_colnames, List **src_colnos, List **res_colnames, List **res_colvars, ParseNamespaceColumn *res_nscolumns)
static void setNamespaceLateralState(List *namespace, bool lateral_only, bool lateral_ok)
static Node * flatten_grouping_sets(Node *expr, bool toplevel, bool *hasGroupingSets)
static void markRelsAsNulledBy(ParseState *pstate, Node *n, int jindex)
static void checkExprIsVarFree(ParseState *pstate, Node *n, const char *constructName)
static ParseNamespaceItem * transformRangeSubselect(ParseState *pstate, RangeSubselect *r)
static Relation parserOpenPropGraph(ParseState *pstate, const RangeVar *relation, LOCKMODE lockmode)
List * transformSortClause(ParseState *pstate, List *orderlist, List **targetlist, ParseExprKind exprKind, bool useSQL99)
List * transformDistinctOnClause(ParseState *pstate, List *distinctlist, List **targetlist, List *sortClause)
static Var * buildVarFromNSColumn(ParseState *pstate, ParseNamespaceColumn *nscol)
static ParseNamespaceItem * transformRangeTableFunc(ParseState *pstate, RangeTableFunc *rtf)
List * transformWindowDefinitions(ParseState *pstate, List *windowdefs, List **targetlist)
static void setNamespaceColumnVisibility(List *namespace, bool cols_visible)
static int get_matching_location(int sortgroupref, List *sortgrouprefs, List *exprs)
void transformFromClause(ParseState *pstate, List *frmList)
static ParseNamespaceItem * getNSItemForSpecialRelationTypes(ParseState *pstate, RangeVar *rv)
static void checkTargetlistEntrySQL92(ParseState *pstate, TargetEntry *tle, ParseExprKind exprKind)
static Index transformGroupClauseExpr(List **flatresult, Bitmapset *seen_local, ParseState *pstate, Node *gexpr, List **targetlist, List *sortClause, ParseExprKind exprKind, bool useSQL99, bool toplevel)
static TableSampleClause * transformRangeTableSample(ParseState *pstate, RangeTableSample *rts)
static TargetEntry * findTargetlistEntrySQL99(ParseState *pstate, Node *node, List **tlist, ParseExprKind exprKind)
static ParseNamespaceItem * transformRangeGraphTable(ParseState *pstate, RangeGraphTable *rgt)
List * transformDistinctClause(ParseState *pstate, List **targetlist, List *sortClause, bool is_agg)
bool targetIsInSortList(TargetEntry *tle, Oid sortop, List *sortList)
Node * transformLimitClause(ParseState *pstate, Node *clause, ParseExprKind exprKind, const char *constructName, LimitOption limitOption)
static List * addTargetToGroupList(ParseState *pstate, TargetEntry *tle, List *grouplist, List *targetlist, int location)
static Node * transformFrameOffset(ParseState *pstate, int frameOptions, Oid rangeopfamily, Oid rangeopcintype, Oid *inRangeFunc, Node *clause)
static Node * transformGroupingSet(List **flatresult, ParseState *pstate, GroupingSet *gset, List **targetlist, List *sortClause, ParseExprKind exprKind, bool useSQL99, bool toplevel)
static List * resolve_unique_index_expr(ParseState *pstate, InferClause *infer, Relation heapRel)
void transformOnConflictArbiter(ParseState *pstate, OnConflictClause *onConflictClause, List **arbiterExpr, Node **arbiterWhere, Oid *constraint)
static Node * transformJoinUsingClause(ParseState *pstate, List *leftVars, List *rightVars)
int setTargetTable(ParseState *pstate, RangeVar *relation, bool inh, bool alsoSource, AclMode requiredPerms)
static Node * buildMergedJoinVar(ParseState *pstate, JoinType jointype, Var *l_colvar, Var *r_colvar)
static Node * transformFromClauseItem(ParseState *pstate, Node *n, ParseNamespaceItem **top_nsitem, List **namespace)
static ParseNamespaceItem * transformTableEntry(ParseState *pstate, RangeVar *r)
static TargetEntry * findTargetlistEntrySQL92(ParseState *pstate, Node *node, List **tlist, ParseExprKind exprKind)
static WindowClause * findWindowClause(List *wclist, const char *name)
List * addTargetToSortList(ParseState *pstate, TargetEntry *tle, List *sortlist, List *targetlist, SortBy *sortby)
static ParseNamespaceItem * transformRangeFunction(ParseState *pstate, RangeFunction *r)
Node * coerce_to_specific_type_typmod(ParseState *pstate, Node *node, Oid targetTypeId, int32 targetTypmod, const char *constructName)
int32 select_common_typmod(ParseState *pstate, List *exprs, Oid common_type)
Node * coerce_to_specific_type(ParseState *pstate, Node *node, Oid targetTypeId, const char *constructName)
Node * coerce_type(ParseState *pstate, Node *node, Oid inputTypeId, Oid targetTypeId, int32 targetTypeMod, CoercionContext ccontext, CoercionForm cformat, int location)
Node * coerce_to_boolean(ParseState *pstate, Node *node, const char *constructName)
Oid select_common_type(ParseState *pstate, List *exprs, const char *context, Node **which_expr)
bool can_coerce_type(int nargs, const Oid *input_typeids, const Oid *target_typeids, CoercionContext ccontext)
void assign_list_collations(ParseState *pstate, List *exprs)
void assign_expr_collations(ParseState *pstate, Node *expr)
Node * transformExpr(ParseState *pstate, Node *expr, ParseExprKind exprKind)
const char * ParseExprKindName(ParseExprKind exprKind)
Oid LookupFuncName(List *funcname, int nargs, const Oid *argtypes, bool missing_ok)
Node * transformGraphPattern(ParseState *pstate, GraphPattern *graph_pattern)
ParseNamespaceItem * transformJsonTable(ParseState *pstate, JsonTable *jt)
void cancel_parser_errposition_callback(ParseCallbackState *pcbstate)
int parser_errposition(ParseState *pstate, int location)
void setup_parser_errposition_callback(ParseCallbackState *pcbstate, ParseState *pstate, int location)
@ EXPR_KIND_INDEX_EXPRESSION
@ EXPR_KIND_WINDOW_FRAME_RANGE
@ EXPR_KIND_FROM_SUBSELECT
@ EXPR_KIND_WINDOW_FRAME_GROUPS
@ EXPR_KIND_INDEX_PREDICATE
@ EXPR_KIND_SELECT_TARGET
@ EXPR_KIND_FROM_FUNCTION
@ EXPR_KIND_WINDOW_PARTITION
@ EXPR_KIND_WINDOW_FRAME_ROWS
void get_sort_group_operators(Oid argtype, bool needLT, bool needEQ, bool needGT, Oid *ltOpr, Oid *eqOpr, Oid *gtOpr, bool *isHashable)
Oid compatible_oper_opid(List *op, Oid arg1, Oid arg2, bool noError)
void markNullableIfNeeded(ParseState *pstate, Var *var)
Relation parserOpenTable(ParseState *pstate, const RangeVar *relation, LOCKMODE lockmode)
CommonTableExpr * scanNameSpaceForCTE(ParseState *pstate, const char *refname, Index *ctelevelsup)
Node * colNameToVar(ParseState *pstate, const char *colname, bool localonly, int location)
ParseNamespaceItem * addRangeTableEntryForENR(ParseState *pstate, RangeVar *rv, bool inFromCl)
void markVarForSelectPriv(ParseState *pstate, Var *var)
ParseNamespaceItem * addRangeTableEntry(ParseState *pstate, RangeVar *relation, Alias *alias, bool inh, bool inFromCl)
ParseNamespaceItem * addRangeTableEntryForGraphTable(ParseState *pstate, Oid graphid, GraphPattern *graph_pattern, List *columns, List *colnames, Alias *alias, bool lateral, bool inFromCl)
ParseNamespaceItem * addRangeTableEntryForTableFunc(ParseState *pstate, TableFunc *tf, Alias *alias, bool lateral, bool inFromCl)
void addNSItemToQuery(ParseState *pstate, ParseNamespaceItem *nsitem, bool addToJoinList, bool addToRelNameSpace, bool addToVarNameSpace)
ParseNamespaceItem * addRangeTableEntryForRelation(ParseState *pstate, Relation rel, LOCKMODE lockmode, Alias *alias, bool inh, bool inFromCl)
bool scanNameSpaceForENR(ParseState *pstate, const char *refname)
ParseNamespaceItem * addRangeTableEntryForFunction(ParseState *pstate, List *funcnames, List *funcexprs, List *coldeflists, RangeFunction *rangefunc, bool lateral, bool inFromCl)
bool isLockedRefname(ParseState *pstate, const char *refname)
ParseNamespaceItem * addRangeTableEntryForSubquery(ParseState *pstate, Query *subquery, Alias *alias, bool lateral, bool inFromCl)
ParseNamespaceItem * addRangeTableEntryForCTE(ParseState *pstate, CommonTableExpr *cte, Index levelsup, RangeVar *rv, bool inFromCl)
ParseNamespaceItem * addRangeTableEntryForJoin(ParseState *pstate, List *colnames, ParseNamespaceColumn *nscolumns, JoinType jointype, int nummergedcols, List *aliasvars, List *leftcols, List *rightcols, Alias *join_using_alias, Alias *alias, bool inFromCl)
void checkNameSpaceConflicts(ParseState *pstate, List *namespace1, List *namespace2)
TargetEntry * transformTargetEntry(ParseState *pstate, Node *node, Node *expr, ParseExprKind exprKind, char *colname, bool resjunk)
char * FigureColname(Node *node)
void resolveTargetListUnknowns(ParseState *pstate, List *targetlist)
Oid LookupCollation(ParseState *pstate, List *collnames, int location)
void typenameTypeIdAndMod(ParseState *pstate, const TypeName *typeName, Oid *typeid_p, int32 *typmod_p)
#define FRAMEOPTION_END_OFFSET
#define FRAMEOPTION_START_OFFSET
#define FRAMEOPTION_RANGE
#define FRAMEOPTION_GROUPS
#define FRAMEOPTION_DEFAULTS
Query * parse_sub_analyze(Node *parseTree, ParseState *parentParseState, CommonTableExpr *parentCTE, bool locked_from_parent, bool resolve_unknowns)
List * SystemFuncName(char *name)
END_CATALOG_STRUCT typedef FormData_pg_amproc * Form_pg_amproc
Bitmapset * get_relation_constraint_attnos(Oid relid, const char *conname, bool missing_ok, Oid *constraintOid)
#define lfirst_node(type, lc)
static int list_length(const List *l)
#define linitial_node(type, l)
#define forboth(cell1, list1, cell2, list2)
static ListCell * list_nth_cell(const List *list, int n)
#define list_make1_int(x1)
#define list_make2(x1, x2)
static Datum ObjectIdGetDatum(Oid X)
static int fc(const char *x)
#define RelationGetRelid(relation)
#define RelationIsUsedAsCatalogTable(relation)
#define RelationGetRelationName(relation)
bool contain_windowfuncs(Node *node)
int locate_agg_of_level(Node *node, int levelsup)
bool contain_aggs_of_level(Node *node, int levelsup)
int locate_windowfunc(Node *node)
Relation relation_openrv(const RangeVar *relation, LOCKMODE lockmode)
void check_stack_depth(void)
RTEPermissionInfo * p_perminfo
ParseNamespaceItem * p_target_nsitem
ParseExprKind p_expr_kind
Relation p_target_relation
GraphTableParseState * p_graph_table_pstate
VarReturningType varreturningtype
#define SearchSysCacheList2(cacheId, key1, key2)
void table_close(Relation relation, LOCKMODE lockmode)
TsmRoutine * GetTsmRoutine(Oid tsmhandler)
TargetEntry * get_sortgroupclause_tle(SortGroupClause *sgClause, List *targetList)
TargetEntry * get_sortgroupref_tle(Index sortref, List *targetList)
Node * get_sortgroupclause_expr(SortGroupClause *sgClause, List *targetList)
String * makeString(char *str)
bool contain_vars_of_level(Node *node, int levelsup)
int locate_var_of_level(Node *node, int levelsup)