-
Notifications
You must be signed in to change notification settings - Fork 6k
Closed
Labels
affects-5.3This bug affects 5.3.x versions.This bug affects 5.3.x versions.affects-5.4This bug affects the 5.4.x(LTS) versions.This bug affects the 5.4.x(LTS) versions.affects-6.0affects-6.1This bug affects the 6.1.x(LTS) versions.This bug affects the 6.1.x(LTS) versions.affects-6.2affects-6.3affects-6.4affects-6.5This bug affects the 6.5.x(LTS) versions.This bug affects the 6.5.x(LTS) versions.affects-6.6affects-7.0affects-7.1This bug affects the 7.1.x(LTS) versions.This bug affects the 7.1.x(LTS) versions.affects-7.2affects-7.3affects-7.4affects-7.5This bug affects the 7.5.x(LTS) versions.This bug affects the 7.5.x(LTS) versions.component/ddlThis issue is related to DDL of TiDB.This issue is related to DDL of TiDB.severity/majortype/bugThe issue is confirmed as a bug.The issue is confirmed as a bug.
Description
Bug Report
Please answer these questions before submitting your issue. Thanks!
1. Minimal reproduce step (Required)
mysql> show create table t\G
*************************** 1. row ***************************
Table: t
Create Table: CREATE TABLE `t` (
`a` int(11) DEFAULT NULL,
CONSTRAINT `t_chk_1` CHECK ((1 < `a`)) /*!80016 NOT ENFORCED */,
CONSTRAINT `t_chk_2` CHECK ((1 < `a`)) /*!80016 NOT ENFORCED */,
CONSTRAINT `t_chk_3` CHECK ((1 < `a`)) /*!80016 NOT ENFORCED */,
CONSTRAINT `check_1` CHECK ((1 < `a`)) /*!80016 NOT ENFORCED */,
CONSTRAINT `t_chk_4` CHECK ((1 < `a`)) /*!80016 NOT ENFORCED */
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
1 row in set (0.00 sec)
mysql> insert t select 1;
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> select * from t;
+------+
| a |
+------+
| 2 |
| 2 |
| 1 |
+------+
3 rows in set (0.01 sec)
mysql> ALTER TABLE t ALTER CONSTRAINT t_chk_1 ENFORCED;
ERROR 3819 (HY000): Check constraint 't_chk_1' is violated.
mysql> select * from t;
+------+
| a |
+------+
| 2 |
| 2 |
| 1 |
+------+
3 rows in set (0.01 sec)
mysql> show create table t\G
*************************** 1. row ***************************
Table: t
Create Table: CREATE TABLE `t` (
`a` int(11) DEFAULT NULL,
CONSTRAINT `t_chk_2` CHECK ((1 < `a`)) /*!80016 NOT ENFORCED */,
CONSTRAINT `t_chk_3` CHECK ((1 < `a`)) /*!80016 NOT ENFORCED */,
CONSTRAINT `check_1` CHECK ((1 < `a`)) /*!80016 NOT ENFORCED */,
CONSTRAINT `t_chk_4` CHECK ((1 < `a`)) /*!80016 NOT ENFORCED */
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
1 row in set (0.00 sec)
mysql> select * from information_schema.CHECK_CONSTRAINTS;
+--------------------+-------------------+-----------------+--------------+
| CONSTRAINT_CATALOG | CONSTRAINT_SCHEMA | CONSTRAINT_NAME | CHECK_CLAUSE |
+--------------------+-------------------+-----------------+--------------+
| def | sbtest | check_1 | (1 < `a`) |
| def | sbtest | t_chk_2 | (1 < `a`) |
| def | sbtest | t_chk_3 | (1 < `a`) |
| def | sbtest | check_1 | (1 < `a`) |
| def | sbtest | t_chk_4 | (1 < `a`) |
+--------------------+-------------------+-----------------+--------------+
5 rows in set (0.00 sec)
mysql>
2. What did you expect to see? (Required)
t_chk_1
should be keep NOT ENFORCED, but not loss.
and, in mysql, the logic is right.
mysql> select version();
+-----------+
| version() |
+-----------+
| 8.1.0 |
+-----------+
1 row in set (0.00 sec)
mysql> ALTER TABLE t ALTER CONSTRAINT t_chk_1 ENFORCED;
ERROR 3819 (HY000): Check constraint 't_chk_1' is violated.
mysql> select * from t;
+------+
| a |
+------+
| 1 |
| 2 |
| 2 |
+------+
3 rows in set (0.00 sec)
mysql> show create table t\G
*************************** 1. row ***************************
Table: t
Create Table: CREATE TABLE `t` (
`a` int DEFAULT NULL,
CONSTRAINT `check_1` CHECK ((1 < `a`)) /*!80016 NOT ENFORCED */,
CONSTRAINT `t_chk_1` CHECK ((1 < `a`)) /*!80016 NOT ENFORCED */,
CONSTRAINT `t_chk_2` CHECK ((1 < `a`)) /*!80016 NOT ENFORCED */,
CONSTRAINT `t_chk_3` CHECK ((1 < `a`)) /*!80016 NOT ENFORCED */,
CONSTRAINT `t_chk_4` CHECK ((1 < `a`)) /*!80016 NOT ENFORCED */
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin
1 row in set (0.00 sec)
mysql> select * from information_schema.CHECK_CONSTRAINTS;
+--------------------+-------------------+-----------------+--------------+
| CONSTRAINT_CATALOG | CONSTRAINT_SCHEMA | CONSTRAINT_NAME | CHECK_CLAUSE |
+--------------------+-------------------+-----------------+--------------+
| def | sbtest | t_chk_1 | (1 < `a`) |
| def | sbtest | t_chk_2 | (1 < `a`) |
| def | sbtest | t_chk_3 | (1 < `a`) |
| def | sbtest | check_1 | (1 < `a`) |
| def | sbtest | t_chk_4 | (1 < `a`) |
+--------------------+-------------------+-----------------+--------------+
5 rows in set (0.00 sec)
3. What did you see instead (Required)
4. What is your TiDB version? (Required)
Release Version: v7.5.0-alpha
yao-2110
Metadata
Metadata
Assignees
Labels
affects-5.3This bug affects 5.3.x versions.This bug affects 5.3.x versions.affects-5.4This bug affects the 5.4.x(LTS) versions.This bug affects the 5.4.x(LTS) versions.affects-6.0affects-6.1This bug affects the 6.1.x(LTS) versions.This bug affects the 6.1.x(LTS) versions.affects-6.2affects-6.3affects-6.4affects-6.5This bug affects the 6.5.x(LTS) versions.This bug affects the 6.5.x(LTS) versions.affects-6.6affects-7.0affects-7.1This bug affects the 7.1.x(LTS) versions.This bug affects the 7.1.x(LTS) versions.affects-7.2affects-7.3affects-7.4affects-7.5This bug affects the 7.5.x(LTS) versions.This bug affects the 7.5.x(LTS) versions.component/ddlThis issue is related to DDL of TiDB.This issue is related to DDL of TiDB.severity/majortype/bugThe issue is confirmed as a bug.The issue is confirmed as a bug.