SQL query syntax question

From: Alexander Levsha <outcastatsabre(at)gmail(dot)com>
To: pgsql-sql(at)postgresql(dot)org
Subject: SQL query syntax question
Date: 2016-04-04 07:19:35
Message-ID: CA+FA-0pjG4r4WSagO+V3BNyyBeu3fbdc9oKnaqFYDSkXWK+EZA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Hello all.
I'm currently developing an SQL parser/analyzer for internal PostgreSQL
tool we use at my workplace.
Naturally, i use psql in conjunction with PostgreSQL documentation to
develop and verify my work.

Recently i've noticed the following oddity in query syntax/execution:

select (select c1 from tt) from t1 tt;
--ERROR: relation "tt" does not exist
--LINE 1: select (select c1 from tt) from t1 tt;

select (select tt.c1 ) from t1 tt;
--c1
------
--(0 rows)

Why doesn't the first one work when the second one works fine? In other
words, why do subquery's traget list and range table list use different
namespaces to resolve table references/aliases? Is this an unintended
behaviour, implementation detail or is there an actual reason for this?
Thanks for your help. Alexander Levsha

Browse pgsql-sql by date

  From Date Subject
Next Message Alexander Levsha 2016-04-04 07:23:06 SQL query syntax question
Previous Message Selina Tech 2016-03-30 17:56:52 Re: how plsql work on postgresql