From a4997254693057d4587d74222881b8e03580da2c Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Mon, 16 Jun 2003 02:03:38 +0000 Subject: 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. --- src/include/parser/parse_clause.h | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src/include/parser/parse_clause.h') 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); -- cgit v1.2.3