MariaDB 相关子查询中 DateTimes 的截断

Truncation of DateTimes in correlated subqueries in MariaDB

我的一个 group-wise maximum 查询返回了意外结果。我将其提炼为以下问题:

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;

在 MySQL 5.6 上,我得到这个:

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

在 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

为什么会这样?? MYSQL 行为是我所期望的。 MariaDB 的某处是否缺少我的设置?这在某处记录了吗?当然,这不可能是数据库中的错误,因为这是一个非常常见的查询:

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

上述查询 returns 1 在 MYSQL 中符合预期,但在 MariaDB 中 0

这似乎是 MariaDB 的错误,因为数据 returns 与 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)

错误已提交给 MariaDB: https://jira.mariadb.org/browse/MDEV-9707

更新:MariaDB 已确认该错误。