--echo # --echo # Start of 10.4 tests --echo # --echo # --echo # MDEV-18153 Assertion `0' or Assertion `btr_validate_index(index, 0)' failed in row_upd_sec_index_entry or error code 126: Index is corrupted upon UPDATE with TIME_ROUND_FRACTIONAL --echo # SET sql_mode=DEFAULT; --echo # OK: same FSP + virtual index CREATE TABLE t1 ( t TIME(4), d TIME, v TIME(4) AS (t) VIRTUAL, KEY(v,d) ); DROP TABLE t1; CREATE TABLE t1 ( t TIME(4), d TIME, v TIME(4) AS ('10:20:30.1234') VIRTUAL, KEY(v,d) ); DROP TABLE t1; --echo # OK: lower FSP + no virtual index CREATE TABLE t1 ( t TIME(4), d TIME, v TIME(3) AS (t) VIRTUAL ); DROP TABLE t1; CREATE TABLE t1 ( t TIME(4), d TIME, v TIME(3) AS ('2001-01-01 10:20:30.1234') VIRTUAL ); DROP TABLE t1; --echo # NOT OK: lower FSP + virtual index --error ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED CREATE TABLE t1 ( t TIME(4), d TIME, v TIME(3) AS (t) VIRTUAL, KEY(v,d) ); --error ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED CREATE TABLE t1 ( t TIME(4), d TIME, v TIME(3) AS (COALESCE(t)) VIRTUAL, KEY(v,d) ); --error ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED CREATE TABLE t1 ( t TIME(4), d TIME, v TIME(3) AS ('2001-01-01 10:20:30.1234') VIRTUAL, KEY(v,d) ); --echo # OK: lower FSP + ROUND + virtual index SET sql_mode=DEFAULT; CREATE TABLE t1 ( t TIME(4), d TIME, v TIME(3) AS (ROUND(t,3)) VIRTUAL, KEY(v,d) ); INSERT IGNORE INTO t1 (t,d) VALUES ('12:44:34.0496','21:27:53'); SELECT * FROM t1; SET SQL_MODE= 'TIME_ROUND_FRACTIONAL'; UPDATE IGNORE t1 SET d = CURRENT_TIME; DROP TABLE t1; SET sql_mode=DEFAULT; --echo # OK: lower FSP + TRUNCATE + virtual index SET sql_mode=DEFAULT; CREATE TABLE t1 ( t TIME(4), d TIME, v TIME(3) AS (TRUNCATE(t,3)) VIRTUAL, KEY(v,d) ); INSERT IGNORE INTO t1 (t,d) VALUES ('12:44:34.0496','21:27:53'); SELECT * FROM t1; SET SQL_MODE= 'TIME_ROUND_FRACTIONAL'; UPDATE IGNORE t1 SET d = CURRENT_TIME; DROP TABLE t1; SET sql_mode=DEFAULT; --echo # --echo # MDEV-20423 Assertion `0' failed or `btr_validate_index(index, 0, false)' in row_upd_sec_index_entry or error code 126: Index is corrupted upon DELETE with TIME_ROUND_FRACTIONAL --echo # --error ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED CREATE TABLE t1 ( a TIME(6), v VARCHAR(30) GENERATED ALWAYS AS (CAST(a AS TIME(3))) VIRTUAL, KEY (v) ); CREATE TABLE t1 ( a TIME(6), v VARCHAR(30) GENERATED ALWAYS AS (TRUNCATE(a,3)) VIRTUAL, KEY (v) ); DROP TABLE t1; CREATE TABLE t1 ( a TIME(6), v VARCHAR(30) GENERATED ALWAYS AS (ROUND(a,3)) VIRTUAL, KEY (v) ); DROP TABLE t1; --echo # --echo # End of 10.4 tests --echo #