[MDEV-15962] Column-level CHECK constraint on timestamp column causes ER_EXPRESSION_REFERS_TO_UNINIT_FIELD Created: 2018-04-21  Updated: 2023-04-27

Status: Open
Project: MariaDB Server
Component/s: Data Definition - Alter Table, Data Definition - Create Table, Server
Affects Version/s: 10.2, 10.3, 10.4
Fix Version/s: 10.4

Type: Bug Priority: Major
Reporter: Elena Stepanova Assignee: Alexander Barkov
Resolution: Unresolved Votes: 0
Labels: None

Issue Links:
Relates
relates to MDEV-18278 Misleading error message in error log... Closed

 Description   

10.2 469a4b02ce

MariaDB [test]> CREATE TABLE t1 (t TIMESTAMP CHECK(t>'2018-01-01 00:00:00'));
ERROR 4029 (01000): Expression for field `t` is refering to uninitialized field `t`

Datetime works all right.

MariaDB [test]> CREATE TABLE t1 (t DATETIME CHECK(t>'2018-01-01 00:00:00'));
Query OK, 0 rows affected (0.39 sec)

Table-level CHECK also works all right:

MariaDB [test]> CREATE TABLE t2 (t TIMESTAMP, CHECK(t>'2018-01-01 00:00:00'));
Query OK, 0 rows affected (0.19 sec)



 Comments   
Comment by Elena Stepanova [ 2018-05-17 ]

Same happens for virtual columns (both stored and generated), although maybe it's by design:

MariaDB [test]> CREATE TABLE t1 (a INT, b INT AS (a) CHECK (b>0));
ERROR 4029 (01000): Expression for field `b` is refering to uninitialized field `b`

Table-level still works:

MariaDB [test]> CREATE TABLE t1 (a INT, b INT AS (a), CHECK (b>0));
Query OK, 0 rows affected (0.50 sec)

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