Re: BUG #6315: FETCH NEXT :next ROWS ONLY fails - Mailing list pgsql-bugs

From Bernhard Reutner-Fischer
Subject Re: BUG #6315: FETCH NEXT :next ROWS ONLY fails
Date
Msg-id CAC1BbcTHHKAS+Cp80OZz15pg8z4G0b7tThLGqjazLiwOSgYgwA@mail.gmail.com
Whole thread Raw
In response to Re: BUG #6315: FETCH NEXT :next ROWS ONLY fails  (Alvaro Herrera <alvherre@commandprompt.com>)
List pgsql-bugs
On 1 December 2011 22:50, Alvaro Herrera <alvherre@commandprompt.com> wrote:
>
> Excerpts from Tom Lane's message of jue dic 01 18:32:58 -0300 2011:
>> Boszormenyi Zoltan <zb@cybertec.at> writes:
>> > 2011-12-01 20:09 keltez=E9ssel, rep.dot.nop@gmail.com =EDrta:
>> >> Binding for "OFFSET :offset" works fine but binding for a &=
quot;FETCH NEXT :next
>> >> ROWS ONLY" raises:
>> >> syntax error at or near "$2"
>> >> SELECT * FROM foo OFFSET $1 ROWS FETCH NEXT $2 ROWS ONLY
>>
>> > This is not a supported syntax. Consider using
>> > SELECT * FROM foo OFFSET $1 LIMIT $2
>> > instead.

I think it's SQL2008 and is the "new" way of stating OFFSET $1 LIMIT
$2 (see docs).

>>
>> Well, actually it is supported, but you missed the fine print where it
>> says that you have to add parentheses if the offset or count isn't a
>> simple integer constant. =A0I'll apply a patch to make that a bit more
>> obvious.
>
> Hmm, it works with parens only in the "fetch next" clause, they don't
> seem necessary in the limit. =A0FWIW.

Exactly. That's why I find the need to quote the latter a bit counter
intuitive :)
cheers,
>
> alvherre=3D# prepare foo(int, int) as select * from generate_series(1, 20=
0) offset $1 fetch next ($2) rows only;
> PREPARE
> alvherre=3D# execute foo(2+3, 1+2);
> =A0generate_series
> -----------------
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 6
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 7
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 8
> (3 filas)

pgsql-bugs by date:

Previous
From: Tom Lane
Date:
Subject: Re: BUG #6315: FETCH NEXT :next ROWS ONLY fails
Next
From: postgresql@thewickedtribe.net
Date:
Subject: BUG #6316: function search_path causes set_config() is_local = true to have no effect