1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-08 11:22:35 +03:00

MDEV-29753 An error is wrongly reported during INSERT with vcol index

See also commits aa8a31da and 64678c for a Bug #22990029 fix.

In this scenario INSERT chose to check if delete unmarking is available for
a just deleted record. To build an update vector, it needed to calculate
the vcols as well. Since this INSERT was not IGNORE-flagged, recalculation
failed.

Solutiuon: temporarily set abort_on_warning=true, while calculating the
column for delete-unmarked insert.
This commit is contained in:
Nikita Malyavin
2022-10-10 19:41:09 +03:00
parent 3cd2c1e8b6
commit 128356b4b1
7 changed files with 75 additions and 9 deletions

View File

@@ -275,9 +275,9 @@ DROP TABLE t1;
CREATE TABLE t1(a INT PRIMARY KEY, b INT, vb DATE AS(b) VIRTUAL, KEY(vb))
ENGINE=InnoDB;
INSERT IGNORE INTO t1 (a,b) VALUES(1,20190132);
SELECT * FROM t1;
BEGIN;
DELETE FROM t1;
--error ER_TRUNCATED_WRONG_VALUE
INSERT INTO t1 (a,b) VALUES(1,20190123);
SELECT * FROM t1;
ROLLBACK;
@@ -361,5 +361,24 @@ SELECT fld2 FROM t FORCE INDEX(fld1);
--disconnect stop_purge
DROP TABLE t, t_odd;
--echo #
--echo # MDEV-29753 An error is wrongly reported during INSERT with vcol index
--echo # See also Bug #22990029
--echo #
CREATE TABLE t(pk INT PRIMARY KEY,
fld1 INT NOT NULL,
fld2 INT AS (100/fld1) VIRTUAL,
KEY(fld1), KEY(fld2));
INSERT IGNORE t(pk, fld1) VALUES(1, 0);
SELECT * FROM t;
BEGIN;
DELETE FROM t;
INSERT INTO t (pk, fld1) VALUES(1,1);
SELECT * FROM t;
--echo # Cleanup
ROLLBACK;
DROP TABLE t;
--echo # End of 10.3 tests