Re: BUG #16834: where-in: if the nested query fails, the parent query returns all the records
От | Pantelis Theodosiou |
---|---|
Тема | Re: BUG #16834: where-in: if the nested query fails, the parent query returns all the records |
Дата | |
Msg-id | CAE3TBxwP39XvfgKGd+zvfMbN2G1KM-LVMcFeoyOijAij1+a0Rw@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: BUG #16834: where-in: if the nested query fails, the parent query returns all the records (Pantelis Theodosiou <ypercube@gmail.com>) |
Ответы |
Re: BUG #16834: where-in: if the nested query fails, the parent query returns all the records
|
Список | pgsql-bugs |
On Fri, Jan 22, 2021 at 2:38 PM Pantelis Theodosiou <ypercube@gmail.com> wrote:
On Fri, Jan 22, 2021 at 12:57 PM PG Bug reporting form <noreply@postgresql.org> wrote:The following bug has been logged on the website:
Bug reference: 16834
Logged by: Flavio Ricci
Email address: flavio.ricci82@gmail.com
PostgreSQL version: 11.9
Operating system: x86_64-pc-linux-gnu
Description:
Hi,
I have found out that in a where-in query if the nested query fails, the
parent query returns all the records if the where condition field matches
with the selected field in the inner query.
Example:
SELECT *
FROM table_a
WHERE field_only_in_parent_table IN (
SELECT field_only_in_parent_table
FROM table_b
WHERE name = 'John Doe')
If you run only the nested query it fails because the field does not exist
for table_b
If you run all the query, it returns all the records of table_a
Regards,
FlavioThis is not a bug. Returning all records of the parent table is the correct result, due to scope resolution.The column field_only_in_parent_table does not have a table prefix so it is first checked whether it's a column of the immediate tables (table_b here). Since the column is not there, the next level tables are checked (table_a here). It is a there so the query is executed as:SELECT *
FROM table_a
WHERE field_only_in_parent_table IN (
SELECT table_a.field_only_in_parent_table
FROM table_b
WHERE name = 'John Doe')
To be accurate the rows of table a that are returned are the ones wit non-null values in field_only_in_parent_table and only if table b has at least one row.
If table b has 0 rows, then the query returns no rows.
If table b has 0 rows, then the query returns no rows.
В списке pgsql-bugs по дате отправления: