mirror of
https://github.com/postgres/postgres.git
synced 2026-02-03 20:40:14 -05:00
refers to a non-DISTINCT output column of a DISTINCT ON subquery, or if it refers to a function-returning-set, we cannot push it down. But the old implementation refused to push down *any* quals if the subquery had any such 'dangerous' outputs. Now we just look at the output columns actually referenced by each qual expression. More code than before, but probably no slower since we don't make unnecessary checks.
35 lines
1.3 KiB
C
35 lines
1.3 KiB
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* parse_clause.h
|
|
* handle clauses in parser
|
|
*
|
|
*
|
|
* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
|
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
*
|
|
* $Id: parse_clause.h,v 1.30 2003/03/22 01:49:38 tgl Exp $
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
#ifndef PARSE_CLAUSE_H
|
|
#define PARSE_CLAUSE_H
|
|
|
|
#include "parser/parse_node.h"
|
|
|
|
extern void transformFromClause(ParseState *pstate, List *frmList);
|
|
extern int setTargetTable(ParseState *pstate, RangeVar *relation,
|
|
bool inh, bool alsoSource);
|
|
extern bool interpretInhOption(InhOption inhOpt);
|
|
extern Node *transformWhereClause(ParseState *pstate, Node *where);
|
|
extern List *transformGroupClause(ParseState *pstate, List *grouplist,
|
|
List *targetlist);
|
|
extern List *transformSortClause(ParseState *pstate, List *orderlist,
|
|
List *targetlist);
|
|
extern List *transformDistinctClause(ParseState *pstate, List *distinctlist,
|
|
List *targetlist, List **sortClause);
|
|
|
|
extern List *addAllTargetsToSortList(List *sortlist, List *targetlist);
|
|
extern Index assignSortGroupRef(TargetEntry *tle, List *tlist);
|
|
extern bool targetIsInSortList(TargetEntry *tle, List *sortList);
|
|
|
|
#endif /* PARSE_CLAUSE_H */
|