diff --git a/mysql-test/main/vector2_notembedded.result b/mysql-test/main/vector2_notembedded.result index 99359057ce2..1a72ca7e0b3 100644 --- a/mysql-test/main/vector2_notembedded.result +++ b/mysql-test/main/vector2_notembedded.result @@ -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)); diff --git a/mysql-test/main/vector2_notembedded.test b/mysql-test/main/vector2_notembedded.test index 41e6327efae..7af77da4f1d 100644 --- a/mysql-test/main/vector2_notembedded.test +++ b/mysql-test/main/vector2_notembedded.test @@ -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 # diff --git a/mysql-test/suite/mariabackup/vector.result b/mysql-test/suite/mariabackup/vector.result new file mode 100644 index 00000000000..b9376a5b7c9 --- /dev/null +++ b/mysql-test/suite/mariabackup/vector.result @@ -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; diff --git a/mysql-test/suite/mariabackup/vector.test b/mysql-test/suite/mariabackup/vector.test new file mode 100644 index 00000000000..3fc9efa6b78 --- /dev/null +++ b/mysql-test/suite/mariabackup/vector.test @@ -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;