mysqldump and mariadb-backup tests of vector indexes

This commit is contained in:
Sergei Golubchik 2024-10-04 14:31:49 +02:00
parent eb4ab2ce8f
commit 855aefb7b5
4 changed files with 172 additions and 0 deletions

View file

@ -1,4 +1,70 @@
#
# mysqldump
#
create table t1 (id int auto_increment primary key, v blob not null, vector index (v));
insert t1 (v) values (Vec_Fromtext('[0.418,0.809,0.823,0.598,0.033]')),
(Vec_Fromtext('[0.687,0.789,0.496,0.574,0.917]')),
(Vec_Fromtext('[0.333,0.962,0.467,0.448,0.475]')),
(Vec_Fromtext('[0.822,0.185,0.683,0.211,0.554]')),
(Vec_Fromtext('[0.437,0.167,0.077,0.428,0.241]')),
(Vec_Fromtext('[0.769,0.926,0.803,0.015,0.589]')),
(Vec_Fromtext('[0.493,0.641,0.761,0.942,0.425]')),
(Vec_Fromtext('[0.924,0.275,0.054,0.073,0.136]')),
(Vec_Fromtext('[0.186,0.696,0.035,0.668,0.847]')),
(Vec_Fromtext('[0.415,0.609,0.426,0.988,0.475]'));
select id from t1 order by vec_distance_euclidean(v, Vec_FromText('[1,0,0,0,0]')) limit 3;
id
8
5
4
/*M!999999\- enable the sandbox mode */
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `t1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`v` blob NOT NULL,
PRIMARY KEY (`id`),
VECTOR KEY `v` (`v`)
) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
INSERT INTO `t1` VALUES
(1,0x1904D63EA01A4F3F21B0523F8716193F022B073D),
(2,0x3BDF2F3FE7FB493FB6F3FD3EAAF1123F83C06A3F),
(3,0xFA7EAA3EA245763FA01AEF3E4260E53E3333F33E),
(4,0x986E523FA4703D3E17D92E3F6210583EF2D20D3F),
(5,0x77BEDF3E0C022B3E2DB29D3DD122DB3EB4C8763E),
(6,0x2FDD443F560E6D3F68914D3F8FC2753CB4C8163F),
(7,0x7F6AFC3E9318243FE5D0423FE926713F9A99D93E),
(8,0x448B6C3FCDCC8C3E1B2F5D3D0681953D96430B3E),
(9,0xC9763E3E0E2D323F295C0F3D0C022B3FFED4583F),
(10,0xE17AD43E6DE71B3FAC1CDA3E91ED7C3F3333F33E);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`v` blob NOT NULL,
PRIMARY KEY (`id`),
VECTOR KEY `v` (`v`)
) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
select id, Vec_ToText(v) from t1;
id Vec_ToText(v)
1 [0.418000,0.809000,0.823000,0.598000,0.033000]
2 [0.687000,0.789000,0.496000,0.574000,0.917000]
3 [0.333000,0.962000,0.467000,0.448000,0.475000]
4 [0.822000,0.185000,0.683000,0.211000,0.554000]
5 [0.437000,0.167000,0.077000,0.428000,0.241000]
6 [0.769000,0.926000,0.803000,0.015000,0.589000]
7 [0.493000,0.641000,0.761000,0.942000,0.425000]
8 [0.924000,0.275000,0.054000,0.073000,0.136000]
9 [0.186000,0.696000,0.035000,0.668000,0.847000]
10 [0.415000,0.609000,0.426000,0.988000,0.475000]
select id from t1 order by vec_distance_euclidean(v, Vec_FromText('[1,0,0,0,0]')) limit 3;
id
8
5
4
drop table t1;
#
# MDEV-35044 ALTER on a table with vector index attempts to bypass unsupported locking limitation, server crashes in THD::free_tmp_table_share
#
create table t (a int primary key, v blob not null, vector index(v));

View file

@ -1,5 +1,30 @@
--source include/not_embedded.inc
--echo #
--echo # mysqldump
--echo #
create table t1 (id int auto_increment primary key, v blob not null, vector index (v));
insert t1 (v) values (Vec_Fromtext('[0.418,0.809,0.823,0.598,0.033]')),
(Vec_Fromtext('[0.687,0.789,0.496,0.574,0.917]')),
(Vec_Fromtext('[0.333,0.962,0.467,0.448,0.475]')),
(Vec_Fromtext('[0.822,0.185,0.683,0.211,0.554]')),
(Vec_Fromtext('[0.437,0.167,0.077,0.428,0.241]')),
(Vec_Fromtext('[0.769,0.926,0.803,0.015,0.589]')),
(Vec_Fromtext('[0.493,0.641,0.761,0.942,0.425]')),
(Vec_Fromtext('[0.924,0.275,0.054,0.073,0.136]')),
(Vec_Fromtext('[0.186,0.696,0.035,0.668,0.847]')),
(Vec_Fromtext('[0.415,0.609,0.426,0.988,0.475]'));
select id from t1 order by vec_distance_euclidean(v, Vec_FromText('[1,0,0,0,0]')) limit 3;
replace_result InnoDB MyISAM;
exec $MYSQL_DUMP --compact --hex-blob test t1;
exec $MYSQL_DUMP --hex-blob test t1 > $MYSQL_TMP_DIR/vector.sql;
exec $MYSQL test < $MYSQL_TMP_DIR/vector.sql;
remove_file $MYSQL_TMP_DIR/vector.sql;
show create table t1;
select id, Vec_ToText(v) from t1;
select id from t1 order by vec_distance_euclidean(v, Vec_FromText('[1,0,0,0,0]')) limit 3;
drop table t1;
--echo #
--echo # MDEV-35044 ALTER on a table with vector index attempts to bypass unsupported locking limitation, server crashes in THD::free_tmp_table_share
--echo #

View file

@ -0,0 +1,51 @@
create table t1 (id int auto_increment primary key, v blob not null, vector index (v)) engine=innodb;
insert t1 (v) values (Vec_Fromtext('[0.418,0.809,0.823,0.598,0.033]')),
(Vec_Fromtext('[0.687,0.789,0.496,0.574,0.917]')),
(Vec_Fromtext('[0.333,0.962,0.467,0.448,0.475]')),
(Vec_Fromtext('[0.822,0.185,0.683,0.211,0.554]')),
(Vec_Fromtext('[0.437,0.167,0.077,0.428,0.241]')),
(Vec_Fromtext('[0.769,0.926,0.803,0.015,0.589]')),
(Vec_Fromtext('[0.493,0.641,0.761,0.942,0.425]')),
(Vec_Fromtext('[0.924,0.275,0.054,0.073,0.136]')),
(Vec_Fromtext('[0.186,0.696,0.035,0.668,0.847]')),
(Vec_Fromtext('[0.415,0.609,0.426,0.988,0.475]'));
select id from t1 order by vec_distance_euclidean(v, Vec_FromText('[1,0,0,0,0]')) limit 3;
id
8
5
4
drop table t1;
db.opt
t1#i#01.ibd
t1.frm
t1.ibd
# shutdown server
# remove datadir
# xtrabackup move back
# restart
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`v` blob NOT NULL,
PRIMARY KEY (`id`),
VECTOR KEY `v` (`v`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
select id, Vec_ToText(v) from t1;
id Vec_ToText(v)
1 [0.418000,0.809000,0.823000,0.598000,0.033000]
2 [0.687000,0.789000,0.496000,0.574000,0.917000]
3 [0.333000,0.962000,0.467000,0.448000,0.475000]
4 [0.822000,0.185000,0.683000,0.211000,0.554000]
5 [0.437000,0.167000,0.077000,0.428000,0.241000]
6 [0.769000,0.926000,0.803000,0.015000,0.589000]
7 [0.493000,0.641000,0.761000,0.942000,0.425000]
8 [0.924000,0.275000,0.054000,0.073000,0.136000]
9 [0.186000,0.696000,0.035000,0.668000,0.847000]
10 [0.415000,0.609000,0.426000,0.988000,0.475000]
select id from t1 order by vec_distance_euclidean(v, Vec_FromText('[1,0,0,0,0]')) limit 3;
id
8
5
4
drop table t1;

View file

@ -0,0 +1,30 @@
create table t1 (id int auto_increment primary key, v blob not null, vector index (v)) engine=innodb;
insert t1 (v) values (Vec_Fromtext('[0.418,0.809,0.823,0.598,0.033]')),
(Vec_Fromtext('[0.687,0.789,0.496,0.574,0.917]')),
(Vec_Fromtext('[0.333,0.962,0.467,0.448,0.475]')),
(Vec_Fromtext('[0.822,0.185,0.683,0.211,0.554]')),
(Vec_Fromtext('[0.437,0.167,0.077,0.428,0.241]')),
(Vec_Fromtext('[0.769,0.926,0.803,0.015,0.589]')),
(Vec_Fromtext('[0.493,0.641,0.761,0.942,0.425]')),
(Vec_Fromtext('[0.924,0.275,0.054,0.073,0.136]')),
(Vec_Fromtext('[0.186,0.696,0.035,0.668,0.847]')),
(Vec_Fromtext('[0.415,0.609,0.426,0.988,0.475]'));
select id from t1 order by vec_distance_euclidean(v, Vec_FromText('[1,0,0,0,0]')) limit 3;
let $targetdir=$MYSQLTEST_VARDIR/tmp/backup;
let $backup_log=$MYSQLTEST_VARDIR/tmp/backup.log;
--disable_result_log
exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup --target-dir=$targetdir;
exec $XTRABACKUP --prepare --target-dir=$targetdir;
--enable_result_log
drop table t1;
--list_files $targetdir/test
--source include/restart_and_restore.inc
show create table t1;
select id, Vec_ToText(v) from t1;
select id from t1 order by vec_distance_euclidean(v, Vec_FromText('[1,0,0,0,0]')) limit 3;
drop table t1;
rmdir $targetdir;