Re: Relation ordering in FROM clause causing error related to missing entry... Or not.

Поиск
Список
Период
Сортировка
От Stephen Frost
Тема Re: Relation ordering in FROM clause causing error related to missing entry... Or not.
Дата
Msg-id 20150310133035.GU29780@tamriel.snowman.net
обсуждение исходный текст
Ответ на Relation ordering in FROM clause causing error related to missing entry... Or not.  (Michael Paquier <michael.paquier@gmail.com>)
Ответы Re: Relation ordering in FROM clause causing error related to missing entry... Or not.  (Michael Paquier <michael.paquier@gmail.com>)
Список pgsql-hackers
Michael,

* Michael Paquier (michael.paquier@gmail.com) wrote:
> Today while playing with some queries I bumped into the following thing:
> =# with count_query as (select generate_series(0,1) as a) select b
> from count_query, generate_series(1, count_query.a) as b;
>  b
> ---
>  1
> (1 row)

The above results in an implicit LATERAL being done.

> =# with count_query as (select generate_series(0,1) as a) select b
> from generate_series(1, count_query.a) as b, count_query;
> ERROR:  42P01: missing FROM-clause entry for table "count_query"
> LINE 1: ...eries(0,1) as a) select b from generate_series(1, count_quer...
>                                                              ^
> LOCATION:  errorMissingRTE, parse_relation.c:2850

This doesn't because the generate_series() is first- where would it get
the count_query relation?

> I have been a little bit surprised by the fact that different entry
> ordering in the FROM clause of the main query had different effects.
> Perhaps there is something I am missing? I haven't looked at the code
> but if this happens to be a bug I am fine to submit a patch.

Yeah, it's simply because we can turn one into an implicit LATERAL, but
we can't do that for the other.
Thanks,
    Stephen

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

Предыдущее
От: Kohei KaiGai
Дата:
Сообщение: Re: One question about security label command
Следующее
От: Alvaro Herrera
Дата:
Сообщение: Re: Relation ordering in FROM clause causing error related to missing entry... Or not.