Re: Behavior of "OFFSET -1"

Поиск
Список
Период
Сортировка
От Robert Haas
Тема Re: Behavior of "OFFSET -1"
Дата
Msg-id CA+TgmoYYSo_=y8qCQfyp3rKmH1zK04VwGM+N=+U8rXDV5bVO=A@mail.gmail.com
обсуждение исходный текст
Ответ на Behavior of "OFFSET -1"  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
On Tue, Jul 22, 2014 at 12:49 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> Before 9.3, you got an error from this:
>
> regression=# select * from tenk1 offset -1;
> ERROR:  OFFSET must not be negative
>
> But 9.3 and up ignore the negative OFFSET.  This seems to be a thinko in
> my commit 1a1832eb.  limit_needed() thinks it can discard the Limit plan
> node altogether, which of course prevents nodeLimit.c from complaining:
>
>                 /* Executor would treat less-than-zero same as zero */
>                 if (offset > 0)
>                     return true;    /* OFFSET with a positive value */
>
> I don't recall the reasoning behind that comment for sure, but I imagine
> I examined the behavior of ExecLimit() and failed to notice that there
> was an error check in recompute_limits().
>
> This seems to me to be a clear bug: we should reinstate the former
> behavior by tightening this check so it only discards OFFSET with a
> constant value of exactly 0.  Anyone think differently?

Not I.

-- 
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Robert Haas
Дата:
Сообщение: Re: Portability issues in TAP tests
Следующее
От: Fabien COELHO
Дата:
Сообщение: Re: parametric block size?