diff --git a/mysql-test/suite/vcol/r/vcol_misc.result b/mysql-test/suite/vcol/r/vcol_misc.result index 1a16fd1a3944e..b15a398d414d6 100644 --- a/mysql-test/suite/vcol/r/vcol_misc.result +++ b/mysql-test/suite/vcol/r/vcol_misc.result @@ -591,3 +591,9 @@ DROP TABLE t; # # End of 10.5 tests # +SET tx_isolation='READ-UNCOMMITTED'; +CREATE TABLE t (a VARCHAR(10),b INT,c CHAR(10) GENERATED ALWAYS AS (a) VIRTUAL,KEY(b,c)) ENGINE=InnoDB; +INSERT INTO t (a) VALUES ('A'); +SELECT * FROM t WHERE b IS NULL ORDER BY a; +a b c +A NULL A diff --git a/mysql-test/suite/vcol/t/vcol_misc.test b/mysql-test/suite/vcol/t/vcol_misc.test index 2709ff5b46535..d11fd642e9754 100644 --- a/mysql-test/suite/vcol/t/vcol_misc.test +++ b/mysql-test/suite/vcol/t/vcol_misc.test @@ -1,5 +1,6 @@ --source include/have_ucs2.inc --source include/have_debug.inc +--source include/have_innodb.inc let $MYSQLD_DATADIR= `select @@datadir`; @@ -560,3 +561,12 @@ DROP TABLE t; --echo # --echo # End of 10.5 tests --echo # + +# +# MDEV-36896 Assertion `marked_for_read()' failed in virtual String *Field_varstring::val_str(String *, String *) +# + +SET tx_isolation='READ-UNCOMMITTED'; +CREATE TABLE t (a VARCHAR(10),b INT,c CHAR(10) GENERATED ALWAYS AS (a) VIRTUAL,KEY(b,c)) ENGINE=InnoDB; +INSERT INTO t (a) VALUES ('A'); +SELECT * FROM t WHERE b IS NULL ORDER BY a; diff --git a/sql/table.cc b/sql/table.cc index 2b283fd93e1b8..89ecb49cc214c 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -9187,7 +9187,6 @@ int TABLE::update_virtual_field(Field *vf, bool ignore_warnings) TABLE::update_virtual_fields(handler *, enum_vcol_update_mode). */ in_use->set_n_backup_active_arena(expr_arena, &backup_arena); - bitmap_clear_all(&tmp_set); vf->vcol_info->expr->walk(&Item::update_vcol_processor, 0, &tmp_set); DBUG_FIX_WRITE_SET(vf); vf->vcol_info->expr->save_in_field(vf, 0);