195 errmsg(
"relation \"%s\" cannot be the target of a modifying statement",
217 relation->
alias, inh,
false);
450 elog(
ERROR,
"unexpected non-SELECT command in subquery in FROM");
541 fc->agg_order ==
NIL &&
546 !
fc->func_variadic &&
551 foreach(
lc2,
fc->args)
571 errmsg(
"set-returning functions must appear at top level of FROM"),
599 errmsg(
"set-returning functions must appear at top level of FROM"),
611 errmsg(
"multiple column definition lists are not allowed for the same function"),
644 errmsg(
"ROWS FROM() with multiple functions cannot have a column definition list"),
645 errhint(
"Put a separate column definition list for each function inside ROWS FROM()."),
651 errmsg(
"UNNEST() with multiple arguments cannot have a column definition list"),
652 errhint(
"Use separate UNNEST() calls inside ROWS FROM(), and attach a column definition list to each one."),
659 errmsg(
"WITH ORDINALITY cannot be used with a column definition list"),
660 errhint(
"Put the column definition list inside ROWS FROM()."),
737 tf->ordinalitycol = -1;
743 foreach(
col,
rtf->columns)
752 tf->colnames =
lappend(tf->colnames,
759 if (
rawc->for_ordinality)
761 if (tf->ordinalitycol != -1)
764 errmsg(
"only one FOR ORDINALITY column is allowed"),
769 tf->ordinalitycol = colno;
773 if (
rawc->typeName->setof)
776 errmsg(
"column \"%s\" cannot be declared SETOF",
785 tf->coltypmods =
lappend_int(tf->coltypmods, typmod);
802 if (
rawc->coldefexpr)
815 tf->coldefexprs =
lappend(tf->coldefexprs, coldefexpr);
817 if (
rawc->is_not_null)
821 for (
j = 0;
j < colno;
j++)
825 errmsg(
"column name \"%s\" is not unique",
828 names[colno] =
rawc->colname;
835 if (
rtf->namespaces !=
NIL)
843 foreach(ns,
rtf->namespaces)
858 foreach(
lc2, ns_names)
867 errmsg(
"namespace name \"%s\" is not unique",
877 errmsg(
"only one default namespace is allowed"),
887 tf->ns_uris = ns_uris;
888 tf->ns_names = ns_names;
925 errmsg(
"\"%s\" is not a property graph",
975 foreach(
lc,
rgt->columns)
994 errmsg(
"complex graph table column must specify an explicit column name"),
1003 columns =
lappend(columns, te);
1025 errmsg(
"subqueries within GRAPH_TABLE reference are not supported")));
1063 errmsg(
"tablesample method %s does not exist",
1071 errmsg(
"function %s must return type %s",
1085 errmsg_plural(
"tablesample method %s requires %d argument, not %d",
1086 "tablesample method %s requires %d arguments, not %d",
1116 if (!
tsm->repeatable_across_queries)
1119 errmsg(
"tablesample method %s does not support REPEATABLE",
1276 rte = (*top_nsitem)->p_rte;
1284 errmsg(
"TABLESAMPLE clause can only be applied to tables and materialized views"),
1421 if (
j->join_using_alias)
1422 j->join_using_alias->colnames =
j->usingClause;
1471 errmsg(
"column name \"%s\" appears more than once in USING clause",
1486 errmsg(
"common column name \"%s\" appears more than once in left table",
1495 errmsg(
"column \"%s\" specified in USING clause does not exist in left table",
1510 errmsg(
"common column name \"%s\" appears more than once in right table",
1519 errmsg(
"column \"%s\" specified in USING clause does not exist in right table",
1572 switch (
j->jointype)
1588 elog(
ERROR,
"unrecognized join type: %d",
1676 nscol->p_varattnosyn = k + 1;
1691 j->join_using_alias,
1714 if (
j->join_using_alias)
1719 jnsitem->p_names =
j->join_using_alias;
1726 jnsitem->p_rel_visible =
true;
1727 jnsitem->p_cols_visible =
true;
1728 jnsitem->p_lateral_only =
false;
1747 if (
j->alias !=
NULL)
1757 nsitem->p_cols_visible =
true;
1758 nsitem->p_lateral_only =
false;
1759 nsitem->p_lateral_ok =
true;
1794 var->varnosyn =
nscol->p_varnosyn;
1795 var->varattnosyn =
nscol->p_varattnosyn;
1896 elog(
ERROR,
"unrecognized join type: %d", (
int) jointype);
1961 foreach(
lc,
namespace)
1978 foreach(
lc,
namespace)
2049 errmsg(
"row count cannot be null in FETCH FIRST ... WITH TIES clause")));
2074 errmsg(
"argument of %s must not contain variables",
2104 errmsg(
"aggregate functions are not allowed in %s",
2113 errmsg(
"window functions are not allowed in %s",
2125 elog(
ERROR,
"unexpected exprKind in checkTargetlistEntrySQL92");
2196 int location = ((
ColumnRef *) node)->location;
2228 if (!
tle->resjunk &&
2239 errmsg(
"%s \"%s\" is ambiguous",
2267 errmsg(
"non-integer constant in %s",
2289 errmsg(
"%s position %d is not in select list",
2437 foreach(l2,
gset->content)
2467 foreach(l, (
List *) expr)
2511 List **targetlist,
List *sortClause,
2524 if (
tle->ressortgroupref > 0)
2545 return tle->ressortgroupref;
2566 foreach(
sl, sortClause)
2570 if (
sc->tleSortGroupRef ==
tle->ressortgroupref)
2575 grpc->nulls_first =
false;
2596 return tle->ressortgroupref;
2619 List **targetlist,
List *sortClause,
2672 List **targetlist,
List *sortClause,
2680 foreach(
gl,
gset->content)
2688 targetlist, sortClause,
2701 targetlist, sortClause,
2728 errmsg(
"CUBE is limited to 12 elements"),
2779 List **groupingSets,
2780 List **targetlist,
List *sortClause,
2892 targetlist, sortClause,
2901 targetlist, sortClause,
2920 *groupingSets = gsets;
2981 List *partitionClause;
2996 errmsg(
"window \"%s\" is already defined",
windef->name),
3008 errmsg(
"window \"%s\" does not exist",
3037 wc->refname =
windef->refname;
3055 if (partitionClause)
3058 errmsg(
"cannot override PARTITION BY clause of window \"%s\"",
3067 if (orderClause &&
refwc->orderClause)
3070 errmsg(
"cannot override ORDER BY clause of window \"%s\"",
3076 wc->copiedOrder =
false;
3081 wc->copiedOrder =
true;
3087 wc->copiedOrder =
false;
3100 errmsg(
"cannot copy window \"%s\" because it has a frame clause",
3106 errmsg(
"cannot copy window \"%s\" because it has a frame clause",
3108 errhint(
"Omit the parentheses in this OVER clause."),
3128 errmsg(
"RANGE with offset PRECEDING/FOLLOWING requires exactly one ORDER BY column"),
3137 elog(
ERROR,
"operator %u is not a valid ordering operator",
3141 wc->inRangeAsc = !
sortcl->reverse_sort;
3142 wc->inRangeNullsFirst =
sortcl->nulls_first;
3151 errmsg(
"GROUPS mode requires an ORDER BY clause"),
3158 &wc->startInRangeFunc,
3162 &wc->endInRangeFunc,
3212 foreach(
slitem, sortClause)
3221 errmsg(
"in an aggregate with DISTINCT, ORDER BY expressions must appear in argument list") :
3222 errmsg(
"for SELECT DISTINCT, ORDER BY expressions must appear in select list"),
3232 foreach(
tlitem, *targetlist)
3254 errmsg(
"an aggregate with DISTINCT must have at least one argument") :
3255 errmsg(
"SELECT DISTINCT must have at least one column")));
3275 List **targetlist,
List *sortClause)
3312 foreach(
lc, sortClause)
3321 errmsg(
"SELECT DISTINCT ON expressions must match initial ORDER BY expressions"),
3353 errmsg(
"SELECT DISTINCT ON expressions must match initial ORDER BY expressions"),
3392 elog(
ERROR,
"get_matching_location: no matching sortgroupref");
3431 errmsg(
"%s is not allowed in ON CONFLICT clause",
3437 errmsg(
"%s is not allowed in ON CONFLICT clause",
3438 "NULLS FIRST/LAST"),
3440 if (
ielem->opclassopts)
3443 errmsg(
"operator class options are not allowed in ON CONFLICT clause"),
3480 if (!
ielem->collation)
3486 if (!
ielem->opclass)
3490 ielem->opclass,
false);
3515 *arbiterWhere =
NULL;
3522 errmsg(
"ON CONFLICT DO %s requires inference specification or constraint name",
3524 errhint(
"For example, ON CONFLICT (column_name)."),
3535 errmsg(
"ON CONFLICT is not supported with system catalog tables"),
3543 errmsg(
"ON CONFLICT is not supported on table \"%s\" used as a catalog table",
3635 location =
sortby->location;
3641 switch (
sortby->sortby_dir)
3647 &sortop, &eqop,
NULL,
3654 NULL, &eqop, &sortop,
3674 errmsg(
"operator %s is not a valid ordering operator",
3676 errhint(
"Ordering operators must be \"<\" or \">\" members of btree operator families.")));
3703 sortcl->hashable = hashable;
3704 sortcl->reverse_sort = reverse;
3706 switch (
sortby->sortby_nulls)
3710 sortcl->nulls_first = reverse;
3713 sortcl->nulls_first =
true;
3716 sortcl->nulls_first =
false;
3719 elog(
ERROR,
"unrecognized sortby_nulls: %d",
3779 &sortop, &eqop,
NULL,
3786 grpcl->sortop = sortop;
3787 grpcl->reverse_sort =
false;
3789 grpcl->nulls_first =
false;
3790 grpcl->hashable = hashable;
3811 if (
tle->ressortgroupref)
3812 return tle->ressortgroupref;
3824 return tle->ressortgroupref;
3860 if (
scl->tleSortGroupRef ==
ref &&
3862 sortop ==
scl->sortop ||
3990 errmsg(
"RANGE with offset PRECEDING/FOLLOWING is not supported for column type %s",
3996 errmsg(
"RANGE with offset PRECEDING/FOLLOWING is not supported for column type %s and offset type %s",
3999 errhint(
"Cast the offset value to an appropriate type."),
4004 errmsg(
"RANGE with offset PRECEDING/FOLLOWING has multiple interpretations for column type %s and offset type %s",
4007 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)