1/*-------------------------------------------------------------------------
2 *
3 * parse_clause.h
4 * handle clauses in parser
5 *
6 *
7 * Portions Copyright (c) 1996-2019, 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
19extern void transformFromClause(ParseState *pstate, List *frmList);
20extern int setTargetTable(ParseState *pstate, RangeVar *relation,
21 bool inh, bool alsoSource, AclMode requiredPerms);
22
23extern Node *transformWhereClause(ParseState *pstate, Node *clause,
24 ParseExprKind exprKind, const char *constructName);
25extern Node *transformLimitClause(ParseState *pstate, Node *clause,
26 ParseExprKind exprKind, const char *constructName);
27extern List *transformGroupClause(ParseState *pstate, List *grouplist,
28 List **groupingSets,
29 List **targetlist, List *sortClause,
30 ParseExprKind exprKind, bool useSQL99);
31extern List *transformSortClause(ParseState *pstate, List *orderlist,
32 List **targetlist, ParseExprKind exprKind,
33 bool useSQL99);
34
35extern List *transformWindowDefinitions(ParseState *pstate,
36 List *windowdefs,
37 List **targetlist);
38
39extern List *transformDistinctClause(ParseState *pstate,
40 List **targetlist, List *sortClause, bool is_agg);
41extern List *transformDistinctOnClause(ParseState *pstate, List *distinctlist,
42 List **targetlist, List *sortClause);
43extern void transformOnConflictArbiter(ParseState *pstate,
44 OnConflictClause *onConflictClause,
45 List **arbiterExpr, Node **arbiterWhere,
46 Oid *constraint);
47
48extern List *addTargetToSortList(ParseState *pstate, TargetEntry *tle,
49 List *sortlist, List *targetlist, SortBy *sortby);
50extern Index assignSortGroupRef(TargetEntry *tle, List *tlist);
51extern bool targetIsInSortList(TargetEntry *tle, Oid sortop, List *sortList);
52
53#endif /* PARSE_CLAUSE_H */
54