Обсуждение: BUG #2503: Query results differ based on record count of unrelated table.

Поиск
Список
Период
Сортировка

BUG #2503: Query results differ based on record count of unrelated table.

От
"Russell Francis"
Дата:
The following bug has been logged online:

Bug reference:      2503
Logged by:          Russell Francis
Email address:      rfrancis@ev.net
PostgreSQL version: 8.1.4
Operating system:   FreeBSD 6.1
Description:        Query results differ based on record count of unrelated
table.
Details:

Summary:

If a SELECT statement contains a table in it's FROM clause which has 0
records in it, the query will not return any results.  If a record is added
to the table even though it shouldn't modify the results of query, the query
will return the expected result.

The SQL statements below are a trimmed down test case which duplicates this
issue.  The identical SELECT statements return different results depending
on the record count of the unrelated table_b.

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

CREATE TABLE table_a
(
    ta_col_a    INTEGER
);

CREATE TABLE table_b
(
    tb_col_a    INTEGER
);

INSERT INTO table_a ( ta_col_a ) VALUES ( 50 );

SELECT table_a.* FROM table_a, table_b WHERE table_a.ta_col_a > 0;

INSERT INTO table_b ( tb_col_a ) VALUES ( 50 );

SELECT table_a.* FROM table_a, table_b WHERE table_a.ta_col_a > 0;

Re: BUG #2503: Query results differ based on record count of unrelated table.

От
Alvaro Herrera
Дата:
Russell Francis wrote:

> If a SELECT statement contains a table in it's FROM clause which has 0
> records in it, the query will not return any results.  If a record is added
> to the table even though it shouldn't modify the results of query, the query
> will return the expected result.
>
> The SQL statements below are a trimmed down test case which duplicates this
> issue.  The identical SELECT statements return different results depending
> on the record count of the unrelated table_b.
>
> SELECT table_a.* FROM table_a, table_b WHERE table_a.ta_col_a > 0;

table_b is certainly not unrelated, as it appears in the FROM clause.
So the query is correct to not show any result, per definition of
cartesian product.

--
Alvaro Herrera                                http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

Re: BUG #2503: Query results differ based on record count

От
Russell Francis
Дата:
Alvaro Herrera wrote:
> Russell Francis wrote:
>=20
>> If a SELECT statement contains a table in it's FROM clause which has 0
>> records in it, the query will not return any results.  If a record is ad=
ded
>> to the table even though it shouldn't modify the results of query, the q=
uery
>> will return the expected result.
>>
>> The SQL statements below are a trimmed down test case which duplicates t=
his
>> issue.  The identical SELECT statements return different results dependi=
ng
>> on the record count of the unrelated table_b.
>>
>> SELECT table_a.* FROM table_a, table_b WHERE table_a.ta_col_a > 0;
>=20
> table_b is certainly not unrelated, as it appears in the FROM clause.
> So the query is correct to not show any result, per definition of
> cartesian product.
>=20

Alvaro,

Yes, you are correct.  Sorry.

Thanks,
Russ