From: | Pantelis Theodosiou <ypercube(at)gmail(dot)com> |
---|---|
To: | flavio(dot)ricci82(at)gmail(dot)com, pgsql-bugs(at)lists(dot)postgresql(dot)org |
Subject: | Re: BUG #16834: where-in: if the nested query fails, the parent query returns all the records |
Date: | 2021-01-22 14:48:56 |
Message-ID: | CAE3TBxwP39XvfgKGd+zvfMbN2G1KM-LVMcFeoyOijAij1+a0Rw@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
On Fri, Jan 22, 2021 at 2:38 PM Pantelis Theodosiou <ypercube(at)gmail(dot)com>
wrote:
>
>
> On Fri, Jan 22, 2021 at 12:57 PM PG Bug reporting form <
> noreply(at)postgresql(dot)org> wrote:
>
>> The following bug has been logged on the website:
>>
>> Bug reference: 16834
>> Logged by: Flavio Ricci
>> Email address: flavio(dot)ricci82(at)gmail(dot)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,
>>
>> Flavio
>>
>
> This 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.
From | Date | Subject | |
---|---|---|---|
Next Message | Flavio Ricci | 2021-01-22 15:19:58 | Re: BUG #16834: where-in: if the nested query fails, the parent query returns all the records |
Previous Message | Pantelis Theodosiou | 2021-01-22 14:38:52 | Re: BUG #16834: where-in: if the nested query fails, the parent query returns all the records |