[MDEV-3503] LP:1008773 - Wrong result (NULL instead of a value) with no matching rows, subquery in FROM and HAVING Created: 2012-06-04  Updated: 2015-02-02  Resolved: 2012-10-04

Status: Closed
Project: MariaDB Server
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Bug Priority: Minor
Reporter: Elena Stepanova Assignee: Timour Katchaounov (Inactive)
Resolution: Fixed Votes: 0
Labels: Launchpad

Attachments: XML File LPexportBug1008773.xml    

 Description   

The following query

SELECT MAX(a), ( SELECT 1 FROM t2 ) AS bb FROM t1

with 0 rows in t1 and 1 row in t2 produces NULL, NULL on maria/5.3 and maria/5.5. Same happens if t1 is not empty, but the outer SELECT has an impossible WHERE condition. t2 can have more rows too, in which case a subquery should use an aggregate function, e.g. SUM.

The same query without t2 produces NULL, 1;
SELECT MAX(a), ( SELECT 1 ) AS bb FROM t1

maria-5.1, maria-5.2, mysql-5.1, mysql-5.5, mysql-trunk, postgres-8.4.7 return NULL, 1 for both queries.

Reproducible with MyISAM and Aria, but not InnoDB.
Reproducible with the default optimizer_switch as well as with all OFF values (except for in_to_exists required to execute the query).

EXPLAIN (with in_to_exists=on, everything else OFF):

id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t1 system NULL NULL NULL NULL 0 0.00 const row not found
2 SUBQUERY t2 system NULL NULL NULL NULL 1 100.00
Warnings:
Note 1003 select max(NULL) AS `MAX(a)`,(select 1 from dual) AS `bb` from `test`.`t1`

  1. Test case:

SET optimizer_switch='in_to_exists=on';

CREATE TABLE t1 (a INT) ENGINE=MyISAM;
CREATE TABLE t2 (b INT) ENGINE=MyISAM;
INSERT INTO t2 VALUES (1);

  1. Either t1 is empty, or SELECT has an impossible condition.
  2. Either t2 has 1 row, or an aggregate function, e.g. SUM, is used in the subquery.

SELECT MAX(a), ( SELECT 1 FROM t2 ) AS bb FROM t1;

  1. End of test case
  1. Expected result:
    #
  2. MAX(a) bb
  3. NULL 1
  1. Actual result:
    #
  2. MAX(a) bb
  3. NULL NULL


 Comments   
Comment by Sergei Petrunia [ 2012-06-14 ]

Re: Wrong result (NULL instead of a value) with no matching rows, subquery in FROM and HAVING
Reviewing...

Comment by Rasmus Johansson (Inactive) [ 2012-06-14 ]

Launchpad bug id: 1008773

Generated at Thu Feb 08 06:49:06 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.