Re: BUG #5122: Subqueries - inner select statement bug - Mailing list pgsql-bugs

From Heikki Linnakangas
Subject Re: BUG #5122: Subqueries - inner select statement bug
Date
Msg-id 4AD87A02.2000406@enterprisedb.com
Whole thread Raw
In response to BUG #5122: Subqueries - inner select statement bug  ("Muris Pucic" <trax@multicom.ba>)
List pgsql-bugs
Muris Pucic wrote:
> -- The query below works, even though there is no column "first_name" in
> TABLE2. This should return an error but it does not, it returns all rows
> from TABLE1. This query should not evaluate correctly even when aliases are
> not used because it can be misleading.
>
> SELECT * FROM TABLE1 WHERE first_name IN (SELECT first_name FROM TABLE2)

Nope, it's working as expected. The first_name in the subquery is
referring to the first_name column in the outer query. While it looks
strange in a context like that, it's not an error. You wouldn't be able
to write correlated subqueries otherwise, e.g:

SELECT * FROM TABLE1 WHERE EXISTS (SELECT 1 FROM TABLE2 WHERE first_name
= last_name)

--
  Heikki Linnakangas
  EnterpriseDB   http://www.enterprisedb.com

pgsql-bugs by date:

Previous
From: Thom Brown
Date:
Subject: Re: vacuumdb error
Next
From: Tom Lane
Date:
Subject: Re: BUG #5122: Subqueries - inner select statement bug