Skip to content

Commit

Permalink
fixed #1308 crash of daemon high load of INSERTS and OPTIMIZE; fixed …
Browse files Browse the repository at this point in the history
…ATTACH of plain index; added regressions to test 187
  • Loading branch information
tomatolog committed Apr 17, 2020
1 parent f58d316 commit 9040d22
Show file tree
Hide file tree
Showing 3 changed files with 73 additions and 2 deletions.
4 changes: 3 additions & 1 deletion src/sphinxrt.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7350,8 +7350,9 @@ bool RtIndex_c::AttachDiskIndex ( CSphIndex * pIndex, bool bTruncate, bool & bFa
CSphFixedVector<int> dChunkNames = GetIndexNames ( m_dDiskChunks, true );

// rename that source index to our last chunk
int iChunk = dChunkNames.Last();
CSphString sChunk;
sChunk.SetSprintf ( "%s.%d", m_sPath.cstr(), dChunkNames.Last() );
sChunk.SetSprintf ( "%s.%d", m_sPath.cstr(), iChunk );
if ( !pIndex->Rename ( sChunk.cstr() ) )
{
sError.SetSprintf ( "ATTACH failed, %s", pIndex->GetLastError().cstr() );
Expand All @@ -7375,6 +7376,7 @@ bool RtIndex_c::AttachDiskIndex ( CSphIndex * pIndex, bool bTruncate, bool & bFa
sName.SetSprintf ( "%s_%d", m_sIndexName.cstr(), m_dDiskChunks.GetLength() );
pIndex->SetName ( sName.cstr() );
pIndex->SetBinlog ( false );
pIndex->m_iChunk = iChunk;

// FIXME? what about copying m_TID etc?

Expand Down
2 changes: 1 addition & 1 deletion test/test_187/model.bin
Original file line number Diff line number Diff line change
@@ -1 +1 @@
a:1:{i:0;a:37:{i:0;a:2:{s:8:"sphinxql";s:16:"SELECT * FROM rt";s:10:"total_rows";i:0;}i:1;a:3:{s:8:"sphinxql";s:18:"SELECT * FROM disk";s:10:"total_rows";i:4;s:4:"rows";a:4:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"gid";s:2:"11";}i:1;a:2:{s:2:"id";s:1:"2";s:3:"gid";s:2:"11";}i:2;a:2:{s:2:"id";s:1:"3";s:3:"gid";s:2:"11";}i:3;a:2:{s:2:"id";s:1:"4";s:3:"gid";s:2:"11";}}}i:2;a:3:{s:8:"sphinxql";s:38:"SELECT * FROM disk WHERE MATCH('thee')";s:10:"total_rows";i:2;s:4:"rows";a:2:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"gid";s:2:"11";}i:1;a:2:{s:2:"id";s:1:"3";s:3:"gid";s:2:"11";}}}i:3;a:3:{s:8:"sphinxql";s:56:"SELECT * FROM disk WHERE MATCH('under') order by id desc";s:10:"total_rows";i:1;s:4:"rows";a:1:{i:0;a:2:{s:2:"id";s:1:"4";s:3:"gid";s:2:"11";}}}i:4;a:2:{s:8:"sphinxql";s:31:"ATTACH INDEX disk TO RTINDEX rt";s:14:"total_affected";i:0;}i:5;a:3:{s:8:"sphinxql";s:16:"SELECT * FROM rt";s:10:"total_rows";i:4;s:4:"rows";a:4:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"gid";s:2:"11";}i:1;a:2:{s:2:"id";s:1:"2";s:3:"gid";s:2:"11";}i:2;a:2:{s:2:"id";s:1:"3";s:3:"gid";s:2:"11";}i:3;a:2:{s:2:"id";s:1:"4";s:3:"gid";s:2:"11";}}}i:6;a:3:{s:8:"sphinxql";s:18:"SELECT * FROM disk";s:5:"error";s:48:"unknown local index(es) 'disk' in search request";s:5:"errno";i:1064;}i:7;a:3:{s:8:"sphinxql";s:36:"SELECT * FROM rt WHERE MATCH('thee')";s:10:"total_rows";i:2;s:4:"rows";a:2:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"gid";s:2:"11";}i:1;a:2:{s:2:"id";s:1:"3";s:3:"gid";s:2:"11";}}}i:8;a:3:{s:8:"sphinxql";s:18:"DESC rt like '_i%'";s:10:"total_rows";i:2;s:4:"rows";a:2:{i:0;a:3:{s:5:"Field";s:5:"title";s:4:"Type";s:5:"field";s:10:"Properties";s:7:"indexed";}i:1;a:3:{s:5:"Field";s:3:"gid";s:4:"Type";s:4:"uint";s:10:"Properties";s:0:"";}}}i:9;a:2:{s:8:"sphinxql";s:76:"INSERT INTO rt ( id, gid, title ) VALUES ( 10, 22, 'I dub thee unforgiven' )";s:14:"total_affected";i:1;}i:10;a:3:{s:8:"sphinxql";s:36:"SELECT * FROM rt WHERE MATCH('thee')";s:10:"total_rows";i:3;s:4:"rows";a:3:{i:0;a:2:{s:2:"id";s:2:"10";s:3:"gid";s:2:"22";}i:1;a:2:{s:2:"id";s:1:"1";s:3:"gid";s:2:"11";}i:2;a:2:{s:2:"id";s:1:"3";s:3:"gid";s:2:"11";}}}i:11;a:2:{s:8:"sphinxql";s:100:"INSERT INTO rt ( id, gid, title ) VALUES ( 11, 22, 'under_score_again <stuff>but got here</stuff>' )";s:14:"total_affected";i:1;}i:12;a:3:{s:8:"sphinxql";s:54:"SELECT * FROM rt WHERE MATCH('under') order by id desc";s:10:"total_rows";i:2;s:4:"rows";a:2:{i:0;a:2:{s:2:"id";s:2:"11";s:3:"gid";s:2:"22";}i:1;a:2:{s:2:"id";s:1:"4";s:3:"gid";s:2:"11";}}}i:13;a:2:{s:8:"sphinxql";s:22:"SELECT * FROM rt_arena";s:10:"total_rows";i:0;}i:14;a:2:{s:8:"sphinxql";s:38:"ATTACH INDEX plain TO RTINDEX rt_arena";s:14:"total_affected";i:0;}i:15;a:3:{s:8:"sphinxql";s:52:"SELECT * FROM rt_arena where mva1=15 order by id asc";s:10:"total_rows";i:4;s:4:"rows";a:4:{i:0;a:5:{s:2:"id";s:1:"1";s:4:"str1";s:9:"dummy for";s:4:"mva1";s:8:"15,20,55";s:4:"mva2";s:0:"";s:3:"gid";s:2:"11";}i:1;a:5:{s:2:"id";s:1:"2";s:4:"str1";s:9:"dummy for";s:4:"mva1";s:8:"15,20,55";s:4:"mva2";s:0:"";s:3:"gid";s:2:"11";}i:2;a:5:{s:2:"id";s:1:"3";s:4:"str1";s:9:"dummy for";s:4:"mva1";s:8:"15,20,55";s:4:"mva2";s:0:"";s:3:"gid";s:2:"11";}i:3;a:5:{s:2:"id";s:1:"4";s:4:"str1";s:9:"dummy for";s:4:"mva1";s:8:"15,20,55";s:4:"mva2";s:0:"";s:3:"gid";s:2:"11";}}}i:16;a:3:{s:8:"sphinxql";s:53:"SELECT * FROM rt_arena where mva1=55 order by id desc";s:10:"total_rows";i:4;s:4:"rows";a:4:{i:0;a:5:{s:2:"id";s:1:"4";s:4:"str1";s:9:"dummy for";s:4:"mva1";s:8:"15,20,55";s:4:"mva2";s:0:"";s:3:"gid";s:2:"11";}i:1;a:5:{s:2:"id";s:1:"3";s:4:"str1";s:9:"dummy for";s:4:"mva1";s:8:"15,20,55";s:4:"mva2";s:0:"";s:3:"gid";s:2:"11";}i:2;a:5:{s:2:"id";s:1:"2";s:4:"str1";s:9:"dummy for";s:4:"mva1";s:8:"15,20,55";s:4:"mva2";s:0:"";s:3:"gid";s:2:"11";}i:3;a:5:{s:2:"id";s:1:"1";s:4:"str1";s:9:"dummy for";s:4:"mva1";s:8:"15,20,55";s:4:"mva2";s:0:"";s:3:"gid";s:2:"11";}}}i:17;a:3:{s:8:"sphinxql";s:22:"SELECT * FROM rt_arena";s:10:"total_rows";i:4;s:4:"rows";a:4:{i:0;a:5:{s:2:"id";s:1:"1";s:4:"str1";s:9:"dummy for";s:4:"mva1";s:8:"15,20,55";s:4:"mva2";s:0:"";s:3:"gid";s:2:"11";}i:1;a:5:{s:2:"id";s:1:"2";s:4:"str1";s:9:"dummy for";s:4:"mva1";s:8:"15,20,55";s:4:"mva2";s:0:"";s:3:"gid";s:2:"11";}i:2;a:5:{s:2:"id";s:1:"3";s:4:"str1";s:9:"dummy for";s:4:"mva1";s:8:"15,20,55";s:4:"mva2";s:0:"";s:3:"gid";s:2:"11";}i:3;a:5:{s:2:"id";s:1:"4";s:4:"str1";s:9:"dummy for";s:4:"mva1";s:8:"15,20,55";s:4:"mva2";s:0:"";s:3:"gid";s:2:"11";}}}i:18;a:3:{s:8:"sphinxql";s:35:"SELECT * FROM rt WHERE MATCH('got')";s:10:"total_rows";i:1;s:4:"rows";a:1:{i:0;a:2:{s:2:"id";s:1:"2";s:3:"gid";s:2:"11";}}}i:19;a:2:{s:8:"sphinxql";s:144:"INSERT INTO rt1 ( id, gid, title, body ) VALUES ( 1, 22, 'dust me', 'well' ), ( 5, 22, 'dure me', 'thee off' ), ( 6, 22, 'dub me', 'thee well' )";s:14:"total_affected";i:3;}i:20;a:2:{s:8:"sphinxql";s:30:"ATTACH INDEX a1 TO RTINDEX rt1";s:14:"total_affected";i:0;}i:21;a:3:{s:8:"sphinxql";s:17:"SELECT * FROM rt1";s:10:"total_rows";i:6;s:4:"rows";a:6:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"gid";s:2:"11";}i:1;a:2:{s:2:"id";s:1:"2";s:3:"gid";s:2:"11";}i:2;a:2:{s:2:"id";s:1:"3";s:3:"gid";s:2:"11";}i:3;a:2:{s:2:"id";s:1:"4";s:3:"gid";s:2:"11";}i:4;a:2:{s:2:"id";s:1:"5";s:3:"gid";s:2:"22";}i:5;a:2:{s:2:"id";s:1:"6";s:3:"gid";s:2:"22";}}}i:22;a:3:{s:8:"sphinxql";s:37:"SELECT * FROM rt1 WHERE MATCH('well')";s:10:"total_rows";i:3;s:4:"rows";a:3:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"gid";s:2:"11";}i:1;a:2:{s:2:"id";s:1:"3";s:3:"gid";s:2:"11";}i:2;a:2:{s:2:"id";s:1:"6";s:3:"gid";s:2:"22";}}}i:23;a:3:{s:8:"sphinxql";s:42:"SELECT * FROM rt1 WHERE MATCH('me | thee')";s:10:"total_rows";i:4;s:4:"rows";a:4:{i:0;a:2:{s:2:"id";s:1:"5";s:3:"gid";s:2:"22";}i:1;a:2:{s:2:"id";s:1:"6";s:3:"gid";s:2:"22";}i:2;a:2:{s:2:"id";s:1:"1";s:3:"gid";s:2:"11";}i:3;a:2:{s:2:"id";s:1:"3";s:3:"gid";s:2:"11";}}}i:24;a:2:{s:8:"sphinxql";s:35:"ATTACH INDEX disk1 TO RTINDEX rt_d1";s:14:"total_affected";i:0;}i:25;a:2:{s:8:"sphinxql";s:35:"ATTACH INDEX disk2 TO RTINDEX rt_d1";s:14:"total_affected";i:0;}i:26;a:2:{s:8:"sphinxql";s:35:"ATTACH INDEX disk3 TO RTINDEX rt_d1";s:14:"total_affected";i:0;}i:27;a:3:{s:8:"sphinxql";s:19:"SELECT * FROM rt_d1";s:10:"total_rows";i:4;s:4:"rows";a:4:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"gid";s:2:"11";}i:1;a:2:{s:2:"id";s:1:"2";s:3:"gid";s:2:"11";}i:2;a:2:{s:2:"id";s:1:"3";s:3:"gid";s:2:"11";}i:3;a:2:{s:2:"id";s:1:"4";s:3:"gid";s:2:"11";}}}i:28;a:2:{s:8:"sphinxql";s:93:"INSERT INTO rt_trunc ( id, gid1, gid2, title ) VALUES ( 10, 22, 33, 'I dub thee unforgiven' )";s:14:"total_affected";i:1;}i:29;a:3:{s:8:"sphinxql";s:43:"ATTACH INDEX disk_trunc TO RTINDEX rt_trunc";s:5:"error";s:87:"ATTACH currently requires same tokenizer settings (RT-side support not implemented yet)";s:5:"errno";i:1064;}i:30;a:3:{s:8:"sphinxql";s:22:"SELECT * FROM rt_trunc";s:10:"total_rows";i:1;s:4:"rows";a:1:{i:0;a:3:{s:2:"id";s:2:"10";s:4:"gid1";s:2:"22";s:4:"gid2";s:2:"33";}}}i:31;a:2:{s:8:"sphinxql";s:57:"ATTACH INDEX disk_trunc TO RTINDEX rt_trunc WITH TRUNCATE";s:14:"total_affected";i:0;}i:32;a:3:{s:8:"sphinxql";s:22:"SELECT * FROM rt_trunc";s:10:"total_rows";i:4;s:4:"rows";a:4:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"gid";s:2:"11";}i:1;a:2:{s:2:"id";s:1:"2";s:3:"gid";s:2:"11";}i:2;a:2:{s:2:"id";s:1:"3";s:3:"gid";s:2:"11";}i:3;a:2:{s:2:"id";s:1:"4";s:3:"gid";s:2:"11";}}}i:33;a:3:{s:8:"sphinxql";s:51:"ATTACH INDEX disk10 TO RTINDEX disk10 WITH TRUNCATE";s:5:"error";s:41:"2nd argument to ATTACH must be a RT index";s:5:"errno";i:1064;}i:34;a:3:{s:8:"sphinxql";s:47:"ATTACH INDEX rt10 TO RTINDEX rt10 WITH TRUNCATE";s:5:"error";s:44:"1st argument to ATTACH must be a plain index";s:5:"errno";i:1064;}i:35;a:2:{s:8:"sphinxql";s:49:"ATTACH INDEX disk10 TO RTINDEX rt10 WITH TRUNCATE";s:14:"total_affected";i:0;}i:36;a:3:{s:8:"sphinxql";s:18:"SELECT * FROM rt10";s:10:"total_rows";i:4;s:4:"rows";a:4:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"gid";s:2:"11";}i:1;a:2:{s:2:"id";s:1:"2";s:3:"gid";s:2:"11";}i:2;a:2:{s:2:"id";s:1:"3";s:3:"gid";s:2:"11";}i:3;a:2:{s:2:"id";s:1:"4";s:3:"gid";s:2:"11";}}}}}
a:1:{i:0;a:44:{i:0;a:2:{s:8:"sphinxql";s:16:"SELECT * FROM rt";s:10:"total_rows";i:0;}i:1;a:3:{s:8:"sphinxql";s:18:"SELECT * FROM disk";s:10:"total_rows";i:4;s:4:"rows";a:4:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"gid";s:2:"11";}i:1;a:2:{s:2:"id";s:1:"2";s:3:"gid";s:2:"11";}i:2;a:2:{s:2:"id";s:1:"3";s:3:"gid";s:2:"11";}i:3;a:2:{s:2:"id";s:1:"4";s:3:"gid";s:2:"11";}}}i:2;a:3:{s:8:"sphinxql";s:38:"SELECT * FROM disk WHERE MATCH('thee')";s:10:"total_rows";i:2;s:4:"rows";a:2:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"gid";s:2:"11";}i:1;a:2:{s:2:"id";s:1:"3";s:3:"gid";s:2:"11";}}}i:3;a:3:{s:8:"sphinxql";s:56:"SELECT * FROM disk WHERE MATCH('under') order by id desc";s:10:"total_rows";i:1;s:4:"rows";a:1:{i:0;a:2:{s:2:"id";s:1:"4";s:3:"gid";s:2:"11";}}}i:4;a:2:{s:8:"sphinxql";s:31:"ATTACH INDEX disk TO RTINDEX rt";s:14:"total_affected";i:0;}i:5;a:3:{s:8:"sphinxql";s:16:"SELECT * FROM rt";s:10:"total_rows";i:4;s:4:"rows";a:4:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"gid";s:2:"11";}i:1;a:2:{s:2:"id";s:1:"2";s:3:"gid";s:2:"11";}i:2;a:2:{s:2:"id";s:1:"3";s:3:"gid";s:2:"11";}i:3;a:2:{s:2:"id";s:1:"4";s:3:"gid";s:2:"11";}}}i:6;a:3:{s:8:"sphinxql";s:18:"SELECT * FROM disk";s:5:"error";s:48:"unknown local index(es) 'disk' in search request";s:5:"errno";i:1064;}i:7;a:3:{s:8:"sphinxql";s:36:"SELECT * FROM rt WHERE MATCH('thee')";s:10:"total_rows";i:2;s:4:"rows";a:2:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"gid";s:2:"11";}i:1;a:2:{s:2:"id";s:1:"3";s:3:"gid";s:2:"11";}}}i:8;a:3:{s:8:"sphinxql";s:18:"DESC rt like '_i%'";s:10:"total_rows";i:2;s:4:"rows";a:2:{i:0;a:3:{s:5:"Field";s:5:"title";s:4:"Type";s:5:"field";s:10:"Properties";s:7:"indexed";}i:1;a:3:{s:5:"Field";s:3:"gid";s:4:"Type";s:4:"uint";s:10:"Properties";s:0:"";}}}i:9;a:2:{s:8:"sphinxql";s:76:"INSERT INTO rt ( id, gid, title ) VALUES ( 10, 22, 'I dub thee unforgiven' )";s:14:"total_affected";i:1;}i:10;a:3:{s:8:"sphinxql";s:36:"SELECT * FROM rt WHERE MATCH('thee')";s:10:"total_rows";i:3;s:4:"rows";a:3:{i:0;a:2:{s:2:"id";s:2:"10";s:3:"gid";s:2:"22";}i:1;a:2:{s:2:"id";s:1:"1";s:3:"gid";s:2:"11";}i:2;a:2:{s:2:"id";s:1:"3";s:3:"gid";s:2:"11";}}}i:11;a:2:{s:8:"sphinxql";s:100:"INSERT INTO rt ( id, gid, title ) VALUES ( 11, 22, 'under_score_again <stuff>but got here</stuff>' )";s:14:"total_affected";i:1;}i:12;a:3:{s:8:"sphinxql";s:54:"SELECT * FROM rt WHERE MATCH('under') order by id desc";s:10:"total_rows";i:2;s:4:"rows";a:2:{i:0;a:2:{s:2:"id";s:2:"11";s:3:"gid";s:2:"22";}i:1;a:2:{s:2:"id";s:1:"4";s:3:"gid";s:2:"11";}}}i:13;a:2:{s:8:"sphinxql";s:22:"SELECT * FROM rt_arena";s:10:"total_rows";i:0;}i:14;a:2:{s:8:"sphinxql";s:38:"ATTACH INDEX plain TO RTINDEX rt_arena";s:14:"total_affected";i:0;}i:15;a:3:{s:8:"sphinxql";s:52:"SELECT * FROM rt_arena where mva1=15 order by id asc";s:10:"total_rows";i:4;s:4:"rows";a:4:{i:0;a:5:{s:2:"id";s:1:"1";s:4:"str1";s:9:"dummy for";s:4:"mva1";s:8:"15,20,55";s:4:"mva2";s:0:"";s:3:"gid";s:2:"11";}i:1;a:5:{s:2:"id";s:1:"2";s:4:"str1";s:9:"dummy for";s:4:"mva1";s:8:"15,20,55";s:4:"mva2";s:0:"";s:3:"gid";s:2:"11";}i:2;a:5:{s:2:"id";s:1:"3";s:4:"str1";s:9:"dummy for";s:4:"mva1";s:8:"15,20,55";s:4:"mva2";s:0:"";s:3:"gid";s:2:"11";}i:3;a:5:{s:2:"id";s:1:"4";s:4:"str1";s:9:"dummy for";s:4:"mva1";s:8:"15,20,55";s:4:"mva2";s:0:"";s:3:"gid";s:2:"11";}}}i:16;a:3:{s:8:"sphinxql";s:53:"SELECT * FROM rt_arena where mva1=55 order by id desc";s:10:"total_rows";i:4;s:4:"rows";a:4:{i:0;a:5:{s:2:"id";s:1:"4";s:4:"str1";s:9:"dummy for";s:4:"mva1";s:8:"15,20,55";s:4:"mva2";s:0:"";s:3:"gid";s:2:"11";}i:1;a:5:{s:2:"id";s:1:"3";s:4:"str1";s:9:"dummy for";s:4:"mva1";s:8:"15,20,55";s:4:"mva2";s:0:"";s:3:"gid";s:2:"11";}i:2;a:5:{s:2:"id";s:1:"2";s:4:"str1";s:9:"dummy for";s:4:"mva1";s:8:"15,20,55";s:4:"mva2";s:0:"";s:3:"gid";s:2:"11";}i:3;a:5:{s:2:"id";s:1:"1";s:4:"str1";s:9:"dummy for";s:4:"mva1";s:8:"15,20,55";s:4:"mva2";s:0:"";s:3:"gid";s:2:"11";}}}i:17;a:3:{s:8:"sphinxql";s:22:"SELECT * FROM rt_arena";s:10:"total_rows";i:4;s:4:"rows";a:4:{i:0;a:5:{s:2:"id";s:1:"1";s:4:"str1";s:9:"dummy for";s:4:"mva1";s:8:"15,20,55";s:4:"mva2";s:0:"";s:3:"gid";s:2:"11";}i:1;a:5:{s:2:"id";s:1:"2";s:4:"str1";s:9:"dummy for";s:4:"mva1";s:8:"15,20,55";s:4:"mva2";s:0:"";s:3:"gid";s:2:"11";}i:2;a:5:{s:2:"id";s:1:"3";s:4:"str1";s:9:"dummy for";s:4:"mva1";s:8:"15,20,55";s:4:"mva2";s:0:"";s:3:"gid";s:2:"11";}i:3;a:5:{s:2:"id";s:1:"4";s:4:"str1";s:9:"dummy for";s:4:"mva1";s:8:"15,20,55";s:4:"mva2";s:0:"";s:3:"gid";s:2:"11";}}}i:18;a:3:{s:8:"sphinxql";s:35:"SELECT * FROM rt WHERE MATCH('got')";s:10:"total_rows";i:1;s:4:"rows";a:1:{i:0;a:2:{s:2:"id";s:1:"2";s:3:"gid";s:2:"11";}}}i:19;a:2:{s:8:"sphinxql";s:144:"INSERT INTO rt1 ( id, gid, title, body ) VALUES ( 1, 22, 'dust me', 'well' ), ( 5, 22, 'dure me', 'thee off' ), ( 6, 22, 'dub me', 'thee well' )";s:14:"total_affected";i:3;}i:20;a:2:{s:8:"sphinxql";s:30:"ATTACH INDEX a1 TO RTINDEX rt1";s:14:"total_affected";i:0;}i:21;a:3:{s:8:"sphinxql";s:17:"SELECT * FROM rt1";s:10:"total_rows";i:6;s:4:"rows";a:6:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"gid";s:2:"11";}i:1;a:2:{s:2:"id";s:1:"2";s:3:"gid";s:2:"11";}i:2;a:2:{s:2:"id";s:1:"3";s:3:"gid";s:2:"11";}i:3;a:2:{s:2:"id";s:1:"4";s:3:"gid";s:2:"11";}i:4;a:2:{s:2:"id";s:1:"5";s:3:"gid";s:2:"22";}i:5;a:2:{s:2:"id";s:1:"6";s:3:"gid";s:2:"22";}}}i:22;a:3:{s:8:"sphinxql";s:37:"SELECT * FROM rt1 WHERE MATCH('well')";s:10:"total_rows";i:3;s:4:"rows";a:3:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"gid";s:2:"11";}i:1;a:2:{s:2:"id";s:1:"3";s:3:"gid";s:2:"11";}i:2;a:2:{s:2:"id";s:1:"6";s:3:"gid";s:2:"22";}}}i:23;a:3:{s:8:"sphinxql";s:42:"SELECT * FROM rt1 WHERE MATCH('me | thee')";s:10:"total_rows";i:4;s:4:"rows";a:4:{i:0;a:2:{s:2:"id";s:1:"5";s:3:"gid";s:2:"22";}i:1;a:2:{s:2:"id";s:1:"6";s:3:"gid";s:2:"22";}i:2;a:2:{s:2:"id";s:1:"1";s:3:"gid";s:2:"11";}i:3;a:2:{s:2:"id";s:1:"3";s:3:"gid";s:2:"11";}}}i:24;a:2:{s:8:"sphinxql";s:35:"ATTACH INDEX disk1 TO RTINDEX rt_d1";s:14:"total_affected";i:0;}i:25;a:2:{s:8:"sphinxql";s:35:"ATTACH INDEX disk2 TO RTINDEX rt_d1";s:14:"total_affected";i:0;}i:26;a:2:{s:8:"sphinxql";s:35:"ATTACH INDEX disk3 TO RTINDEX rt_d1";s:14:"total_affected";i:0;}i:27;a:3:{s:8:"sphinxql";s:19:"SELECT * FROM rt_d1";s:10:"total_rows";i:4;s:4:"rows";a:4:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"gid";s:2:"11";}i:1;a:2:{s:2:"id";s:1:"2";s:3:"gid";s:2:"11";}i:2;a:2:{s:2:"id";s:1:"3";s:3:"gid";s:2:"11";}i:3;a:2:{s:2:"id";s:1:"4";s:3:"gid";s:2:"11";}}}i:28;a:2:{s:8:"sphinxql";s:93:"INSERT INTO rt_trunc ( id, gid1, gid2, title ) VALUES ( 10, 22, 33, 'I dub thee unforgiven' )";s:14:"total_affected";i:1;}i:29;a:3:{s:8:"sphinxql";s:43:"ATTACH INDEX disk_trunc TO RTINDEX rt_trunc";s:5:"error";s:87:"ATTACH currently requires same tokenizer settings (RT-side support not implemented yet)";s:5:"errno";i:1064;}i:30;a:3:{s:8:"sphinxql";s:22:"SELECT * FROM rt_trunc";s:10:"total_rows";i:1;s:4:"rows";a:1:{i:0;a:3:{s:2:"id";s:2:"10";s:4:"gid1";s:2:"22";s:4:"gid2";s:2:"33";}}}i:31;a:2:{s:8:"sphinxql";s:57:"ATTACH INDEX disk_trunc TO RTINDEX rt_trunc WITH TRUNCATE";s:14:"total_affected";i:0;}i:32;a:3:{s:8:"sphinxql";s:22:"SELECT * FROM rt_trunc";s:10:"total_rows";i:4;s:4:"rows";a:4:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"gid";s:2:"11";}i:1;a:2:{s:2:"id";s:1:"2";s:3:"gid";s:2:"11";}i:2;a:2:{s:2:"id";s:1:"3";s:3:"gid";s:2:"11";}i:3;a:2:{s:2:"id";s:1:"4";s:3:"gid";s:2:"11";}}}i:33;a:3:{s:8:"sphinxql";s:51:"ATTACH INDEX disk10 TO RTINDEX disk10 WITH TRUNCATE";s:5:"error";s:41:"2nd argument to ATTACH must be a RT index";s:5:"errno";i:1064;}i:34;a:3:{s:8:"sphinxql";s:47:"ATTACH INDEX rt10 TO RTINDEX rt10 WITH TRUNCATE";s:5:"error";s:44:"1st argument to ATTACH must be a plain index";s:5:"errno";i:1064;}i:35;a:2:{s:8:"sphinxql";s:49:"ATTACH INDEX disk10 TO RTINDEX rt10 WITH TRUNCATE";s:14:"total_affected";i:0;}i:36;a:3:{s:8:"sphinxql";s:18:"SELECT * FROM rt10";s:10:"total_rows";i:4;s:4:"rows";a:4:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"gid";s:2:"11";}i:1;a:2:{s:2:"id";s:1:"2";s:3:"gid";s:2:"11";}i:2;a:2:{s:2:"id";s:1:"3";s:3:"gid";s:2:"11";}i:3;a:2:{s:2:"id";s:1:"4";s:3:"gid";s:2:"11";}}}i:37;a:2:{s:8:"sphinxql";s:33:"ATTACH INDEX d11 TO RTINDEX rt_d1";s:14:"total_affected";i:0;}i:38;a:2:{s:8:"sphinxql";s:33:"ATTACH INDEX d12 TO RTINDEX rt_d1";s:14:"total_affected";i:0;}i:39;a:2:{s:8:"sphinxql";s:33:"ATTACH INDEX d13 TO RTINDEX rt_d1";s:14:"total_affected";i:0;}i:40;a:2:{s:8:"sphinxql";s:33:"ATTACH INDEX d14 TO RTINDEX rt_d1";s:14:"total_affected";i:0;}i:41;a:3:{s:8:"sphinxql";s:35:"SELECT * FROM rt_d1 ORDER by id ASC";s:10:"total_rows";i:8;s:4:"rows";a:8:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"gid";s:2:"11";}i:1;a:2:{s:2:"id";s:1:"2";s:3:"gid";s:2:"11";}i:2;a:2:{s:2:"id";s:1:"3";s:3:"gid";s:2:"11";}i:3;a:2:{s:2:"id";s:1:"4";s:3:"gid";s:2:"11";}i:4;a:2:{s:2:"id";s:2:"11";s:3:"gid";s:2:"11";}i:5;a:2:{s:2:"id";s:2:"22";s:3:"gid";s:2:"11";}i:6;a:2:{s:2:"id";s:2:"33";s:3:"gid";s:2:"11";}i:7;a:2:{s:2:"id";s:2:"44";s:3:"gid";s:2:"11";}}}i:42;a:2:{s:8:"sphinxql";s:31:"OPTIMIZE INDEX rt option sync=1";s:14:"total_affected";i:0;}i:43;a:3:{s:8:"sphinxql";s:35:"SELECT * FROM rt_d1 ORDER by id ASC";s:10:"total_rows";i:8;s:4:"rows";a:8:{i:0;a:2:{s:2:"id";s:1:"1";s:3:"gid";s:2:"11";}i:1;a:2:{s:2:"id";s:1:"2";s:3:"gid";s:2:"11";}i:2;a:2:{s:2:"id";s:1:"3";s:3:"gid";s:2:"11";}i:3;a:2:{s:2:"id";s:1:"4";s:3:"gid";s:2:"11";}i:4;a:2:{s:2:"id";s:2:"11";s:3:"gid";s:2:"11";}i:5;a:2:{s:2:"id";s:2:"22";s:3:"gid";s:2:"11";}i:6;a:2:{s:2:"id";s:2:"33";s:3:"gid";s:2:"11";}i:7;a:2:{s:2:"id";s:2:"44";s:3:"gid";s:2:"11";}}}}}
69 changes: 69 additions & 0 deletions test/test_187/test.xml
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,67 @@ index rt10
rt_attr_uint = gid
}

