Re: BUG #5122: Subqueries - inner select statement bug

From: Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com>
To: Muris Pucic <trax(at)multicom(dot)ba>
Cc: pgsql-bugs(at)postgresql(dot)org
Subject: Re: BUG #5122: Subqueries - inner select statement bug
Date: 2009-10-16 13:49:54
Message-ID: 4AD87A02.2000406@enterprisedb.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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

In response to

Browse pgsql-bugs by date

  From Date Subject
Next Message Tom Lane 2009-10-16 13:51:12 Re: BUG #5122: Subqueries - inner select statement bug
Previous Message Thom Brown 2009-10-16 13:48:11 Re: vacuumdb error