]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix the LIKE query optimizer so that it works with LIKE patterns
authordrh <drh@noemail.net>
Mon, 26 May 2008 18:33:40 +0000 (18:33 +0000)
committerdrh <drh@noemail.net>
Mon, 26 May 2008 18:33:40 +0000 (18:33 +0000)
ending in '@%' on NOCASE columns.  Ticket #3139. (CVS 5158)

FossilOrigin-Name: 33548744369643cc8843b74ad1fc1b7d5988d7a4

manifest
manifest.uuid
src/where.c
test/like2.test [new file with mode: 0644]

index 309d77d5d056e9bcd3cdcae51344853db5e52b99..760d6dcc736cbb1fb5358f0eb0aa4e61e7e66bb9 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fixed\svarious\stypos,\sspelling,\sgrammar,\sand\sformatting\smistakes.\s\sTicket\s#3124.\s(CVS\s5157)
-D 2008-05-23T17:21:09
+C Fix\sthe\sLIKE\squery\soptimizer\sso\sthat\sit\sworks\swith\sLIKE\spatterns\nending\sin\s'@%'\son\sNOCASE\scolumns.\s\sTicket\s#3139.\s(CVS\s5158)
+D 2008-05-26T18:33:41
 F Makefile.arm-wince-mingw32ce-gcc ac5f7b2cef0cd850d6f755ba6ee4ab961b1fadf7
 F Makefile.in 79aeba12300a54903f1b1257c1e7c190234045dd
 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@@ -176,7 +176,7 @@ F src/vdbeblob.c 554736781ee273a8089c776e96bdb53e66f57ce6
 F src/vdbefifo.c 1644a41c6366ff25a920df4ca675f12d3f559687
 F src/vdbemem.c a39a822e6ae61c4cab4a512df4a315888b206911
 F src/vtab.c ce9d19ca9053812a557010fd4be7e842f8ebba2d
-F src/where.c ef5bd7ad975de37acf2473ae9fa4a6d022a3b4ca
+F src/where.c 8c8b360d898fe1fa7994ad6171d999aad6318cfd
 F tclinstaller.tcl 4356d9d94d2b5ed5e68f9f0c80c4df3048dd7617
 F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2
 F test/all.test d56a3ca8acdf761204aff0a2e7aa5eb8e11b31e6
@@ -359,6 +359,7 @@ F test/jrnlmode4.test 8ee031603fef8ed5deba0de8b012a82be6d5a6a0
 F test/lastinsert.test 474d519c68cb79d07ecae56a763aa7f322c72f51
 F test/laststmtchanges.test 18ead86c8a87ade949a1d5658f6dc4bb111d1b02
 F test/like.test 2a3ddbd5d91503f914eabae67a47c4196fe33a58
+F test/like2.test 3b2ee13149ba4a8a60b59756f4e5d345573852da
 F test/limit.test ca61a9fc520f54470edb3a771167fe4b68abc247
 F test/loadext.test 1911e7365a6d31d77ba00dd3a8a31b7f2111a670
 F test/loadext2.test 0bcaeb4d81cd5b6e883fdfea3c1bdbe1f173cbca
@@ -636,7 +637,7 @@ F www/tclsqlite.tcl 8be95ee6dba05eabcd27a9d91331c803f2ce2130
 F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
 F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
 F www/whentouse.tcl fc46eae081251c3c181bd79c5faef8195d7991a5
-P 846a69acb59403438696000b4ffd588ab42b2f95
-R 8d33bdff8a616328f5fd78e7f84c8843
-U shane
-Z ffb4343d0f8907272f977c577a7ffada
+P 77d5a7aa1c7ea715298228ed2dbd0497cacbd0e4
+R d32b39a4864ba1e92f958c456cb9d453
+U drh
+Z b0b4c859c49b7350ba450c2f85000be9
index 6dc34e17560818d08f3fcfe0f8a34b68b128a854..22d93c1efe6cea3220ee7808c0d255d3aee8a061 100644 (file)
@@ -1 +1 @@
-77d5a7aa1c7ea715298228ed2dbd0497cacbd0e4
\ No newline at end of file
+33548744369643cc8843b74ad1fc1b7d5988d7a4
\ No newline at end of file
index 3d8f7fe902ac663bbcfa04d0d5f12fed93d576c9..a64e74793965573588fb22bf7f1552d44720bdfe 100644 (file)
@@ -16,7 +16,7 @@
 ** so is applicable.  Because this module is responsible for selecting
 ** indices, you might also think of this module as the "query optimizer".
 **
