pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Franco Bruno Borghesi <franco@akyasociados.com.ar>
To: Tom Lane <tgl@sss.pgh.pa.us>
To: Manfred Koizar <mkoi-pg@aon.at>
Cc: pgsql-sql@postgresql.org
Cc: pgsql-hackers@postgresql.org
Subject: Re: [HACKERS] What's wrong with this group by clause?
Date: Thu, 6 Nov 2003 14:52:00 -0300
Message-ID: <200311061452.00854.franco@akyasociados.com.ar> (raw)
In-Reply-To: <6955.1047574975@sss.pgh.pa.us>
References: <200311041828.13144.franco@akyasociados.com.ar>
	<qn717v872enmaa16qmj147p7kmotodn6uv@4ax.com>
	<6955.1047574975@sss.pgh.pa.us>

Thanks Tom, I applied the patch and it works perfect now.
Thanks to you all.

On Thursday 13 March 2003 14:02, Tom Lane wrote:
> Manfred Koizar <mkoi-pg@aon.at> writes:
> > ISTM you have found a Postgres 7.3 bug.
>
> Yeah.  Actually, the planner bug has been there a long time, but it was
> only latent until the parser stopped suppressing duplicate GROUP BY
> items:
>
> 2002-08-18 14:46  tgl
>
> 	* src/backend/parser/parse_clause.c: Remove optimization whereby
> 	parser would make only one sort-list entry when two equal()
> 	targetlist items were to be added to an ORDER BY or DISTINCT list.
> 	Although indeed this would make sorting fractionally faster by
> 	sometimes saving a comparison, it confuses the heck out of later
> 	stages of processing, because it makes it look like the user wrote
> 	DISTINCT ON rather than DISTINCT.  Bug reported by
> 	joe@piscitella.com.
>
> 7.3 patch is attached if you need it.
>
> 			regards, tom lane
>
>
> *** src/backend/optimizer/plan/planner.c.orig	Wed Mar  5 13:38:26 2003
> --- src/backend/optimizer/plan/planner.c	Thu Mar 13 11:21:16 2003
> ***************
> *** 1498,1510 ****
>   		 * are just dummies with no extra execution cost.)
>   		 */
>   		List	   *sort_tlist = new_unsorted_tlist(subplan->targetlist);
>   		int			keyno = 0;
>   		List	   *gl;
>
>   		foreach(gl, groupClause)
>   		{
>   			GroupClause *grpcl = (GroupClause *) lfirst(gl);
> ! 			TargetEntry *te = nth(grpColIdx[keyno] - 1, sort_tlist);
>   			Resdom	   *resdom = te->resdom;
>
>   			/*
> --- 1498,1511 ----
>   		 * are just dummies with no extra execution cost.)
>   		 */
>   		List	   *sort_tlist = new_unsorted_tlist(subplan->targetlist);
> + 		int			grpno = 0;
>   		int			keyno = 0;
>   		List	   *gl;
>
>   		foreach(gl, groupClause)
>   		{
>   			GroupClause *grpcl = (GroupClause *) lfirst(gl);
> ! 			TargetEntry *te = nth(grpColIdx[grpno] - 1, sort_tlist);
>   			Resdom	   *resdom = te->resdom;
>
>   			/*
> ***************
> *** 1518,1523 ****
> --- 1519,1525 ----
>   				resdom->reskey = ++keyno;
>   				resdom->reskeyop = grpcl->sortop;
>   			}
> + 			grpno++;
>   		}
>
>   		Assert(keyno > 0);

view thread (8+ messages)

Message-ID: <200311061452.00854.franco@akyasociados.com.ar>
Permalink:  ../200311061452.00854.franco@akyasociados.com.ar/
Also on:    postgresql.org/message-id/200311061452.00854.franco@akyasociados.com.ar

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-sql@postgresql.org
  Cc: franco@akyasociados.com.ar, tgl@sss.pgh.pa.us, mkoi-pg@aon.at, pgsql-hackers@postgresql.org
  Subject: Re: [HACKERS] What's wrong with this group by clause?
  In-Reply-To: <200311061452.00854.franco@akyasociados.com.ar>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox