Re: BUG #6315: FETCH NEXT :next ROWS ONLY fails

Поиск
Список
Период
Сортировка
От Bernhard Reutner-Fischer
Тема Re: BUG #6315: FETCH NEXT :next ROWS ONLY fails
Дата
Msg-id CAC1BbcTHHKAS+Cp80OZz15pg8z4G0b7tThLGqjazLiwOSgYgwA@mail.gmail.com
обсуждение исходный текст
Ответ на Re: BUG #6315: FETCH NEXT :next ROWS ONLY fails  (Alvaro Herrera <alvherre@commandprompt.com>)
Список 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 по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: BUG #6315: FETCH NEXT :next ROWS ONLY fails
Следующее
От: postgresql@thewickedtribe.net
Дата:
Сообщение: BUG #6316: function search_path causes set_config() is_local = true to have no effect