-** $Id: where.c,v 1.303 2008/05/16 15:40:40 danielk1977 Exp $
+** $Id: where.c,v 1.304 2008/05/26 18:33:41 drh Exp $
 */
 #include "sqliteInt.h"
 
@@ -902,8 +902,7 @@ or_not_possible:
   **          x>='abc' AND x<'abd' AND x LIKE 'abc%'
   **
   ** The last character of the prefix "abc" is incremented to form the
-  ** termination condidtion "abd".  This trick of incrementing the last
-  ** is not 255 and if the character set is not EBCDIC.  
+  ** termination condidtion "abd".
   */
   if( isLikeOrGlob(db, pExpr, &nPattern, &isComplete, &noCase) ){
     Expr *pLeft, *pRight;
@@ -925,7 +924,10 @@ or_not_possible:
       assert( pStr2->token.dyn );
       pC = (u8*)&pStr2->token.z[nPattern-1];
       c = *pC;
-      if( noCase ) c = sqlite3UpperToLower[c];
+      if( noCase ){
+        if( c=='@' ) isComplete = 0;
+        c = sqlite3UpperToLower[c];
+      }
       *pC = c + 1;
     }
     pNewExpr1 = sqlite3PExpr(pParse, TK_GE, sqlite3ExprDup(db,pLeft), pStr1, 0);
