mirror of
https://github.com/MariaDB/server.git
synced 2025-08-09 22:24:09 +03:00
* fix the truncate-by-handler variant, used by InnoDB * test that insert works after truncate, meaning graph table was emptied * test that the vector index size is zero after truncate in MyISAM
124 lines
5.6 KiB
Plaintext
124 lines
5.6 KiB
Plaintext
replace_result InnoDB MyISAM;
|
|
error ER_NO_INDEX_ON_TEMPORARY;
|
|
create temporary table t1 (id int auto_increment primary key, v blob not null, vector index (v));
|
|
|
|
error ER_NOT_SUPPORTED_YET;
|
|
create table t1 (id int auto_increment primary key,
|
|
u blob not null, vector index (u),
|
|
v blob not null, vector index (v));
|
|
|
|
create table t1 (id int auto_increment primary key, v blob not null, vector index (v));
|
|
replace_result InnoDB MyISAM;
|
|
show create table t1;
|
|
show keys from t1;
|
|
query_vertical select * from information_schema.statistics where table_name='t1';
|
|
# print unpack("H*",pack("f*",map{rand}1..5))
|
|
insert t1 (v) values (x'e360d63ebe554f3fcdbc523f4522193f5236083d'),
|
|
(x'f511303f72224a3fdd05fe3eb22a133ffae86a3f'),
|
|
(x'f09baa3ea172763f123def3e0c7fe53e288bf33e'),
|
|
(x'b97a523f2a193e3eb4f62e3f2d23583e9dd60d3f'),
|
|
(x'f7c5df3e984b2b3e65e59d3d7376db3eac63773e'),
|
|
(x'de01453ffa486d3f10aa4d3fdd66813c71cb163f'),
|
|
(x'76edfc3e4b57243f10f8423fb158713f020bda3e'),
|
|
(x'56926c3fdf098d3e2c8c5e3d1ad4953daa9d0b3e'),
|
|
(x'7b713f3e5258323f80d1113d673b2b3f66e3583f'),
|
|
(x'6ca1d43e9df91b3fe580da3e1c247d3f147cf33e');
|
|
|
|
select id, hex(v), vec_totext(v) from t1;
|
|
flush tables;
|
|
# test with a valid query vector
|
|
select id,vec_distance(v, x'B047263c9f87233fcfd27e3eae493e3f0329f43e') d from t1 order by d limit 3;
|
|
# swapped arguments
|
|
select id,vec_distance(x'b047263C9f87233fcfd27e3eae493e3f0329f43e', v) d from t1 order by d limit 3;
|
|
# test with NULL (id is unpredictable)
|
|
select id>0,vec_distance(v, NULL) d from t1 order by d limit 3;
|
|
# test with invalid query vector (id is unpredictable)
|
|
select id>0,vec_distance(v, x'123456') d from t1 order by d limit 3;
|
|
select t1.id as id1, t2.id as id2, vec_distance(t1.v, t2.v) from t1, t1 as t2 order by 3,1,2;
|
|
|
|
# test delete
|
|
delete from t1 where v = x'7b713f3e5258323f80d1113d673b2b3f66e3583f';
|
|
select id,vec_distance(v, x'B047263C9f87233fcfd27e3eae493e3f0329f43e') d from t1 order by d limit 3;
|
|
|
|
# test insert deleted vec
|
|
insert t1 (v) values (x'7b713f3e5258323f80d1113d673b2b3f66e3583f');
|
|
select id,vec_distance(v, x'b047263c9F87233fcfd27e3eae493e3f0329f43e') d from t1 order by d limit 3;
|
|
|
|
# test update
|
|
select id,vec_distance(v, x'B047263c9F87233fcfd27e3eae493e3f0329f43e') d from t1 order by d limit 5;
|
|
update t1 set v=x'76EDFC3E4B57243F10F8423FB158713F020BAA3E' where v=x'6CA1D43E9DF91B3FE580DA3E1C247D3F147CF33E';
|
|
select id,vec_distance(v, x'B047263C9F87233fcfd27e3eae493e3f0329f43e') d from t1 order by d limit 5;
|
|
|
|
# test delete all and reinsert
|
|
delete from t1;
|
|
insert t1 (v) values (x'e360d63ebe554f3fcdbc523f4522193f5236083d'),
|
|
(x'f511303f72224a3fdd05fe3eb22a133ffae86a3f'),
|
|
(x'f09baa3ea172763f123def3e0c7fe53e288bf33e'),
|
|
(x'b97a523f2a193e3eb4f62e3f2d23583e9dd60d3f'),
|
|
(x'f7c5df3e984b2b3e65e59d3d7376db3eac63773e'),
|
|
(x'de01453ffa486d3f10aa4d3fdd66813c71cb163f'),
|
|
(x'76edfc3e4b57243f10f8423fb158713f020bda3e'),
|
|
(x'56926c3fdf098d3e2c8c5e3d1ad4953daa9d0b3e'),
|
|
(x'7b713f3e5258323f80d1113d673b2b3f66e3583f'),
|
|
(x'6ca1d43e9df91b3fe580da3e1c247d3f147cf33e');
|
|
select id,vec_distance(v, x'b047263c9f87233Fcfd27e3eae493e3f0329f43e') d from t1 order by d limit 5;
|
|
|
|
|
|
--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
|
|
insert t1 (v) values ('');
|
|
--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
|
|
insert t1 (v) values (x'1234');
|
|
--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
|
|
insert t1 (v) values (x'12345678');
|
|
|
|
drop table t1;
|
|
let $datadir=`select @@datadir`;
|
|
list_files $datadir/test;
|
|
|
|
--echo # Check if CREATE TABLE ... LIKE inherits VECTOR index
|
|
create table t1 (id int auto_increment primary key, v blob not null, vector index (v));
|
|
create table t2 like t1;
|
|
replace_result InnoDB MyISAM;
|
|
show create table t2;
|
|
drop table t1, t2;
|
|
list_files $datadir/test;
|
|
|
|
--echo # Test insert ... select with vector index
|
|
create table t1 (id int auto_increment primary key, v blob not null, vector index (v));
|
|
create table t2 like t1;
|
|
insert t1 (v) values (x'e360d63ebe554f3fcdbc523f4522193f5236083d'),
|
|
(x'f511303f72224a3fdd05fe3eb22a133ffae86a3f'),
|
|
(x'f09baa3ea172763f123def3e0c7fe53e288bf33e'),
|
|
(x'b97a523f2a193e3eb4f62e3f2d23583e9dd60d3f'),
|
|
(x'f7c5df3e984b2b3e65e59d3d7376db3eac63773e'),
|
|
(x'de01453ffa486d3f10aa4d3fdd66813c71cb163f'),
|
|
(x'76edfc3e4b57243f10f8423fb158713f020bda3e'),
|
|
(x'56926c3fdf098d3e2c8c5e3d1ad4953daa9d0b3e'),
|
|
(x'7b713f3e5258323f80d1113d673b2b3f66e3583f'),
|
|
(x'6ca1d43e9df91b3fe580da3e1c247d3f147cf33e');
|
|
insert into t2 select id+10, v from t1;
|
|
insert into t1 select * from t2;
|
|
select id, hex(v) from t1;
|
|
drop table t1, t2;
|
|
list_files $datadir/test;
|
|
|
|
create table t1 (id int auto_increment primary key, v blob not null, vector index (v));
|
|
insert t1 (id, v) values (1, x'e360d63ebe554f3fcdbc523f4522193f5236083d');
|
|
truncate table t1;
|
|
if ($MTR_COMBINATION_MYISAM) {
|
|
--replace_result $datadir datadir
|
|
--exec $MYISAMCHK -d $datadir/test/t1#i#01
|
|
}
|
|
insert t1 (id, v) values (1, x'e360d63ebe554f3fcdbc523f4522193f5236083d');
|
|
truncate table t1;
|
|
if ($MTR_COMBINATION_MYISAM) {
|
|
--replace_result $datadir datadir
|
|
--exec $MYISAMCHK -d $datadir/test/t1#i#01
|
|
}
|
|
insert t1 (id, v) values (1, x'e360d63ebe554f3fcdbc523f4522193f5236083d');
|
|
select id, hex(v) from t1;
|
|
replace_result InnoDB MyISAM;
|
|
show create table t1;
|
|
drop table t1;
|
|
list_files $datadir/test;
|