Просмотр исходного кода

added test 452 after crash on search of empty secondary index fixed

Stas Klinov 3 лет назад
Родитель
Сommit
3dc7a88f33
2 измененных файлов с 24 добавлено и 1 удалено
  1. 1 1
      test/test_452/model.bin
  2. 23 0
      test/test_452/test.xml

+ 1 - 1
test/test_452/model.bin

@@ -1 +1 @@
-a:1:{i:0;a:2:{i:0;a:3:{s:8:"sphinxql";s:60:"select * from test1 where flag=1 /*+ SecondaryIndex(flag) */";s:10:"total_rows";i:3;s:4:"rows";a:3:{i:0;a:4:{s:2:"id";s:1:"1";s:3:"tag";s:1:"1";s:4:"flag";s:1:"1";s:5:"title";s:3:"abc";}i:1;a:4:{s:2:"id";s:1:"2";s:3:"tag";s:1:"1";s:4:"flag";s:1:"1";s:5:"title";s:3:"abc";}i:2;a:4:{s:2:"id";s:1:"4";s:3:"tag";s:1:"1";s:4:"flag";s:1:"1";s:5:"title";s:3:"abc";}}}i:1;a:3:{s:8:"sphinxql";s:61:"select * from test2 where tag > 10 /*+ SecondaryIndex(tag) */";s:10:"total_rows";i:1;s:4:"rows";a:1:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"tag";s:10:"4294967295";}}}}}
+a:1:{i:0;a:9:{i:0;a:3:{s:8:"sphinxql";s:60:"select * from test1 where flag=1 /*+ SecondaryIndex(flag) */";s:10:"total_rows";i:3;s:4:"rows";a:3:{i:0;a:4:{s:2:"id";s:1:"1";s:3:"tag";s:1:"1";s:4:"flag";s:1:"1";s:5:"title";s:3:"abc";}i:1;a:4:{s:2:"id";s:1:"2";s:3:"tag";s:1:"1";s:4:"flag";s:1:"1";s:5:"title";s:3:"abc";}i:2;a:4:{s:2:"id";s:1:"4";s:3:"tag";s:1:"1";s:4:"flag";s:1:"1";s:5:"title";s:3:"abc";}}}i:1;a:3:{s:8:"sphinxql";s:61:"select * from test2 where tag > 10 /*+ SecondaryIndex(tag) */";s:10:"total_rows";i:1;s:4:"rows";a:1:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"tag";s:10:"4294967295";}}}i:2;a:2:{s:8:"sphinxql";s:86:"INSERT INTO test3 (id,title,idd) VALUES (11,'abc 1', 1),(12,'abc1', 1),(13,'abc 1', 2)";s:14:"total_affected";i:3;}i:3;a:2:{s:8:"sphinxql";s:20:"FLUSH RAMCHUNK test3";s:14:"total_affected";i:0;}i:4;a:2:{s:8:"sphinxql";s:86:"INSERT INTO test3 (id,title,idd) VALUES (21,'abc 2', 1),(22,'abc2', 1),(23,'abc 2', 2)";s:14:"total_affected";i:3;}i:5;a:2:{s:8:"sphinxql";s:42:"UPDATE test3 SET tag=1 WHERE id IN (11,12)";s:14:"total_affected";i:2;}i:6;a:2:{s:8:"sphinxql";s:40:"DELETE FROM test3 WHERE id in (11,12,13)";s:14:"total_affected";i:3;}i:7;a:2:{s:8:"sphinxql";s:35:"ALTER TABLE test3 REBUILD SECONDARY";s:14:"total_affected";i:0;}i:8;a:3:{s:8:"sphinxql";s:76:"SELECT * FROM test3 WHERE idd > 0 ORDER BY id ASC /*+ SecondaryIndex(idd) */";s:10:"total_rows";i:3;s:4:"rows";a:3:{i:0;a:4:{s:2:"id";s:2:"21";s:3:"idd";s:1:"1";s:3:"tag";s:1:"0";s:5:"title";s:5:"abc 2";}i:1;a:4:{s:2:"id";s:2:"22";s:3:"idd";s:1:"1";s:3:"tag";s:1:"0";s:5:"title";s:4:"abc2";}i:2;a:4:{s:2:"id";s:2:"23";s:3:"idd";s:1:"2";s:3:"tag";s:1:"0";s:5:"title";s:5:"abc 2";}}}}}

+ 23 - 0
test/test_452/test.xml

@@ -40,6 +40,15 @@ index test2
 	source 			= test2
 	path			= <data_path/>/test2
 }
+
+index test3
+{
+	type = rt
+	path			= <data_path/>/test3
+	rt_field = title
+	rt_attr_uint = idd
+    rt_attr_uint = tag
+}
 </config>
 
 <db_create>
@@ -60,6 +69,20 @@ CREATE TABLE `test_table1` (
 <queries>
 <sphinxql>select * from test1 where flag=1 /*+ SecondaryIndex(flag) */</sphinxql>
 <sphinxql>select * from test2 where tag &gt; 10 /*+ SecondaryIndex(tag) */</sphinxql>
+
+<!-- regression empty secondary index crash at the disk chunks with all dead documents -->
+<!-- make disk chunk; UPDATE attr there to allov ALTER to work later; DELETE all docs in that disk chunk; regenerate SI with ALTER -->
+<sphinxql>
+INSERT INTO test3 (id,title,idd) VALUES (11,'abc 1', 1),(12,'abc1', 1),(13,'abc 1', 2);
+FLUSH RAMCHUNK test3;
+INSERT INTO test3 (id,title,idd) VALUES (21,'abc 2', 1),(22,'abc2', 1),(23,'abc 2', 2);
+UPDATE test3 SET tag=1 WHERE id IN (11,12);
+DELETE FROM test3 WHERE id in (11,12,13);
+ALTER TABLE test3 REBUILD SECONDARY;
+
+SELECT * FROM test3 WHERE idd &gt; 0 ORDER BY id ASC /*+ SecondaryIndex(idd) */
+</sphinxql>
+
 </queries>
 
 </test>