diff --git a/test/like2.test b/test/like2.test
new file mode 100644 (file)
index 0000000..4fd1642
--- /dev/null
@@ -0,0 +1,1009 @@
+# 2008 May 26
+#
+# The author disclaims copyright to this source code.  In place of
+# a legal notice, here is a blessing:
+#
+#    May you do good and not evil.
+#    May you find forgiveness for yourself and forgive others.
+#    May you share freely, never taking more than you give.
+#
+#***********************************************************************
+# This file implements regression tests for SQLite library.  The
+# focus of this file is testing the LIKE and GLOB operators and
+# in particular the optimizations that occur to help those operators
+# run faster.
+#
+# $Id: like2.test,v 1.1 2008/05/26 18:33:41 drh Exp $
+
+set testdir [file dirname $argv0]
+source $testdir/tester.tcl
+
+do_test like2-1.1 {
+  db eval {
+    CREATE TABLE t1(x INT, y COLLATE NOCASE);
+    INSERT INTO t1(x,y) VALUES(1,CAST(x'01' AS TEXT));
+    INSERT INTO t1(x,y) VALUES(2,CAST(x'02' AS TEXT));
+    INSERT INTO t1(x,y) VALUES(3,CAST(x'03' AS TEXT));
+    INSERT INTO t1(x,y) VALUES(4,CAST(x'04' AS TEXT));
+    INSERT INTO t1(x,y) VALUES(5,CAST(x'05' AS TEXT));
+    INSERT INTO t1(x,y) VALUES(6,CAST(x'06' AS TEXT));
+    INSERT INTO t1(x,y) VALUES(7,CAST(x'07' AS TEXT));
+    INSERT INTO t1(x,y) VALUES(8,CAST(x'08' AS TEXT));
+    INSERT INTO t1(x,y) VALUES(9,CAST(x'09' AS TEXT));
+    INSERT INTO t1(x,y) VALUES(10,CAST(x'0a' AS TEXT));
+    INSERT INTO t1(x,y) VALUES(11,CAST(x'0b' AS TEXT));
+    INSERT INTO t1(x,y) VALUES(12,CAST(x'0c' AS TEXT));
+    INSERT INTO t1(x,y) VALUES(13,CAST(x'0d' AS TEXT));
+    INSERT INTO t1(x,y) VALUES(14,CAST(x'0e' AS TEXT));
+    INSERT INTO t1(x,y) VALUES(15,CAST(x'0f' AS TEXT));
+    INSERT INTO t1(x,y) VALUES(16,CAST(x'10' AS TEXT));
+    INSERT INTO t1(x,y) VALUES(17,CAST(x'11' AS TEXT));
+    INSERT INTO t1(x,y) VALUES(18,CAST(x'12' AS TEXT));
+    INSERT INTO t1(x,y) VALUES(19,CAST(x'13' AS TEXT));
+    INSERT INTO t1(x,y) VALUES(20,CAST(x'14' AS TEXT));
+    INSERT INTO t1(x,y) VALUES(21,CAST(x'15' AS TEXT));
+    INSERT INTO t1(x,y) VALUES(22,CAST(x'16' AS TEXT));
+    INSERT INTO t1(x,y) VALUES(23,CAST(x'17' AS TEXT));
+    INSERT INTO t1(x,y) VALUES(24,CAST(x'18' AS TEXT));
+    INSERT INTO t1(x,y) VALUES(25,CAST(x'19' AS TEXT));
+    INSERT INTO t1(x,y) VALUES(26,CAST(x'1a' AS TEXT));
+    INSERT INTO t1(x,y) VALUES(27,CAST(x'1b' AS TEXT));
+    INSERT INTO t1(x,y) VALUES(28,CAST(x'1c' AS TEXT));
+    INSERT INTO t1(x,y) VALUES(29,CAST(x'1d' AS TEXT));
+    INSERT INTO t1(x,y) VALUES(30,CAST(x'1e' AS TEXT));
+    INSERT INTO t1(x,y) VALUES(31,CAST(x'1f' AS TEXT));
+    INSERT INTO t1(x,y) VALUES(32,' ');
+    INSERT INTO t1(x,y) VALUES(33,'!');
+    INSERT INTO t1(x,y) VALUES(34,'"');
+    INSERT INTO t1(x,y) VALUES(35,'#');
+    INSERT INTO t1(x,y) VALUES(36,'$');
+    INSERT INTO t1(x,y) VALUES(37,'%');
+    INSERT INTO t1(x,y) VALUES(38,'&');
+    INSERT INTO t1(x,y) VALUES(39,'''');
+    INSERT INTO t1(x,y) VALUES(40,'(');
+    INSERT INTO t1(x,y) VALUES(41,')');
+    INSERT INTO t1(x,y) VALUES(42,'*');
+    INSERT INTO t1(x,y) VALUES(43,'+');
+    INSERT INTO t1(x,y) VALUES(44,',');
+    INSERT INTO t1(x,y) VALUES(45,'-');
+    INSERT INTO t1(x,y) VALUES(46,'.');
+    INSERT INTO t1(x,y) VALUES(47,'/');
+    INSERT INTO t1(x,y) VALUES(48,'0');
+    INSERT INTO t1(x,y) VALUES(49,'1');
+    INSERT INTO t1(x,y) VALUES(50,'2');
+    INSERT INTO t1(x,y) VALUES(51,'3');
+    INSERT INTO t1(x,y) VALUES(52,'4');
+    INSERT INTO t1(x,y) VALUES(53,'5');
+    INSERT INTO t1(x,y) VALUES(54,'6');
+    INSERT INTO t1(x,y) VALUES(55,'7');
+    INSERT INTO t1(x,y) VALUES(56,'8');
+    INSERT INTO t1(x,y) VALUES(57,'9');
+    INSERT INTO t1(x,y) VALUES(58,':');
+    INSERT INTO t1(x,y) VALUES(59,';');
+    INSERT INTO t1(x,y) VALUES(60,'<');
+    INSERT INTO t1(x,y) VALUES(61,'=');
+    INSERT INTO t1(x,y) VALUES(62,'>');
+    INSERT INTO t1(x,y) VALUES(63,'?');
+    INSERT INTO t1(x,y) VALUES(64,'@');
+    INSERT INTO t1(x,y) VALUES(65,'A');
+    INSERT INTO t1(x,y) VALUES(66,'B');
+    INSERT INTO t1(x,y) VALUES(67,'C');
+    INSERT INTO t1(x,y) VALUES(68,'D');
+    INSERT INTO t1(x,y) VALUES(69,'E');
+    INSERT INTO t1(x,y) VALUES(70,'F');
+    INSERT INTO t1(x,y) VALUES(71,'G');
+    INSERT INTO t1(x,y) VALUES(72,'H');
+    INSERT INTO t1(x,y) VALUES(73,'I');
+    INSERT INTO t1(x,y) VALUES(74,'J');
+    INSERT INTO t1(x,y) VALUES(75,'K');
+    INSERT INTO t1(x,y) VALUES(76,'L');
+    INSERT INTO t1(x,y) VALUES(77,'M');
+    INSERT INTO t1(x,y) VALUES(78,'N');
+    INSERT INTO t1(x,y) VALUES(79,'O');
+    INSERT INTO t1(x,y) VALUES(80,'P');
+    INSERT INTO t1(x,y) VALUES(81,'Q');
+    INSERT INTO t1(x,y) VALUES(82,'R');
+    INSERT INTO t1(x,y) VALUES(83,'S');
+    INSERT INTO t1(x,y) VALUES(84,'T');
+    INSERT INTO t1(x,y) VALUES(85,'U');
+    INSERT INTO t1(x,y) VALUES(86,'V');
+    INSERT INTO t1(x,y) VALUES(87,'W');
+    INSERT INTO t1(x,y) VALUES(88,'X');
+    INSERT INTO t1(x,y) VALUES(89,'Y');
+    INSERT INTO t1(x,y) VALUES(90,'Z');
+    INSERT INTO t1(x,y) VALUES(91,'[');
+    INSERT INTO t1(x,y) VALUES(92,'\');
+    INSERT INTO t1(x,y) VALUES(93,']');
+    INSERT INTO t1(x,y) VALUES(94,'^');
+    INSERT INTO t1(x,y) VALUES(95,'_');
+    INSERT INTO t1(x,y) VALUES(96,'`');
+    INSERT INTO t1(x,y) VALUES(97,'a');
+    INSERT INTO t1(x,y) VALUES(98,'b');
+    INSERT INTO t1(x,y) VALUES(99,'c');
+    INSERT INTO t1(x,y) VALUES(100,'d');
+    INSERT INTO t1(x,y) VALUES(101,'e');
+    INSERT INTO t1(x,y) VALUES(102,'f');
+    INSERT INTO t1(x,y) VALUES(103,'g');
+    INSERT INTO t1(x,y) VALUES(104,'h');
+    INSERT INTO t1(x,y) VALUES(105,'i');
+    INSERT INTO t1(x,y) VALUES(106,'j');
+    INSERT INTO t1(x,y) VALUES(107,'k');
+    INSERT INTO t1(x,y) VALUES(108,'l');
+    INSERT INTO t1(x,y) VALUES(109,'m');
+    INSERT INTO t1(x,y) VALUES(110,'n');
+    INSERT INTO t1(x,y) VALUES(111,'o');
+    INSERT INTO t1(x,y) VALUES(112,'p');
+    INSERT INTO t1(x,y) VALUES(113,'q');
+    INSERT INTO t1(x,y) VALUES(114,'r');
+    INSERT INTO t1(x,y) VALUES(115,'s');
+    INSERT INTO t1(x,y) VALUES(116,'t');
+    INSERT INTO t1(x,y) VALUES(117,'u');
+    INSERT INTO t1(x,y) VALUES(118,'v');
+    INSERT INTO t1(x,y) VALUES(119,'w');
+    INSERT INTO t1(x,y) VALUES(120,'x');
+    INSERT INTO t1(x,y) VALUES(121,'y');
+    INSERT INTO t1(x,y) VALUES(122,'z');
+    INSERT INTO t1(x,y) VALUES(123,'{');
+    INSERT INTO t1(x,y) VALUES(124,'|');
+    INSERT INTO t1(x,y) VALUES(125,'}');
+    INSERT INTO t1(x,y) VALUES(126,'~');
+    INSERT INTO t1(x,y) VALUES(127,CAST(x'7f' AS TEXT));
+    SELECT count(*) FROM t1;
+  }
+} {127}
+do_test like2-1.2 {
+  db eval {
+    CREATE TABLE t2(x INT, y COLLATE NOCASE);
+    INSERT INTO t2 SELECT * FROM t1;
+    CREATE INDEX i2 ON t2(y);
+    SELECT count(*) FROM t2;
+  }
+} {127}
+do_test like2-1.3 {
+  db eval {
+    CREATE TABLE t3(x INT, y COLLATE NOCASE);
+    INSERT INTO t3 SELECT x, 'abc' || y || 'xyz' FROM t1;
+    CREATE INDEX i3 ON t3(y);
+    SELECT count(*) FROM t2;
+  }
+} {127}
+do_test like-2.32.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE ' %'"
+} {32}
+do_test like-2.32.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE ' %'"
+} {32}
+do_test like-2.32.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abc %'"
+} {32}
+do_test like-2.33.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE '!%'"
+} {33}
+do_test like-2.33.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE '!%'"
+} {33}
+do_test like-2.33.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abc!%'"
+} {33}
+do_test like-2.34.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE '\"%'"
+} {34}
+do_test like-2.34.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE '\"%'"
+} {34}
+do_test like-2.34.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abc\"%'"
+} {34}
+do_test like-2.35.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE '#%'"
+} {35}
+do_test like-2.35.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE '#%'"
+} {35}
+do_test like-2.35.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abc#%'"
+} {35}
+do_test like-2.36.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE '\$%'"
+} {36}
+do_test like-2.36.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE '\$%'"
+} {36}
+do_test like-2.36.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abc\$%'"
+} {36}
+do_test like-2.38.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE '&%'"
+} {38}
+do_test like-2.38.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE '&%'"
+} {38}
+do_test like-2.38.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abc&%'"
+} {38}
+do_test like-2.39.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE '''%'"
+} {39}
+do_test like-2.39.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE '''%'"
+} {39}
+do_test like-2.39.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abc''%'"
+} {39}
+do_test like-2.40.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE '(%'"
+} {40}
+do_test like-2.40.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE '(%'"
+} {40}
+do_test like-2.40.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abc(%'"
+} {40}
+do_test like-2.41.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE ')%'"
+} {41}
+do_test like-2.41.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE ')%'"
+} {41}
+do_test like-2.41.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abc)%'"
+} {41}
+do_test like-2.42.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE '*%'"
+} {42}
+do_test like-2.42.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE '*%'"
+} {42}
+do_test like-2.42.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abc*%'"
+} {42}
+do_test like-2.43.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE '+%'"
+} {43}
+do_test like-2.43.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE '+%'"
+} {43}
+do_test like-2.43.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abc+%'"
+} {43}
+do_test like-2.44.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE ',%'"
+} {44}
+do_test like-2.44.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE ',%'"
+} {44}
+do_test like-2.44.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abc,%'"
+} {44}
+do_test like-2.45.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE '-%'"
+} {45}
+do_test like-2.45.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE '-%'"
+} {45}
+do_test like-2.45.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abc-%'"
+} {45}
+do_test like-2.46.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE '.%'"
+} {46}
+do_test like-2.46.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE '.%'"
+} {46}
+do_test like-2.46.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abc.%'"
+} {46}
+do_test like-2.47.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE '/%'"
+} {47}
+do_test like-2.47.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE '/%'"
+} {47}
+do_test like-2.47.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abc/%'"
+} {47}
+do_test like-2.48.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE '0%'"
+} {48}
+do_test like-2.48.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE '0%'"
+} {48}
+do_test like-2.48.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abc0%'"
+} {48}
+do_test like-2.49.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE '1%'"
+} {49}
+do_test like-2.49.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE '1%'"
+} {49}
+do_test like-2.49.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abc1%'"
+} {49}
+do_test like-2.50.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE '2%'"
+} {50}
+do_test like-2.50.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE '2%'"
+} {50}
+do_test like-2.50.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abc2%'"
+} {50}
+do_test like-2.51.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE '3%'"
+} {51}
+do_test like-2.51.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE '3%'"
+} {51}
+do_test like-2.51.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abc3%'"
+} {51}
+do_test like-2.52.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE '4%'"
+} {52}
+do_test like-2.52.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE '4%'"
+} {52}
+do_test like-2.52.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abc4%'"
+} {52}
+do_test like-2.53.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE '5%'"
+} {53}
+do_test like-2.53.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE '5%'"
+} {53}
+do_test like-2.53.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abc5%'"
+} {53}
+do_test like-2.54.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE '6%'"
+} {54}
+do_test like-2.54.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE '6%'"
+} {54}
+do_test like-2.54.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abc6%'"
+} {54}
+do_test like-2.55.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE '7%'"
+} {55}
+do_test like-2.55.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE '7%'"
+} {55}
+do_test like-2.55.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abc7%'"
+} {55}
+do_test like-2.56.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE '8%'"
+} {56}
+do_test like-2.56.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE '8%'"
+} {56}
+do_test like-2.56.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abc8%'"
+} {56}
+do_test like-2.57.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE '9%'"
+} {57}
+do_test like-2.57.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE '9%'"
+} {57}
+do_test like-2.57.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abc9%'"
+} {57}
+do_test like-2.58.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE ':%'"
+} {58}
+do_test like-2.58.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE ':%'"
+} {58}
+do_test like-2.58.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abc:%'"
+} {58}
+do_test like-2.59.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE ';%'"
+} {59}
+do_test like-2.59.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE ';%'"
+} {59}
+do_test like-2.59.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abc;%'"
+} {59}
+do_test like-2.60.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE '<%'"
+} {60}
+do_test like-2.60.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE '<%'"
+} {60}
+do_test like-2.60.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abc<%'"
+} {60}
+do_test like-2.61.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE '=%'"
+} {61}
+do_test like-2.61.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE '=%'"
+} {61}
+do_test like-2.61.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abc=%'"
+} {61}
+do_test like-2.62.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE '>%'"
+} {62}
+do_test like-2.62.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE '>%'"
+} {62}
+do_test like-2.62.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abc>%'"
+} {62}
+do_test like-2.63.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE '?%'"
+} {63}
+do_test like-2.63.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE '?%'"
+} {63}
+do_test like-2.63.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abc?%'"
+} {63}
+do_test like-2.64.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE '@%'"
+} {64}
+do_test like-2.64.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE '@%'"
+} {64}
+do_test like-2.64.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abc@%'"
+} {64}
+do_test like-2.65.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'A%'"
+} {65 97}
+do_test like-2.65.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'A%'"
+} {65 97}
+do_test like-2.65.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcA%'"
+} {65 97}
+do_test like-2.66.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'B%'"
+} {66 98}
+do_test like-2.66.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'B%'"
+} {66 98}
+do_test like-2.66.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcB%'"
+} {66 98}
+do_test like-2.67.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'C%'"
+} {67 99}
+do_test like-2.67.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'C%'"
+} {67 99}
+do_test like-2.67.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcC%'"
+} {67 99}
+do_test like-2.68.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'D%'"
+} {68 100}
+do_test like-2.68.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'D%'"
+} {68 100}
+do_test like-2.68.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcD%'"
+} {68 100}
+do_test like-2.69.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'E%'"
+} {69 101}
+do_test like-2.69.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'E%'"
+} {69 101}
+do_test like-2.69.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcE%'"
+} {69 101}
+do_test like-2.70.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'F%'"
+} {70 102}
+do_test like-2.70.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'F%'"
+} {70 102}
+do_test like-2.70.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcF%'"
+} {70 102}
+do_test like-2.71.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'G%'"
+} {71 103}
+do_test like-2.71.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'G%'"
+} {71 103}
+do_test like-2.71.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcG%'"
+} {71 103}
+do_test like-2.72.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'H%'"
+} {72 104}
+do_test like-2.72.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'H%'"
+} {72 104}
+do_test like-2.72.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcH%'"
+} {72 104}
+do_test like-2.73.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'I%'"
+} {73 105}
+do_test like-2.73.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'I%'"
+} {73 105}
+do_test like-2.73.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcI%'"
+} {73 105}
+do_test like-2.74.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'J%'"
+} {74 106}
+do_test like-2.74.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'J%'"
+} {74 106}
+do_test like-2.74.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcJ%'"
+} {74 106}
+do_test like-2.75.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'K%'"
+} {75 107}
+do_test like-2.75.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'K%'"
+} {75 107}
+do_test like-2.75.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcK%'"
+} {75 107}
+do_test like-2.76.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'L%'"
+} {76 108}
+do_test like-2.76.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'L%'"
+} {76 108}
+do_test like-2.76.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcL%'"
+} {76 108}
+do_test like-2.77.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'M%'"
+} {77 109}
+do_test like-2.77.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'M%'"
+} {77 109}
+do_test like-2.77.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcM%'"
+} {77 109}
+do_test like-2.78.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'N%'"
+} {78 110}
+do_test like-2.78.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'N%'"
+} {78 110}
+do_test like-2.78.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcN%'"
+} {78 110}
+do_test like-2.79.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'O%'"
+} {79 111}
+do_test like-2.79.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'O%'"
+} {79 111}
+do_test like-2.79.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcO%'"
+} {79 111}
+do_test like-2.80.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'P%'"
+} {80 112}
+do_test like-2.80.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'P%'"
+} {80 112}
+do_test like-2.80.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcP%'"
+} {80 112}
+do_test like-2.81.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'Q%'"
+} {81 113}
+do_test like-2.81.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'Q%'"
+} {81 113}
+do_test like-2.81.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcQ%'"
+} {81 113}
+do_test like-2.82.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'R%'"
+} {82 114}
+do_test like-2.82.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'R%'"
+} {82 114}
+do_test like-2.82.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcR%'"
+} {82 114}
+do_test like-2.83.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'S%'"
+} {83 115}
+do_test like-2.83.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'S%'"
+} {83 115}
+do_test like-2.83.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcS%'"
+} {83 115}
+do_test like-2.84.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'T%'"
+} {84 116}
+do_test like-2.84.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'T%'"
+} {84 116}
+do_test like-2.84.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcT%'"
+} {84 116}
+do_test like-2.85.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'U%'"
+} {85 117}
+do_test like-2.85.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'U%'"
+} {85 117}
+do_test like-2.85.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcU%'"
+} {85 117}
+do_test like-2.86.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'V%'"
+} {86 118}
+do_test like-2.86.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'V%'"
+} {86 118}
+do_test like-2.86.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcV%'"
+} {86 118}
+do_test like-2.87.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'W%'"
+} {87 119}
+do_test like-2.87.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'W%'"
+} {87 119}
+do_test like-2.87.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcW%'"
+} {87 119}
+do_test like-2.88.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'X%'"
+} {88 120}
+do_test like-2.88.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'X%'"
+} {88 120}
+do_test like-2.88.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcX%'"
+} {88 120}
+do_test like-2.89.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'Y%'"
+} {89 121}
+do_test like-2.89.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'Y%'"
+} {89 121}
+do_test like-2.89.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcY%'"
+} {89 121}
+do_test like-2.90.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'Z%'"
+} {90 122}
+do_test like-2.90.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'Z%'"
+} {90 122}
+do_test like-2.90.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcZ%'"
+} {90 122}
+do_test like-2.91.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE '\[%'"
+} {91}
+do_test like-2.91.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE '\[%'"
+} {91}
+do_test like-2.91.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abc\[%'"
+} {91}
+do_test like-2.92.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE '\\%'"
+} {92}
+do_test like-2.92.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE '\\%'"
+} {92}
+do_test like-2.92.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abc\\%'"
+} {92}
+do_test like-2.93.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE '\]%'"
+} {93}
+do_test like-2.93.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE '\]%'"
+} {93}
+do_test like-2.93.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abc\]%'"
+} {93}
+do_test like-2.94.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE '^%'"
+} {94}
+do_test like-2.94.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE '^%'"
+} {94}
+do_test like-2.94.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abc^%'"
+} {94}
+do_test like-2.96.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE '`%'"
+} {96}
+do_test like-2.96.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE '`%'"
+} {96}
+do_test like-2.96.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abc`%'"
+} {96}
+do_test like-2.97.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'a%'"
+} {65 97}
+do_test like-2.97.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'a%'"
+} {65 97}
+do_test like-2.97.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abca%'"
+} {65 97}
+do_test like-2.98.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'b%'"
+} {66 98}
+do_test like-2.98.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'b%'"
+} {66 98}
+do_test like-2.98.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcb%'"
+} {66 98}
+do_test like-2.99.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'c%'"
+} {67 99}
+do_test like-2.99.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'c%'"
+} {67 99}
+do_test like-2.99.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcc%'"
+} {67 99}
+do_test like-2.100.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'd%'"
+} {68 100}
+do_test like-2.100.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'd%'"
+} {68 100}
+do_test like-2.100.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcd%'"
+} {68 100}
+do_test like-2.101.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'e%'"
+} {69 101}
+do_test like-2.101.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'e%'"
+} {69 101}
+do_test like-2.101.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abce%'"
+} {69 101}
+do_test like-2.102.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'f%'"
+} {70 102}
+do_test like-2.102.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'f%'"
+} {70 102}
+do_test like-2.102.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcf%'"
+} {70 102}
+do_test like-2.103.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'g%'"
+} {71 103}
+do_test like-2.103.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'g%'"
+} {71 103}
+do_test like-2.103.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcg%'"
+} {71 103}
+do_test like-2.104.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'h%'"
+} {72 104}
+do_test like-2.104.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'h%'"
+} {72 104}
+do_test like-2.104.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abch%'"
+} {72 104}
+do_test like-2.105.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'i%'"
+} {73 105}
+do_test like-2.105.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'i%'"
+} {73 105}
+do_test like-2.105.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abci%'"
+} {73 105}
+do_test like-2.106.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'j%'"
+} {74 106}
+do_test like-2.106.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'j%'"
+} {74 106}
+do_test like-2.106.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcj%'"
+} {74 106}
+do_test like-2.107.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'k%'"
+} {75 107}
+do_test like-2.107.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'k%'"
+} {75 107}
+do_test like-2.107.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abck%'"
+} {75 107}
+do_test like-2.108.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'l%'"
+} {76 108}
+do_test like-2.108.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'l%'"
+} {76 108}
+do_test like-2.108.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcl%'"
+} {76 108}
+do_test like-2.109.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'm%'"
+} {77 109}
+do_test like-2.109.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'm%'"
+} {77 109}
+do_test like-2.109.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcm%'"
+} {77 109}
+do_test like-2.110.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'n%'"
+} {78 110}
+do_test like-2.110.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'n%'"
+} {78 110}
+do_test like-2.110.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcn%'"
+} {78 110}
+do_test like-2.111.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'o%'"
+} {79 111}
+do_test like-2.111.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'o%'"
+} {79 111}
+do_test like-2.111.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abco%'"
+} {79 111}
+do_test like-2.112.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'p%'"
+} {80 112}
+do_test like-2.112.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'p%'"
+} {80 112}
+do_test like-2.112.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcp%'"
+} {80 112}
+do_test like-2.113.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'q%'"
+} {81 113}
+do_test like-2.113.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'q%'"
+} {81 113}
+do_test like-2.113.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcq%'"
+} {81 113}
+do_test like-2.114.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'r%'"
+} {82 114}
+do_test like-2.114.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'r%'"
+} {82 114}
+do_test like-2.114.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcr%'"
+} {82 114}
+do_test like-2.115.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 's%'"
+} {83 115}
+do_test like-2.115.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 's%'"
+} {83 115}
+do_test like-2.115.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcs%'"
+} {83 115}
+do_test like-2.116.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 't%'"
+} {84 116}
+do_test like-2.116.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 't%'"
+} {84 116}
+do_test like-2.116.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abct%'"
+} {84 116}
+do_test like-2.117.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'u%'"
+} {85 117}
+do_test like-2.117.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'u%'"
+} {85 117}
+do_test like-2.117.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcu%'"
+} {85 117}
+do_test like-2.118.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'v%'"
+} {86 118}
+do_test like-2.118.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'v%'"
+} {86 118}
+do_test like-2.118.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcv%'"
+} {86 118}
+do_test like-2.119.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'w%'"
+} {87 119}
+do_test like-2.119.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'w%'"
+} {87 119}
+do_test like-2.119.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcw%'"
+} {87 119}
+do_test like-2.120.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'x%'"
+} {88 120}
+do_test like-2.120.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'x%'"
+} {88 120}
+do_test like-2.120.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcx%'"
+} {88 120}
+do_test like-2.121.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'y%'"
+} {89 121}
+do_test like-2.121.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'y%'"
+} {89 121}
+do_test like-2.121.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcy%'"
+} {89 121}
+do_test like-2.122.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE 'z%'"
+} {90 122}
+do_test like-2.122.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE 'z%'"
+} {90 122}
+do_test like-2.122.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abcz%'"
+} {90 122}
+do_test like-2.123.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE '\173%'"
+} {123}
+do_test like-2.123.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE '\173%'"
+} {123}
+do_test like-2.123.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abc\173%'"
+} {123}
+do_test like-2.124.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE '|%'"
+} {124}
+do_test like-2.124.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE '|%'"
+} {124}
+do_test like-2.124.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abc|%'"
+} {124}
+do_test like-2.125.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE '\175%'"
+} {125}
+do_test like-2.125.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE '\175%'"
+} {125}
+do_test like-2.125.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abc\175%'"
+} {125}
+do_test like-2.126.1 {
+  db eval "SELECT x FROM t1 WHERE y LIKE '~%'"
+} {126}
+do_test like-2.126.2 {
+  db eval "SELECT x FROM t2 WHERE y LIKE '~%'"
+} {126}
+do_test like-2.126.3 {
+  db eval "SELECT x FROM t3 WHERE y LIKE 'abc~%'"
+} {126}
+
+
+finish_test