2016-03-10 4 views
2

L'une de mes requêtes group-wise maximum renvoyait des résultats inattendus. Je ramène cela à la question suivante:Troncature de DateTimes dans les sous-requêtes corrélées dans MariaDB

DROP TABLE IF EXISTS maria_bug; 
CREATE TABLE maria_bug (
    id INT NOT NULL, 
    update_time TIMESTAMP(6) NOT NULL 
); 

INSERT INTO maria_bug VALUES(1, '2001-01-01 00:00:00.200000'); 
INSERT INTO maria_bug VALUES(1, '2001-01-01 00:00:00.100000'); 

SELECT 
    m1.id, 
    m1.update_time t1, 
    (SELECT MAX(m2.update_time) FROM maria_bug m2 WHERE m1.id = m2.id) t2 
FROM maria_bug m1; 

sur MySQL 5.6, je reçois ceci:

1 2001-01-01 00:00:00.200000 2001-01-01 00:00:00.200000 
1 2001-01-01 00:00:00.100000 2001-01-01 00:00:00.200000 

Sur MariaDB (10.0.13):

1 2001-01-01 00:00:00.200000 2001-01-01 00:00:00.200000 
1 2001-01-01 00:00:00.100000 2001-01-01 00:00:00.000000 

Pourquoi est-ce qui se passe ?? Le comportement MYSQL est ce à quoi je m'attendrais. Y a-t-il un paramètre qui me manque quelque part dans MariaDB? Est-ce documenté quelque part? Certes, il ne peut pas être un bug dans la base de données car il est une question très commune:

SELECT COUNT(*) FROM maria_bug m1 
WHERE update_time < (SELECT MAX(m2.update_time) FROM maria_bug m2 WHERE m1.id = m2.id) 

La requête ci-dessus renvoie 1 dans MYSQL comme prévu, mais 0 dans MariaDB.

+1

Un bogue est classé dans MariaDB. https://jira.mariadb.org/browse/MDEV-9707 –

Répondre

1

Cela semble un bug pour MariaDB, car les données retournées sont différentes des données dans la table.

mysql> SELECT *, (SELECT MAX(m2.update_time) FROM maria_bug m2 WHERE m1.id <> 0) max_update FROM maria_bug m1; 
+----+----------------------------+----------------------------+ 
| id | update_time    | max_update     | 
+----+----------------------------+----------------------------+ 
| 1 | 2001-01-01 00:00:00.200000 | 2001-01-01 00:00:00.200000 | 
| 1 | 2001-01-01 00:00:00.100000 | 2001-01-01 00:00:00.000000 | 
+----+----------------------------+----------------------------+ 
2 rows in set (0.00 sec) 

Bug est déposée à MariaDB: https://jira.mariadb.org/browse/MDEV-9707

Mise à jour: Le bug est confirmé par MariaDB. enter image description here

+0

Veuillez déposer un rapport de bug avec mariadb.com –

+1

@RickJames Classé. https://jira.mariadb.org/browse/MDEV-9707 –

+0

Le bug déposé est confirmé par MariaDB. @RickJames –