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);
1019 errmsg(
"subqueries within GRAPH_TABLE reference are not supported")));
1057 errmsg(
"tablesample method %s does not exist",
1065 errmsg(
"function %s must return type %s",
1079 errmsg_plural(
"tablesample method %s requires %d argument, not %d",
1080 "tablesample method %s requires %d arguments, not %d",
1110 if (!
tsm->repeatable_across_queries)
1113 errmsg(
"tablesample method %s does not support REPEATABLE",
1270 rte = (*top_nsitem)->p_rte;
1278 errmsg(
"TABLESAMPLE clause can only be applied to tables and materialized views"),
1415 if (
j->join_using_alias)
1416 j->join_using_alias->colnames =
j->usingClause;
1465 errmsg(
"column name \"%s\" appears more than once in USING clause",
1480 errmsg(
"common column name \"%s\" appears more than once in left table",
1489 errmsg(
"column \"%s\" specified in USING clause does not exist in left table",
1504 errmsg(
"common column name \"%s\" appears more than once in right table",
1513 errmsg(
"column \"%s\" specified in USING clause does not exist in right table",
1566 switch (
j->jointype)
1582 elog(
ERROR,
"unrecognized join type: %d",
1670 nscol->p_varattnosyn = k + 1;
1685 j->join_using_alias,
1708 if (
j->join_using_alias)
1713 jnsitem->p_names =
j->join_using_alias;
1720 jnsitem->p_rel_visible =
true;
1721 jnsitem->p_cols_visible =
true;
1722 jnsitem->p_lateral_only =
false;
1741 if (
j->alias !=
NULL)
1751 nsitem->p_cols_visible =
true;
1752 nsitem->p_lateral_only =
false;
1753 nsitem->p_lateral_ok =
true;
1788 var->varnosyn =
nscol->p_varnosyn;
1789 var->varattnosyn =
nscol->p_varattnosyn;
1890 elog(
ERROR,
"unrecognized join type: %d", (
int) jointype);
1955 foreach(
lc,
namespace)
1972 foreach(
lc,
namespace)
2043 errmsg(
"row count cannot be null in FETCH FIRST ... WITH TIES clause")));
2068 errmsg(
"argument of %s must not contain variables",
2098 errmsg(
"aggregate functions are not allowed in %s",
2107 errmsg(
"window functions are not allowed in %s",
2119 elog(
ERROR,
"unexpected exprKind in checkTargetlistEntrySQL92");
2190 int location = ((
ColumnRef *) node)->location;
2222 if (!
tle->resjunk &&
2233 errmsg(
"%s \"%s\" is ambiguous",
2261 errmsg(
"non-integer constant in %s",
2283 errmsg(
"%s position %d is not in select list",
2431 foreach(l2,
gset->content)
2461 foreach(l, (
List *) expr)
2474 return (
Node *) result;
2505 List **targetlist,
List *sortClause,
2518 if (
tle->ressortgroupref > 0)
2539 return tle->ressortgroupref;
2560 foreach(
sl, sortClause)
2564 if (
sc->tleSortGroupRef ==
tle->ressortgroupref)
2569 grpc->nulls_first =
false;
2590 return tle->ressortgroupref;
2613 List **targetlist,
List *sortClause,
2666 List **targetlist,
List *sortClause,
2674 foreach(
gl,
gset->content)
2682 targetlist, sortClause,
2695 targetlist, sortClause,
2722 errmsg(
"CUBE is limited to 12 elements"),
2773 List **groupingSets,
2774 List **targetlist,
List *sortClause,
2825 result, *targetlist,
2886 targetlist, sortClause,
2895 targetlist, sortClause,
2914 *groupingSets = gsets;
2975 List *partitionClause;
2990 errmsg(
"window \"%s\" is already defined",
windef->name),
3002 errmsg(
"window \"%s\" does not exist",
3031 wc->refname =
windef->refname;
3049 if (partitionClause)
3052 errmsg(
"cannot override PARTITION BY clause of window \"%s\"",
3061 if (orderClause &&
refwc->orderClause)
3064 errmsg(
"cannot override ORDER BY clause of window \"%s\"",
3070 wc->copiedOrder =
false;
3075 wc->copiedOrder =
true;
3081 wc->copiedOrder =
false;
3094 errmsg(
"cannot copy window \"%s\" because it has a frame clause",
3100 errmsg(
"cannot copy window \"%s\" because it has a frame clause",
3102 errhint(
"Omit the parentheses in this OVER clause."),
3122 errmsg(
"RANGE with offset PRECEDING/FOLLOWING requires exactly one ORDER BY column"),
3131 elog(
ERROR,
"operator %u is not a valid ordering operator",
3135 wc->inRangeAsc = !
sortcl->reverse_sort;
3136 wc->inRangeNullsFirst =
sortcl->nulls_first;
3145 errmsg(
"GROUPS mode requires an ORDER BY clause"),
3152 &wc->startInRangeFunc,
3156 &wc->endInRangeFunc,
3206 foreach(
slitem, sortClause)
3215 errmsg(
"in an aggregate with DISTINCT, ORDER BY expressions must appear in argument list") :
3216 errmsg(
"for SELECT DISTINCT, ORDER BY expressions must appear in select list"),
3226 foreach(
tlitem, *targetlist)
3233 result, *targetlist,
3248 errmsg(
"an aggregate with DISTINCT must have at least one argument") :
3249 errmsg(
"SELECT DISTINCT must have at least one column")));
3269 List **targetlist,
List *sortClause)
3306 foreach(
lc, sortClause)
3315 errmsg(
"SELECT DISTINCT ON expressions must match initial ORDER BY expressions"),
3347 errmsg(
"SELECT DISTINCT ON expressions must match initial ORDER BY expressions"),
3350 result, *targetlist,
3386 elog(
ERROR,
"get_matching_location: no matching sortgroupref");
3425 errmsg(
"%s is not allowed in ON CONFLICT clause",
3431 errmsg(
"%s is not allowed in ON CONFLICT clause",
3432 "NULLS FIRST/LAST"),
3434 if (
ielem->opclassopts)
3437 errmsg(
"operator class options are not allowed in ON CONFLICT clause"),
3474 if (!
ielem->collation)
3480 if (!
ielem->opclass)
3484 ielem->opclass,
false);
3509 *arbiterWhere =
NULL;
3516 errmsg(
"ON CONFLICT DO %s requires inference specification or constraint name",
3518 errhint(
"For example, ON CONFLICT (column_name)."),
3529 errmsg(
"ON CONFLICT is not supported with system catalog tables"),
3537 errmsg(
"ON CONFLICT is not supported on table \"%s\" used as a catalog table",
3629 location =
sortby->location;
3635 switch (
sortby->sortby_dir)
3641 &sortop, &eqop,
NULL,
3648 NULL, &eqop, &sortop,
3668 errmsg(
"operator %s is not a valid ordering operator",
3670 errhint(
"Ordering operators must be \"<\" or \">\" members of btree operator families.")));
3697 sortcl->hashable = hashable;
3698 sortcl->reverse_sort = reverse;
3700 switch (
sortby->sortby_nulls)
3704 sortcl->nulls_first = reverse;
3707 sortcl->nulls_first =
true;
3710 sortcl->nulls_first =
false;
3713 elog(
ERROR,
"unrecognized sortby_nulls: %d",
3773 &sortop, &eqop,
NULL,
3780 grpcl->sortop = sortop;
3781 grpcl->reverse_sort =
false;
3783 grpcl->nulls_first =
false;
3784 grpcl->hashable = hashable;
3805 if (
tle->ressortgroupref)
3806 return tle->ressortgroupref;
3818 return tle->ressortgroupref;
3854 if (
scl->tleSortGroupRef ==
ref &&
3856 sortop ==
scl->sortop ||
3984 errmsg(
"RANGE with offset PRECEDING/FOLLOWING is not supported for column type %s",
3990 errmsg(
"RANGE with offset PRECEDING/FOLLOWING is not supported for column type %s and offset type %s",
3993 errhint(
"Cast the offset value to an appropriate type."),
3998 errmsg(
"RANGE with offset PRECEDING/FOLLOWING has multiple interpretations for column type %s and offset type %s",
4001 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)