diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2003-06-16 02:03:38 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2003-06-16 02:03:38 +0000 |
commit | a4997254693057d4587d74222881b8e03580da2c (patch) | |
tree | c022e641ec691ce3f108b28e0720444da6ed3eef /src/include/parser/parse_clause.h | |
parent | cb02610e503957d7ed9b4375537fb6275c16f1fa (diff) | |
download | postgresql-a4997254693057d4587d74222881b8e03580da2c.tar.gz postgresql-a4997254693057d4587d74222881b8e03580da2c.zip |
Allow GROUP BY, ORDER BY, DISTINCT targets to be unknown literals,
silently resolving them to type TEXT. This is comparable to what we
do when faced with UNKNOWN in CASE, UNION, and other contexts. It gets
rid of this and related annoyances:
select distinct f1, '' from int4_tbl;
ERROR: Unable to identify an ordering operator '<' for type unknown
This was discussed many moons ago, but no one got round to fixing it.
Diffstat (limited to 'src/include/parser/parse_clause.h')
-rw-r--r-- | src/include/parser/parse_clause.h | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/include/parser/parse_clause.h b/src/include/parser/parse_clause.h index 12ab7317d9e..c2a3b2dc77b 100644 --- a/src/include/parser/parse_clause.h +++ b/src/include/parser/parse_clause.h @@ -7,7 +7,7 @@ * 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.31 2003/06/15 16:42:08 tgl Exp $ + * $Id: parse_clause.h,v 1.32 2003/06/16 02:03:38 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -20,15 +20,18 @@ 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, List *sortClause); extern List *transformSortClause(ParseState *pstate, List *orderlist, - List *targetlist); + List *targetlist, bool resolveUnknown); extern List *transformDistinctClause(ParseState *pstate, List *distinctlist, List *targetlist, List **sortClause); -extern List *addAllTargetsToSortList(List *sortlist, List *targetlist); +extern List *addAllTargetsToSortList(ParseState *pstate, + List *sortlist, List *targetlist, + bool resolveUnknown); extern Index assignSortGroupRef(TargetEntry *tle, List *tlist); extern bool targetIsInSortList(TargetEntry *tle, List *sortList); |