Possible parser bug? .... Re: Picking out the most recent row using a time stamp column

From: Dave Crooke <dcrooke(at)gmail(dot)com>
To: Kevin Grittner <Kevin(dot)Grittner(at)wicourts(dot)gov>
Cc: Michael Glaesemann <grzm(at)seespotcode(dot)net>, pgsql-performance <pgsql-performance(at)postgresql(dot)org>
Subject: Possible parser bug? .... Re: Picking out the most recent row using a time stamp column
Date: 2011-02-24 23:53:08
Message-ID: AANLkTinaxt=xjbxOpXTeoL7SZ6dxJgEU8eDtp2dEbHKq@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance

P.S. I noticed inadvertently (by making a typo ;-) that not all of the
columns in the DISTINCT ON are required to be part of the output, in which
case it appears to reduce the DISTINCT ON to the columns that are
represented .... in my real world situation, "id_key" is actually composed
of 3 columns, and I made a typo like the following (in which I've tweaked
the spacing to highlight the missing comma:

select distinct on (a, b, c)
a, b c, time_stamp, value
from data
order by a, b, c, time_stamp desc;

The output produced is the same as this query:

select distinct on (a, b)
a, b, time_stamp, value
from data
order by a, b, time_stamp desc;

Not sure if this is considered a parser bug or not, but it feels slightly
odd not to get an error.

PG 8.4.7 installed from Ubuntu 10.04's 64-bit build.

Cheers
Dave

On Thu, Feb 24, 2011 at 5:38 PM, Dave Crooke <dcrooke(at)gmail(dot)com> wrote:

> Thanks to all .... I had a tickling feeling at the back of my mind that
> there was a neater answer here. For the record, times (all from in-memory
> cached data, averaged over a bunch of runs):
>
> Dependent subquery = 117.9 seconds
> Join to temp table = 2.7 sec
> DISTINCT ON = 2.7 sec
>
> So the DISTINCT ON may not be quicker, but it sure is tidier.
>
> Cheers
> Dave
>
>
> On Thu, Feb 24, 2011 at 2:24 PM, Kevin Grittner <
> Kevin(dot)Grittner(at)wicourts(dot)gov> wrote:
>
>> Michael Glaesemann <grzm(at)seespotcode(dot)net> wrote:
>>
>> > SELECT DISTINCT ON (data.id_key)
>> > data.id_key, data.time_stamp, data.value
>> > FROM data
>> > ORDER BY data.id_key, data.time_stamp DESC;
>>
>> Dang! I forgot the DESC in my post! Thanks for showing the
>> *correct* version.
>>
>> -Kevin
>>
>
>

Responses

Browse pgsql-performance by date

  From Date Subject
Next Message Jochen Erwied 2011-02-25 00:03:12 Re: Possible parser bug? .... Re: Picking out the most recent row using a time stamp column
Previous Message Dave Crooke 2011-02-24 23:38:37 Re: Picking out the most recent row using a time stamp column