[PATCH] Allow star syntax in GROUP BY, as a shorthand for all table columns
Hi,
This patch enables the syntax "GROUP BY tablename.*" in cases where
earlier you'd get the error "field must appear in the GROUP BY clause
or be used in an aggregate function"
I've often needed to write queries like this:
SELECT a.x, a.y, a.z, sum(b.w) FROM a JOIN b USING (a_id) GROUP BY
a.x, a.y, a.z;
Now this becomes:
SELECT a.x, a.y, a.z, sum(b.w) FROM a JOIN b USING (a_id) GROUP BY a.*;
The patch is so trivial that I'm wondering why it hasn't been
implemented before. I couldn't think of any assumptions being broken
by using row comparison instead of comparing each field separately.
But maybe I'm missing something.
If this patch looks reasonable, I guess the obvious next step is to
expand the "a.*" reference to the table's primary key columns and fill
in context->func_grouped_rels
Regards,
Marti
Attachments:
0001-Allow-star-syntax-in-GROUP-BY-as-a-shorthand-for-all.patchtext/x-patch; charset=US-ASCII; name=0001-Allow-star-syntax-in-GROUP-BY-as-a-shorthand-for-all.patchDownload+29-3
Marti Raudsepp <marti@juffo.org> writes:
This patch enables the syntax "GROUP BY tablename.*" in cases where
earlier you'd get the error "field must appear in the GROUP BY clause
or be used in an aggregate function"
Is this really necessary now that we know about "GROUP BY primary key"?
The patch is so trivial that I'm wondering why it hasn't been
implemented before.
Probably because it's a nonstandard kluge ...
regards, tom lane
On Wed, Jun 8, 2011 at 20:22, Tom Lane <tgl@sss.pgh.pa.us> wrote:
Is this really necessary now that we know about "GROUP BY primary key"?
You're right. I was just looking for something easy to hack on and
didn't put much thought into usefulness.
I'll try to do better next time. :)
Regards,
Marti