Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit0e1bfe9

Browse files
committed
I have a patch for postgresql-snapshot(1999-10-22).
This patch fix a TODO list item.* require SELECT DISTINCT target list to have all ORDER BY columnsexampleogawa=> select distinct x from t1 order by y;ERROR: ORDER BY columns must appear in SELECT DISTINCT target list---Atsushi Ogawa
1 parent5374f3e commit0e1bfe9

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

‎src/backend/parser/parse_clause.c

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
*
99
* IDENTIFICATION
10-
* $Header: /cvsroot/pgsql/src/backend/parser/parse_clause.c,v 1.46 1999/10/07 04:23:12 tgl Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/parser/parse_clause.c,v 1.47 1999/10/22 11:51:35 momjian Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -31,7 +31,8 @@
3131
staticchar*clauseText[]= {"ORDER","GROUP"};
3232

3333
staticTargetEntry*findTargetlistEntry(ParseState*pstate,Node*node,
34-
List*tlist,intclause);
34+
List*tlist,intclause,
35+
char*uniqFlag);
3536
staticvoidparseFromClause(ParseState*pstate,List*frmList,Node**qual);
3637
staticchar*transformTableEntry(ParseState*pstate,RangeVar*r);
3738
staticList*addTargetToSortList(TargetEntry*tle,List*sortlist,
@@ -363,7 +364,8 @@ parseFromClause(ParseState *pstate, List *frmList, Node **qual)
363364
* clauseidentifies clause type for error messages.
364365
*/
365366
staticTargetEntry*
366-
findTargetlistEntry(ParseState*pstate,Node*node,List*tlist,intclause)
367+
findTargetlistEntry(ParseState*pstate,Node*node,List*tlist,intclause,
368+
char*uniqueFlag)
367369
{
368370
TargetEntry*target_result=NULL;
369371
List*tl;
@@ -462,6 +464,10 @@ findTargetlistEntry(ParseState *pstate, Node *node, List *tlist, int clause)
462464
* the end of the target list. This target is set to be resjunk =
463465
* TRUE so that it will not be projected into the final tuple.
464466
*/
467+
if(clause==ORDER_CLAUSE&&uniqueFlag) {
468+
elog(ERROR,"ORDER BY columns must appear in SELECT DISTINCT target list");
469+
}
470+
465471
target_result=transformTargetEntry(pstate,node,expr,NULL, true);
466472
lappend(tlist,target_result);
467473

@@ -485,7 +491,7 @@ transformGroupClause(ParseState *pstate, List *grouplist, List *targetlist)
485491
TargetEntry*tle;
486492

487493
tle=findTargetlistEntry(pstate,lfirst(gl),
488-
targetlist,GROUP_CLAUSE);
494+
targetlist,GROUP_CLAUSE,NULL);
489495

490496
/* avoid making duplicate grouplist entries */
491497
if (!exprIsInSortList(tle->expr,glist,targetlist))
@@ -527,7 +533,7 @@ transformSortClause(ParseState *pstate,
527533
TargetEntry*tle;
528534

529535
tle=findTargetlistEntry(pstate,sortby->node,
530-
targetlist,ORDER_CLAUSE);
536+
targetlist,ORDER_CLAUSE,uniqueFlag);
531537

532538
sortlist=addTargetToSortList(tle,sortlist,targetlist,
533539
sortby->useOp);

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp