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

From: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
To: Michael Paquier <michael(dot)paquier(at)gmail(dot)com>
Cc: PostgreSQL mailing lists <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Relation ordering in FROM clause causing error related to missing entry... Or not.
Date: 2015-03-10 13:32:03
Message-ID: 20150310133203.GA3291@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Michael Paquier wrote:
> Hi all,
>
> 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)
> =# 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
>
> 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?

This seems natural to me -- in your second example, by the time you
reference count_query it hasn't yet been declared and thus it's not
available in the namespace. This is how I expect a LATERAL reference to
work: a RTE can reference previous entries, but not ones that come
later.

(SRFs in FROM become lateral references automatically, as I recall.
Without LATERAL, you wouldn't have been able to refer to count_query at
all.)

--
Álvaro Herrera http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Alvaro Herrera 2015-03-10 13:41:01 Re: One question about security label command
Previous Message Stephen Frost 2015-03-10 13:30:35 Re: Relation ordering in FROM clause causing error related to missing entry... Or not.