List:Commits« Previous MessageNext Message »
From:Roy Lyseng Date:November 5 2009 7:34am
Subject:Re: bzr commit into mysql-5.1-bugteam branch (v.narayanan:3197)
Bug#47762
View as plain text  

Kevin Lewis wrote:
> Roy Lyseng wrote:
>> This is actually correct and in compliance with the standard. Think of
>>
>> SELECT COUNT(*) FROM t2 WHERE a > NULL;
>>
>> which should return zero if there are no matching rows. The results of 
>> the other set functions (MIN, MAX, SUM and AVG) are all NULL if there 
>> are no matching rows, or there are no non-NULL arguments to the 
>> functions, and these results can actually provide value to the 
>> application.
>>
>> If you run a query with set functions in the SELECT clause, and the 
>> query is non-grouped (no GROUP BY and no HAVING), the query shall 
>> return a single row.
>>
>> Another story is that the comparison "a > NULL" does not make sense, 
>> because the comparison is always UNKNOWN. This is a MySQL extension.
> 
> I am willing to accept the MYSQL extension of returning NULL for set 
> functions like (MIN, MAX, SUM and AVG) if the result make no sense, 
> while the regular queries return 'Empty set'.  But the following is 
> inconsistent for the result of MIN(a).  If MAX(a) and AVG(a) and SUM(a) 
> each return NULL, then MIN(a) should return NULL also.
> 
> mysql> CREATE TABLE t2 (a int(11), key k2 (a));
> Query OK, 0 rows affected (0.02 sec)
> 
> mysql> INSERT INTO t2 VALUES (1),(2);
> Query OK, 2 rows affected (0.01 sec)
> Records: 2  Duplicates: 0  Warnings: 0
> 
> mysql> SELECT MIN(a) FROM t2 WHERE a > NULL;
> +--------+
> | MIN(a) |
> +--------+
> |      1 |
> +--------+
> 1 row in set (0.00 sec)

You are right, the above result indicates a bug.

Thanks,
Roy
> 
> mysql> SELECT MAX(a) FROM t2 WHERE a > NULL;
> +--------+
> | MAX(a) |
> +--------+
> |   NULL |
> +--------+
> 1 row in set (0.00 sec)
> 
> mysql> SELECT SUM(a) FROM t2 WHERE a > NULL;
> +--------+
> | SUM(a) |
> +--------+
> |   NULL |
> +--------+
> 1 row in set (0.00 sec)
> 
> mysql> SELECT AVG(a) FROM t2 WHERE a > NULL;
> +--------+
> | AVG(a) |
> +--------+
> |   NULL |
> +--------+
> 1 row in set (0.00 sec)
> 
> mysql> SELECT COUNT(a) FROM t2 WHERE a > NULL;
> +----------+
> | COUNT(a) |
> +----------+
> |        0 |
> +----------+
> 1 row in set (0.00 sec)
> 
> mysql> SELECT a FROM t2 WHERE a > NULL;
> Empty set (0.00 sec)
Thread
bzr commit into mysql-5.1-bugteam branch (v.narayanan:3197) Bug#47762V Narayanan30 Oct
  • Re: bzr commit into mysql-5.1-bugteam branch (v.narayanan:3197)Bug#47762Jørgen Løland3 Nov
  • Re: bzr commit into mysql-5.1-bugteam branch (v.narayanan:3197)Bug#47762Jørgen Løland3 Nov
    • Re: bzr commit into mysql-5.1-bugteam branch (v.narayanan:3197)Bug#47762V Narayanan3 Nov
      • Re: bzr commit into mysql-5.1-bugteam branch (v.narayanan:3197)Bug#47762Kevin Lewis4 Nov
        • Re: bzr commit into mysql-5.1-bugteam branch (v.narayanan:3197)Bug#47762Roy Lyseng4 Nov
          • Re: bzr commit into mysql-5.1-bugteam branch (v.narayanan:3197)Bug#47762Kevin Lewis5 Nov
            • Re: bzr commit into mysql-5.1-bugteam branch (v.narayanan:3197)Bug#47762Roy Lyseng5 Nov
        • Re: bzr commit into mysql-5.1-bugteam branch (v.narayanan:3197)Bug#47762Sergei Golubchik5 Nov
  • Re: bzr commit into mysql-5.1-bugteam branch (v.narayanan:3197)Bug#47762Sergei Golubchik6 Nov
    • Re: bzr commit into mysql-5.1-bugteam branch (v.narayanan:3197)Bug#47762V Narayanan11 Nov
      • Re: bzr commit into mysql-5.1-bugteam branch (v.narayanan:3197)Bug#47762V Narayanan17 Nov
        • Re: bzr commit into mysql-5.1-bugteam branch (v.narayanan:3197)Bug#47762Kevin Lewis17 Nov
          • Re: bzr commit into mysql-5.1-bugteam branch (v.narayanan:3197)Bug#47762V Narayanan17 Nov