MDEV-35130 Assertion fails in trx_t::check_bulk_buffer upon CREATE.. SELECT with vector key

Similarly to "ALTER TABLE fixes for high-level indexes", don't enable bulk
insert when issuing create ... insert into a table containing vector
index. InnoDB can't handle situation when bulk insert is enabled for
one table but disabled for another. We can't do bulk insert on vector
index as it does table updates currently.
This commit is contained in:
Sergey Vojtovich 2024-10-23 23:04:56 +04:00 committed by Sergei Golubchik
parent f6de9a379a
commit 883fb66cd4
3 changed files with 12 additions and 1 deletions

View File

@ -181,3 +181,8 @@ create table t (v vector(1), key(v)) engine=innodb;
select v from t where v = vec_fromtext('[1]');
v
drop table t;
#
# MDEV-35130 Assertion fails in trx_t::check_bulk_buffer upon CREATE.. SELECT with vector key
#
CREATE TABLE t (pk INT PRIMARY KEY, v VECTOR(5) NOT NULL, VECTOR(v)) ENGINE=InnoDB SELECT 1 AS pk, x'f09baa3ea172763f123def3e0c7fe53e288bf33e' AS v;
DROP TABLE t;

View File

@ -176,3 +176,9 @@ drop table t;
create table t (v vector(1), key(v)) engine=innodb;
select v from t where v = vec_fromtext('[1]');
drop table t;
--echo #
--echo # MDEV-35130 Assertion fails in trx_t::check_bulk_buffer upon CREATE.. SELECT with vector key
--echo #
CREATE TABLE t (pk INT PRIMARY KEY, v VECTOR(5) NOT NULL, VECTOR(v)) ENGINE=InnoDB SELECT 1 AS pk, x'f09baa3ea172763f123def3e0c7fe53e288bf33e' AS v;
DROP TABLE t;

View File

@ -4998,7 +4998,7 @@ select_create::prepare(List<Item> &_values, SELECT_LEX_UNIT *u)
if (info.handle_duplicates == DUP_UPDATE)
table->file->extra(HA_EXTRA_INSERT_WITH_UPDATE);
if (thd->locked_tables_mode <= LTM_LOCK_TABLES &&
!table->s->long_unique_table)
!table->s->long_unique_table && !table->s->hlindexes())
{
table->file->ha_start_bulk_insert((ha_rows) 0);
if (thd->lex->duplicates == DUP_ERROR && !thd->lex->ignore)