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);
1027 errmsg(
"subqueries within GRAPH_TABLE reference are not supported")));
1065 errmsg(
"tablesample method %s does not exist",
1073 errmsg(
"function %s must return type %s",
1087 errmsg_plural(
"tablesample method %s requires %d argument, not %d",
1088 "tablesample method %s requires %d arguments, not %d",
1118 if (!
tsm->repeatable_across_queries)
1121 errmsg(
"tablesample method %s does not support REPEATABLE",
1278 rte = (*top_nsitem)->p_rte;
1286 errmsg(
"TABLESAMPLE clause can only be applied to tables and materialized views"),
1423 if (
j->join_using_alias)
1424 j->join_using_alias->colnames =
j->usingClause;
1473 errmsg(
"column name \"%s\" appears more than once in USING clause",
1488 errmsg(
"common column name \"%s\" appears more than once in left table",
1497 errmsg(
"column \"%s\" specified in USING clause does not exist in left table",
1512 errmsg(
"common column name \"%s\" appears more than once in right table",
1521 errmsg(
"column \"%s\" specified in USING clause does not exist in right table",
1574 switch (
j->jointype)
1590 elog(
ERROR,
"unrecognized join type: %d",
1678 nscol->p_varattnosyn = k + 1;
1693 j->join_using_alias,
1716 if (
j->join_using_alias)
1721 jnsitem->p_names =
j->join_using_alias;
1728 jnsitem->p_rel_visible =
true;
1729 jnsitem->p_cols_visible =
true;
1730 jnsitem->p_lateral_only =
false;
1749 if (
j->alias !=
NULL)
1759 nsitem->p_cols_visible =
true;
1760 nsitem->p_lateral_only =
false;
1761 nsitem->p_lateral_ok =
true;
1796 var->varnosyn =
nscol->p_varnosyn;
1797 var->varattnosyn =
nscol->p_varattnosyn;
1898 elog(
ERROR,
"unrecognized join type: %d", (
int) jointype);
1963 foreach(
lc,
namespace)
1980 foreach(
lc,
namespace)
2051 errmsg(
"row count cannot be null in FETCH FIRST ... WITH TIES clause")));
2076 errmsg(
"argument of %s must not contain variables",
2106 errmsg(
"aggregate functions are not allowed in %s",
2115 errmsg(
"window functions are not allowed in %s",
2127 elog(
ERROR,
"unexpected exprKind in checkTargetlistEntrySQL92");
2198 int location = ((
ColumnRef *) node)->location;
2230 if (!
tle->resjunk &&
2241 errmsg(
"%s \"%s\" is ambiguous",
2269 errmsg(
"non-integer constant in %s",
2291 errmsg(
"%s position %d is not in select list",
2439 foreach(l2,
gset->content)
2469 foreach(l, (
List *) expr)
2513 List **targetlist,
List *sortClause,
2526 if (
tle->ressortgroupref > 0)
2547 return tle->ressortgroupref;
2568 foreach(
sl, sortClause)
2572 if (
sc->tleSortGroupRef ==
tle->ressortgroupref)
2577 grpc->nulls_first =
false;
2598 return tle->ressortgroupref;
2621 List **targetlist,
List *sortClause,
2674 List **targetlist,
List *sortClause,
2682 foreach(
gl,
gset->content)
2690 targetlist, sortClause,
2703 targetlist, sortClause,
2730 errmsg(
"CUBE is limited to 12 elements"),
2781 List **groupingSets,
2782 List **targetlist,
List *sortClause,
2894 targetlist, sortClause,
2903 targetlist, sortClause,
2922 *groupingSets = gsets;
2983 List *partitionClause;
2998 errmsg(
"window \"%s\" is already defined",
windef->name),
3010 errmsg(
"window \"%s\" does not exist",
3039 wc->refname =
windef->refname;
3057 if (partitionClause)
3060 errmsg(
"cannot override PARTITION BY clause of window \"%s\"",
3069 if (orderClause &&
refwc->orderClause)
3072 errmsg(
"cannot override ORDER BY clause of window \"%s\"",
3078 wc->copiedOrder =
false;
3083 wc->copiedOrder =
true;
3089 wc->copiedOrder =
false;
3102 errmsg(
"cannot copy window \"%s\" because it has a frame clause",
3108 errmsg(
"cannot copy window \"%s\" because it has a frame clause",
3110 errhint(
"Omit the parentheses in this OVER clause."),
3130 errmsg(
"RANGE with offset PRECEDING/FOLLOWING requires exactly one ORDER BY column"),
3139 elog(
ERROR,
"operator %u is not a valid ordering operator",
3143 wc->inRangeAsc = !
sortcl->reverse_sort;
3144 wc->inRangeNullsFirst =
sortcl->nulls_first;
3153 errmsg(
"GROUPS mode requires an ORDER BY clause"),
3160 &wc->startInRangeFunc,
3164 &wc->endInRangeFunc,
3214 foreach(
slitem, sortClause)
3223 errmsg(
"in an aggregate with DISTINCT, ORDER BY expressions must appear in argument list") :
3224 errmsg(
"for SELECT DISTINCT, ORDER BY expressions must appear in select list"),
3234 foreach(
tlitem, *targetlist)
3256 errmsg(
"an aggregate with DISTINCT must have at least one argument") :
3257 errmsg(
"SELECT DISTINCT must have at least one column")));
3277 List **targetlist,
List *sortClause)
3314 foreach(
lc, sortClause)
3323 errmsg(
"SELECT DISTINCT ON expressions must match initial ORDER BY expressions"),
3355 errmsg(
"SELECT DISTINCT ON expressions must match initial ORDER BY expressions"),
3394 elog(
ERROR,
"get_matching_location: no matching sortgroupref");
3433 errmsg(
"%s is not allowed in ON CONFLICT clause",
3439 errmsg(
"%s is not allowed in ON CONFLICT clause",
3440 "NULLS FIRST/LAST"),
3442 if (
ielem->opclassopts)
3445 errmsg(
"operator class options are not allowed in ON CONFLICT clause"),
3482 if (!
ielem->collation)
3488 if (!
ielem->opclass)
3492 ielem->opclass,
false);
3517 *arbiterWhere =
NULL;
3524 errmsg(
"ON CONFLICT DO %s requires inference specification or constraint name",
3526 errhint(
"For example, ON CONFLICT (column_name)."),
3537 errmsg(
"ON CONFLICT is not supported with system catalog tables"),
3545 errmsg(
"ON CONFLICT is not supported on table \"%s\" used as a catalog table",
3637 location =
sortby->location;
3643 switch (
sortby->sortby_dir)
3649 &sortop, &eqop,
NULL,
3656 NULL, &eqop, &sortop,
3676 errmsg(
"operator %s is not a valid ordering operator",
3678 errhint(
"Ordering operators must be \"<\" or \">\" members of btree operator families.")));
3705 sortcl->hashable = hashable;
3706 sortcl->reverse_sort = reverse;
3708 switch (
sortby->sortby_nulls)
3712 sortcl->nulls_first = reverse;
3715 sortcl->nulls_first =
true;
3718 sortcl->nulls_first =
false;
3721 elog(
ERROR,
"unrecognized sortby_nulls: %d",
3781 &sortop, &eqop,
NULL,
3788 grpcl->sortop = sortop;
3789 grpcl->reverse_sort =
false;
3791 grpcl->nulls_first =
false;
3792 grpcl->hashable = hashable;
3813 if (
tle->ressortgroupref)
3814 return tle->ressortgroupref;
3826 return tle->ressortgroupref;
3862 if (
scl->tleSortGroupRef ==
ref &&
3864 sortop ==
scl->sortop ||
3992 errmsg(
"RANGE with offset PRECEDING/FOLLOWING is not supported for column type %s",
3998 errmsg(
"RANGE with offset PRECEDING/FOLLOWING is not supported for column type %s and offset type %s",
4001 errhint(
"Cast the offset value to an appropriate type."),
4006 errmsg(
"RANGE with offset PRECEDING/FOLLOWING has multiple interpretations for column type %s and offset type %s",
4009 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)
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)
List * transformGroupClause(ParseState *pstate, List *grouplist, bool groupByAll, List **groupingSets, List **targetlist, List *sortClause, ParseExprKind exprKind, bool useSQL99)
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)
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)
#define foreach_ptr(type, var, lst)
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)