source src_d11
{
type = mysql
<sql_settings/>
sql_query = select id+10 as id, title, gid from test_table where id=1
sql_attr_uint = gid
}

source src_d12
{
type = mysql
<sql_settings/>
sql_query = select id+20 as id, title, gid from test_table where id=2
sql_attr_uint = gid
}

source src_d13
{
type = mysql
<sql_settings/>
sql_query = select id+30 as id, title, gid from test_table where id=3
sql_attr_uint = gid
}

source src_d14
{
type = mysql
<sql_settings/>
sql_query = select id+40 as id, title, gid from test_table where id=4
sql_attr_uint = gid
}


index d11
{
source = src_d11
path = <data_path/>/d11
charset_table = a..z, A..Z->a..z
}

index d12
{
source = src_d12
path = <data_path/>/d12
charset_table = a..z, A..Z->a..z
}

index d13
{
source = src_d13
path = <data_path/>/d13
charset_table = a..z, A..Z->a..z
}

index d14
{
source = src_d14
path = <data_path/>/d14
charset_table = a..z, A..Z->a..z
}

</config>

<db_create>
Expand Down Expand Up @@ -227,6 +288,14 @@ INSERT INTO test_table VALUES
<sphinxql>ATTACH INDEX disk10 TO RTINDEX rt10 WITH TRUNCATE</sphinxql>
<sphinxql>SELECT * FROM rt10</sphinxql>

<!-- regression disk chunks replace prevoius -->
<sphinxql>ATTACH INDEX d11 TO RTINDEX rt_d1</sphinxql>
<sphinxql>ATTACH INDEX d12 TO RTINDEX rt_d1</sphinxql>
<sphinxql>ATTACH INDEX d13 TO RTINDEX rt_d1</sphinxql>
<sphinxql>ATTACH INDEX d14 TO RTINDEX rt_d1</sphinxql>
<sphinxql>SELECT * FROM rt_d1 ORDER by id ASC</sphinxql>
<sphinxql>OPTIMIZE INDEX rt option sync=1</sphinxql>
<sphinxql>SELECT * FROM rt_d1 ORDER by id ASC</sphinxql>
</sphqueries>

</test>

0 comments on commit 9040d22

Please sign in to comment.