1 /*------------------------------------------------------------------------- 2 * 3 * parse_clause.h 4 * handle clauses in parser 5 * 6 * 7 * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group 8 * Portions Copyright (c) 1994, Regents of the University of California 9 * 10 * src/include/parser/parse_clause.h 11 * 12 *------------------------------------------------------------------------- 13 */ 14 #ifndef PARSE_CLAUSE_H 15 #define PARSE_CLAUSE_H 16 17 #include "parser/parse_node.h" 18 19 extern void transformFromClause(ParseState *pstate, List *frmList); 20 extern int setTargetTable(ParseState *pstate, RangeVar *relation, 21 bool inh, bool alsoSource, AclMode requiredPerms); 22 extern bool interpretOidsOption(List *defList, bool allowOids); 23 24 extern Node *transformWhereClause(ParseState *pstate, Node *clause, 25 ParseExprKind exprKind, const char *constructName); 26 extern Node *transformLimitClause(ParseState *pstate, Node *clause, 27 ParseExprKind exprKind, const char *constructName); 28 extern List *transformGroupClause(ParseState *pstate, List *grouplist, 29 List **groupingSets, 30 List **targetlist, List *sortClause, 31 ParseExprKind exprKind, bool useSQL99); 32 extern List *transformSortClause(ParseState *pstate, List *orderlist, 33 List **targetlist, ParseExprKind exprKind, 34 bool useSQL99); 35 36 extern List *transformWindowDefinitions(ParseState *pstate, 37 List *windowdefs, 38 List **targetlist); 39 40 extern List *transformDistinctClause(ParseState *pstate, 41 List **targetlist, List *sortClause, bool is_agg); 42 extern List *transformDistinctOnClause(ParseState *pstate, List *distinctlist, 43 List **targetlist, List *sortClause); 44 extern void transformOnConflictArbiter(ParseState *pstate, 45 OnConflictClause *onConflictClause, 46 List **arbiterExpr, Node **arbiterWhere, 47 Oid *constraint); 48 49 extern List *addTargetToSortList(ParseState *pstate, TargetEntry *tle, 50 List *sortlist, List *targetlist, SortBy *sortby); 51 extern Index assignSortGroupRef(TargetEntry *tle, List *tlist); 52 extern bool targetIsInSortList(TargetEntry *tle, Oid sortop, List *sortList); 53 54 #endif /* PARSE_CLAUSE_H */ 55