Files
openGauss-server/src/include/parser/parse_clause.h
2020-08-17 14:55:37 +08:00

50 lines
2.4 KiB
C
Executable File

/* -------------------------------------------------------------------------
*
* parse_clause.h
* handle clauses in parser
*
*
* Portions Copyright (c) 1996-2012, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* src/include/parser/parse_clause.h
*
* -------------------------------------------------------------------------
*/
#ifndef PARSE_CLAUSE_H
#define PARSE_CLAUSE_H
#include "nodes/relation.h"
#include "parser/parse_node.h"
extern void transformFromClause(ParseState* pstate, List* frmList, bool isFirstNode = true, bool isCreateView = false);
extern int setTargetTable(ParseState* pstate, RangeVar* relation, bool inh, bool alsoSource, AclMode requiredPerms);
extern bool interpretInhOption(InhOption inhOpt);
extern bool interpretOidsOption(List* defList, bool allowOids);
extern Node* transformFromClauseItem(ParseState* pstate, Node* n, RangeTblEntry** top_rte, int* top_rti,
RangeTblEntry** right_rte, int* right_rti, List** relnamespace, Relids* containedRels, bool isFirstNode = true,
bool isCreateView = false, bool isMergeInto = false);
extern Node* transformJoinOnClause(ParseState* pstate, JoinExpr* j, RangeTblEntry* l_rte, RangeTblEntry* r_rte,
List* relnamespace, Relids containedRels);
extern Node* transformWhereClause(ParseState* pstate, Node* clause, const char* constructName);
extern Node* transformLimitClause(ParseState* pstate, Node* clause, const char* constructName);
extern List* transformGroupClause(
ParseState* pstate, List* grouplist, List** groupingSets, List** targetlist, List* sortClause, bool useSQL99);
extern List* transformSortClause(
ParseState* pstate, List* orderlist, List** targetlist, bool resolveUnknown, bool useSQL99);
extern List* transformWindowDefinitions(ParseState* pstate, List* windowdefs, List** targetlist);
extern List* transformDistinctClause(ParseState* pstate, List** targetlist, List* sortClause, bool is_agg);
extern List* transformDistinctOnClause(ParseState* pstate, List* distinctlist, List** targetlist, List* sortClause);
extern Index assignSortGroupRef(TargetEntry* tle, List* tlist);
extern bool targetIsInSortList(TargetEntry* tle, Oid sortop, List* sortList);
extern List* addTargetToSortList(
ParseState* pstate, TargetEntry* tle, List* sortlist, List* targetlist, SortBy* sortby, bool resolveUnknown);
#endif /* PARSE_CLAUSE_H */