/ Check-in [33548744]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Fix the LIKE query optimizer so that it works with LIKE patterns ending in '@%' on NOCASE columns. Ticket #3139. (CVS 5158)
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 33548744369643cc8843b74ad1fc1b7d5988d7a4
User & Date: drh 2008-05-26 18:33:41
Context
2008-05-26
18:41
Import 'rtree' extension. (CVS 5159) check-in: b104dcd6 user: danielk1977 tags: trunk
18:33
Fix the LIKE query optimizer so that it works with LIKE patterns ending in '@%' on NOCASE columns. Ticket #3139. (CVS 5158) check-in: 33548744 user: drh tags: trunk
2008-05-23
17:21
Fixed various typos, spelling, grammar, and formatting mistakes. Ticket #3124. (CVS 5157) check-in: 77d5a7aa user: shane tags: trunk
Changes
Hide Diffs Side-by-Side Diffs Ignore Whitespace Patch

Changes to src/where.c.

    12     12   ** This module contains C code that generates VDBE code used to process
    13     13   ** the WHERE clause of SQL statements.  This module is reponsible for
    14     14   ** generating the code that loops through a table looking for applicable
    15     15   ** rows.  Indices are selected and used to speed the search when doing
    16     16   ** so is applicable.  Because this module is responsible for selecting
    17     17   ** indices, you might also think of this module as the "query optimizer".
    18     18   **
    19         -** $Id: where.c,v 1.303 2008/05/16 15:40:40 danielk1977 Exp $
           19  +** $Id: where.c,v 1.304 2008/05/26 18:33:41 drh Exp $
    20     20   */
    21     21   #include "sqliteInt.h"
    22     22   
    23     23   /*
    24     24   ** The number of bits in a Bitmask.  "BMS" means "BitMask Size".
    25     25   */
    26     26   #define BMS  (sizeof(Bitmask)*8)
................................................................................
   898    898     ** operator.
   899    899     **
   900    900     ** A like pattern of the form "x LIKE 'abc%'" is changed into constraints
   901    901     **
   902    902     **          x>='abc' AND x<'abd' AND x LIKE 'abc%'
   903    903     **
   904    904     ** The last character of the prefix "abc" is incremented to form the
   905         -  ** termination condidtion "abd".  This trick of incrementing the last
   906         -  ** is not 255 and if the character set is not EBCDIC.  
          905  +  ** termination condidtion "abd".
   907    906     */
   908    907     if( isLikeOrGlob(db, pExpr, &nPattern, &isComplete, &noCase) ){
   909    908       Expr *pLeft, *pRight;
   910    909       Expr *pStr1, *pStr2;
   911    910       Expr *pNewExpr1, *pNewExpr2;
   912    911       int idxNew1, idxNew2;
   913    912   
................................................................................
   921    920       }
   922    921       pStr2 = sqlite3ExprDup(db, pStr1);
   923    922       if( !db->mallocFailed ){
   924    923         u8 c, *pC;
   925    924         assert( pStr2->token.dyn );
   926    925         pC = (u8*)&pStr2->token.z[nPattern-1];
   927    926         c = *pC;
   928         -      if( noCase ) c = sqlite3UpperToLower[c];
          927  +      if( noCase ){
          928  +        if( c=='@' ) isComplete = 0;
          929  +        c = sqlite3UpperToLower[c];
          930  +      }
   929    931         *pC = c + 1;
   930    932       }
   931    933       pNewExpr1 = sqlite3PExpr(pParse, TK_GE, sqlite3ExprDup(db,pLeft), pStr1, 0);
   932    934       idxNew1 = whereClauseInsert(pWC, pNewExpr1, TERM_VIRTUAL|TERM_DYNAMIC);
   933    935       exprAnalyze(pSrc, pWC, idxNew1);
   934    936       pNewExpr2 = sqlite3PExpr(pParse, TK_LT, sqlite3ExprDup(db,pLeft), pStr2, 0);
   935    937       idxNew2 = whereClauseInsert(pWC, pNewExpr2, TERM_VIRTUAL|TERM_DYNAMIC);

Added test/like2.test.

            1  +# 2008 May 26
            2  +#
            3  +# The author disclaims copyright to this source code.  In place of
            4  +# a legal notice, here is a blessing:
            5  +#
            6  +#    May you do good and not evil.
            7  +#    May you find forgiveness for yourself and forgive others.
            8  +#    May you share freely, never taking more than you give.
            9  +#
           10  +#***********************************************************************
           11  +# This file implements regression tests for SQLite library.  The
           12  +# focus of this file is testing the LIKE and GLOB operators and
           13  +# in particular the optimizations that occur to help those operators
           14  +# run faster.
           15  +#
           16  +# $Id: like2.test,v 1.1 2008/05/26 18:33:41 drh Exp $
           17  +
           18  +set testdir [file dirname $argv0]
           19  +source $testdir/tester.tcl
           20  +
           21  +do_test like2-1.1 {
           22  +  db eval {
           23  +    CREATE TABLE t1(x INT, y COLLATE NOCASE);
           24  +    INSERT INTO t1(x,y) VALUES(1,CAST(x'01' AS TEXT));
           25  +    INSERT INTO t1(x,y) VALUES(2,CAST(x'02' AS TEXT));
           26  +    INSERT INTO t1(x,y) VALUES(3,CAST(x'03' AS TEXT));
           27  +    INSERT INTO t1(x,y) VALUES(4,CAST(x'04' AS TEXT));
           28  +    INSERT INTO t1(x,y) VALUES(5,CAST(x'05' AS TEXT));
           29  +    INSERT INTO t1(x,y) VALUES(6,CAST(x'06' AS TEXT));
           30  +    INSERT INTO t1(x,y) VALUES(7,CAST(x'07' AS TEXT));
           31  +    INSERT INTO t1(x,y) VALUES(8,CAST(x'08' AS TEXT));
           32  +    INSERT INTO t1(x,y) VALUES(9,CAST(x'09' AS TEXT));
           33  +    INSERT INTO t1(x,y) VALUES(10,CAST(x'0a' AS TEXT));
           34  +    INSERT INTO t1(x,y) VALUES(11,CAST(x'0b' AS TEXT));
           35  +    INSERT INTO t1(x,y) VALUES(12,CAST(x'0c' AS TEXT));
           36  +    INSERT INTO t1(x,y) VALUES(13,CAST(x'0d' AS TEXT));
           37  +    INSERT INTO t1(x,y) VALUES(14,CAST(x'0e' AS TEXT));
           38  +    INSERT INTO t1(x,y) VALUES(15,CAST(x'0f' AS TEXT));
           39  +    INSERT INTO t1(x,y) VALUES(16,CAST(x'10' AS TEXT));
           40  +    INSERT INTO t1(x,y) VALUES(17,CAST(x'11' AS TEXT));
           41  +    INSERT INTO t1(x,y) VALUES(18,CAST(x'12' AS TEXT));
           42  +    INSERT INTO t1(x,y) VALUES(19,CAST(x'13' AS TEXT));
           43  +    INSERT INTO t1(x,y) VALUES(20,CAST(x'14' AS TEXT));
           44  +    INSERT INTO t1(x,y) VALUES(21,CAST(x'15' AS TEXT));
           45  +    INSERT INTO t1(x,y) VALUES(22,CAST(x'16' AS TEXT));
           46  +    INSERT INTO t1(x,y) VALUES(23,CAST(x'17' AS TEXT));
           47  +    INSERT INTO t1(x,y) VALUES(24,CAST(x'18' AS TEXT));
           48  +    INSERT INTO t1(x,y) VALUES(25,CAST(x'19' AS TEXT));
           49  +    INSERT INTO t1(x,y) VALUES(26,CAST(x'1a' AS TEXT));
           50  +    INSERT INTO t1(x,y) VALUES(27,CAST(x'1b' AS TEXT));
           51  +    INSERT INTO t1(x,y) VALUES(28,CAST(x'1c' AS TEXT));
           52  +    INSERT INTO t1(x,y) VALUES(29,CAST(x'1d' AS TEXT));
           53  +    INSERT INTO t1(x,y) VALUES(30,CAST(x'1e' AS TEXT));
           54  +    INSERT INTO t1(x,y) VALUES(31,CAST(x'1f' AS TEXT));
           55  +    INSERT INTO t1(x,y) VALUES(32,' ');
           56  +    INSERT INTO t1(x,y) VALUES(33,'!');
           57  +    INSERT INTO t1(x,y) VALUES(34,'"');
           58  +    INSERT INTO t1(x,y) VALUES(35,'#');
           59  +    INSERT INTO t1(x,y) VALUES(36,'$');
           60  +    INSERT INTO t1(x,y) VALUES(37,'%');
           61  +    INSERT INTO t1(x,y) VALUES(38,'&');
           62  +    INSERT INTO t1(x,y) VALUES(39,'''');
           63  +    INSERT INTO t1(x,y) VALUES(40,'(');
           64  +    INSERT INTO t1(x,y) VALUES(41,')');
           65  +    INSERT INTO t1(x,y) VALUES(42,'*');
           66  +    INSERT INTO t1(x,y) VALUES(43,'+');
           67  +    INSERT INTO t1(x,y) VALUES(44,',');
           68  +    INSERT INTO t1(x,y) VALUES(45,'-');
           69  +    INSERT INTO t1(x,y) VALUES(46,'.');
           70  +    INSERT INTO t1(x,y) VALUES(47,'/');
           71  +    INSERT INTO t1(x,y) VALUES(48,'0');
           72  +    INSERT INTO t1(x,y) VALUES(49,'1');
           73  +    INSERT INTO t1(x,y) VALUES(50,'2');
           74  +    INSERT INTO t1(x,y) VALUES(51,'3');
           75  +    INSERT INTO t1(x,y) VALUES(52,'4');
           76  +    INSERT INTO t1(x,y) VALUES(53,'5');
           77  +    INSERT INTO t1(x,y) VALUES(54,'6');
           78  +    INSERT INTO t1(x,y) VALUES(55,'7');
           79  +    INSERT INTO t1(x,y) VALUES(56,'8');
           80  +    INSERT INTO t1(x,y) VALUES(57,'9');
           81  +    INSERT INTO t1(x,y) VALUES(58,':');
           82  +    INSERT INTO t1(x,y) VALUES(59,';');
           83  +    INSERT INTO t1(x,y) VALUES(60,'<');
           84  +    INSERT INTO t1(x,y) VALUES(61,'=');
           85  +    INSERT INTO t1(x,y) VALUES(62,'>');
           86  +    INSERT INTO t1(x,y) VALUES(63,'?');
           87  +    INSERT INTO t1(x,y) VALUES(64,'@');
           88  +    INSERT INTO t1(x,y) VALUES(65,'A');
           89  +    INSERT INTO t1(x,y) VALUES(66,'B');
           90  +    INSERT INTO t1(x,y) VALUES(67,'C');
           91  +    INSERT INTO t1(x,y) VALUES(68,'D');
           92  +    INSERT INTO t1(x,y) VALUES(69,'E');
           93  +    INSERT INTO t1(x,y) VALUES(70,'F');
           94  +    INSERT INTO t1(x,y) VALUES(71,'G');
           95  +    INSERT INTO t1(x,y) VALUES(72,'H');
           96  +    INSERT INTO t1(x,y) VALUES(73,'I');
           97  +    INSERT INTO t1(x,y) VALUES(74,'J');
           98  +    INSERT INTO t1(x,y) VALUES(75,'K');
           99  +    INSERT INTO t1(x,y) VALUES(76,'L');
          100  +    INSERT INTO t1(x,y) VALUES(77,'M');
          101  +    INSERT INTO t1(x,y) VALUES(78,'N');
          102  +    INSERT INTO t1(x,y) VALUES(79,'O');
          103  +    INSERT INTO t1(x,y) VALUES(80,'P');
          104  +    INSERT INTO t1(x,y) VALUES(81,'Q');
          105  +    INSERT INTO t1(x,y) VALUES(82,'R');
          106  +    INSERT INTO t1(x,y) VALUES(83,'S');
          107  +    INSERT INTO t1(x,y) VALUES(84,'T');
          108  +    INSERT INTO t1(x,y) VALUES(85,'U');
          109  +    INSERT INTO t1(x,y) VALUES(86,'V');
          110  +    INSERT INTO t1(x,y) VALUES(87,'W');
          111  +    INSERT INTO t1(x,y) VALUES(88,'X');
          112  +    INSERT INTO t1(x,y) VALUES(89,'Y');
          113  +    INSERT INTO t1(x,y) VALUES(90,'Z');
          114  +    INSERT INTO t1(x,y) VALUES(91,'[');
          115  +    INSERT INTO t1(x,y) VALUES(92,'\');
          116  +    INSERT INTO t1(x,y) VALUES(93,']');
          117  +    INSERT INTO t1(x,y) VALUES(94,'^');
          118  +    INSERT INTO t1(x,y) VALUES(95,'_');
          119  +    INSERT INTO t1(x,y) VALUES(96,'`');
          120  +    INSERT INTO t1(x,y) VALUES(97,'a');
          121  +    INSERT INTO t1(x,y) VALUES(98,'b');
          122  +    INSERT INTO t1(x,y) VALUES(99,'c');
          123  +    INSERT INTO t1(x,y) VALUES(100,'d');
          124  +    INSERT INTO t1(x,y) VALUES(101,'e');
          125  +    INSERT INTO t1(x,y) VALUES(102,'f');
          126  +    INSERT INTO t1(x,y) VALUES(103,'g');
          127  +    INSERT INTO t1(x,y) VALUES(104,'h');
          128  +    INSERT INTO t1(x,y) VALUES(105,'i');
          129  +    INSERT INTO t1(x,y) VALUES(106,'j');
          130  +    INSERT INTO t1(x,y) VALUES(107,'k');
          131  +    INSERT INTO t1(x,y) VALUES(108,'l');
          132  +    INSERT INTO t1(x,y) VALUES(109,'m');
          133  +    INSERT INTO t1(x,y) VALUES(110,'n');
          134  +    INSERT INTO t1(x,y) VALUES(111,'o');
          135  +    INSERT INTO t1(x,y) VALUES(112,'p');
          136  +    INSERT INTO t1(x,y) VALUES(113,'q');
          137  +    INSERT INTO t1(x,y) VALUES(114,'r');
          138  +    INSERT INTO t1(x,y) VALUES(115,'s');
          139  +    INSERT INTO t1(x,y) VALUES(116,'t');
          140  +    INSERT INTO t1(x,y) VALUES(117,'u');
          141  +    INSERT INTO t1(x,y) VALUES(118,'v');
          142  +    INSERT INTO t1(x,y) VALUES(119,'w');
          143  +    INSERT INTO t1(x,y) VALUES(120,'x');
          144  +    INSERT INTO t1(x,y) VALUES(121,'y');
          145  +    INSERT INTO t1(x,y) VALUES(122,'z');
          146  +    INSERT INTO t1(x,y) VALUES(123,'{');
          147  +    INSERT INTO t1(x,y) VALUES(124,'|');
          148  +    INSERT INTO t1(x,y) VALUES(125,'}');
          149  +    INSERT INTO t1(x,y) VALUES(126,'~');
          150  +    INSERT INTO t1(x,y) VALUES(127,CAST(x'7f' AS TEXT));
          151  +    SELECT count(*) FROM t1;
          152  +  }
          153  +} {127}
          154  +do_test like2-1.2 {
          155  +  db eval {
          156  +    CREATE TABLE t2(x INT, y COLLATE NOCASE);
          157  +    INSERT INTO t2 SELECT * FROM t1;
          158  +    CREATE INDEX i2 ON t2(y);
          159  +    SELECT count(*) FROM t2;
          160  +  }
          161  +} {127}
          162  +do_test like2-1.3 {
          163  +  db eval {
          164  +    CREATE TABLE t3(x INT, y COLLATE NOCASE);
          165  +    INSERT INTO t3 SELECT x, 'abc' || y || 'xyz' FROM t1;
          166  +    CREATE INDEX i3 ON t3(y);
          167  +    SELECT count(*) FROM t2;
          168  +  }
          169  +} {127}
          170  +do_test like-2.32.1 {
          171  +  db eval "SELECT x FROM t1 WHERE y LIKE ' %'"
          172  +} {32}
          173  +do_test like-2.32.2 {
          174  +  db eval "SELECT x FROM t2 WHERE y LIKE ' %'"
          175  +} {32}
          176  +do_test like-2.32.3 {
          177  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abc %'"
          178  +} {32}
          179  +do_test like-2.33.1 {
          180  +  db eval "SELECT x FROM t1 WHERE y LIKE '!%'"
          181  +} {33}
          182  +do_test like-2.33.2 {
          183  +  db eval "SELECT x FROM t2 WHERE y LIKE '!%'"
          184  +} {33}
          185  +do_test like-2.33.3 {
          186  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abc!%'"
          187  +} {33}
          188  +do_test like-2.34.1 {
          189  +  db eval "SELECT x FROM t1 WHERE y LIKE '\"%'"
          190  +} {34}
          191  +do_test like-2.34.2 {
          192  +  db eval "SELECT x FROM t2 WHERE y LIKE '\"%'"
          193  +} {34}
          194  +do_test like-2.34.3 {
          195  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abc\"%'"
          196  +} {34}
          197  +do_test like-2.35.1 {
          198  +  db eval "SELECT x FROM t1 WHERE y LIKE '#%'"
          199  +} {35}
          200  +do_test like-2.35.2 {
          201  +  db eval "SELECT x FROM t2 WHERE y LIKE '#%'"
          202  +} {35}
          203  +do_test like-2.35.3 {
          204  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abc#%'"
          205  +} {35}
          206  +do_test like-2.36.1 {
          207  +  db eval "SELECT x FROM t1 WHERE y LIKE '\$%'"
          208  +} {36}
          209  +do_test like-2.36.2 {
          210  +  db eval "SELECT x FROM t2 WHERE y LIKE '\$%'"
          211  +} {36}
          212  +do_test like-2.36.3 {
          213  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abc\$%'"
          214  +} {36}
          215  +do_test like-2.38.1 {
          216  +  db eval "SELECT x FROM t1 WHERE y LIKE '&%'"
          217  +} {38}
          218  +do_test like-2.38.2 {
          219  +  db eval "SELECT x FROM t2 WHERE y LIKE '&%'"
          220  +} {38}
          221  +do_test like-2.38.3 {
          222  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abc&%'"
          223  +} {38}
          224  +do_test like-2.39.1 {
          225  +  db eval "SELECT x FROM t1 WHERE y LIKE '''%'"
          226  +} {39}
          227  +do_test like-2.39.2 {
          228  +  db eval "SELECT x FROM t2 WHERE y LIKE '''%'"
          229  +} {39}
          230  +do_test like-2.39.3 {
          231  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abc''%'"
          232  +} {39}
          233  +do_test like-2.40.1 {
          234  +  db eval "SELECT x FROM t1 WHERE y LIKE '(%'"
          235  +} {40}
          236  +do_test like-2.40.2 {
          237  +  db eval "SELECT x FROM t2 WHERE y LIKE '(%'"
          238  +} {40}
          239  +do_test like-2.40.3 {
          240  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abc(%'"
          241  +} {40}
          242  +do_test like-2.41.1 {
          243  +  db eval "SELECT x FROM t1 WHERE y LIKE ')%'"
          244  +} {41}
          245  +do_test like-2.41.2 {
          246  +  db eval "SELECT x FROM t2 WHERE y LIKE ')%'"
          247  +} {41}
          248  +do_test like-2.41.3 {
          249  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abc)%'"
          250  +} {41}
          251  +do_test like-2.42.1 {
          252  +  db eval "SELECT x FROM t1 WHERE y LIKE '*%'"
          253  +} {42}
          254  +do_test like-2.42.2 {
          255  +  db eval "SELECT x FROM t2 WHERE y LIKE '*%'"
          256  +} {42}
          257  +do_test like-2.42.3 {
          258  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abc*%'"
          259  +} {42}
          260  +do_test like-2.43.1 {
          261  +  db eval "SELECT x FROM t1 WHERE y LIKE '+%'"
          262  +} {43}
          263  +do_test like-2.43.2 {
          264  +  db eval "SELECT x FROM t2 WHERE y LIKE '+%'"
          265  +} {43}
          266  +do_test like-2.43.3 {
          267  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abc+%'"
          268  +} {43}
          269  +do_test like-2.44.1 {
          270  +  db eval "SELECT x FROM t1 WHERE y LIKE ',%'"
          271  +} {44}
          272  +do_test like-2.44.2 {
          273  +  db eval "SELECT x FROM t2 WHERE y LIKE ',%'"
          274  +} {44}
          275  +do_test like-2.44.3 {
          276  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abc,%'"
          277  +} {44}
          278  +do_test like-2.45.1 {
          279  +  db eval "SELECT x FROM t1 WHERE y LIKE '-%'"
          280  +} {45}
          281  +do_test like-2.45.2 {
          282  +  db eval "SELECT x FROM t2 WHERE y LIKE '-%'"
          283  +} {45}
          284  +do_test like-2.45.3 {
          285  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abc-%'"
          286  +} {45}
          287  +do_test like-2.46.1 {
          288  +  db eval "SELECT x FROM t1 WHERE y LIKE '.%'"
          289  +} {46}
          290  +do_test like-2.46.2 {
          291  +  db eval "SELECT x FROM t2 WHERE y LIKE '.%'"
          292  +} {46}
          293  +do_test like-2.46.3 {
          294  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abc.%'"
          295  +} {46}
          296  +do_test like-2.47.1 {
          297  +  db eval "SELECT x FROM t1 WHERE y LIKE '/%'"
          298  +} {47}
          299  +do_test like-2.47.2 {
          300  +  db eval "SELECT x FROM t2 WHERE y LIKE '/%'"
          301  +} {47}
          302  +do_test like-2.47.3 {
          303  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abc/%'"
          304  +} {47}
          305  +do_test like-2.48.1 {
          306  +  db eval "SELECT x FROM t1 WHERE y LIKE '0%'"
          307  +} {48}
          308  +do_test like-2.48.2 {
          309  +  db eval "SELECT x FROM t2 WHERE y LIKE '0%'"
          310  +} {48}
          311  +do_test like-2.48.3 {
          312  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abc0%'"
          313  +} {48}
          314  +do_test like-2.49.1 {
          315  +  db eval "SELECT x FROM t1 WHERE y LIKE '1%'"
          316  +} {49}
          317  +do_test like-2.49.2 {
          318  +  db eval "SELECT x FROM t2 WHERE y LIKE '1%'"
          319  +} {49}
          320  +do_test like-2.49.3 {
          321  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abc1%'"
          322  +} {49}
          323  +do_test like-2.50.1 {
          324  +  db eval "SELECT x FROM t1 WHERE y LIKE '2%'"
          325  +} {50}
          326  +do_test like-2.50.2 {
          327  +  db eval "SELECT x FROM t2 WHERE y LIKE '2%'"
          328  +} {50}
          329  +do_test like-2.50.3 {
          330  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abc2%'"
          331  +} {50}
          332  +do_test like-2.51.1 {
          333  +  db eval "SELECT x FROM t1 WHERE y LIKE '3%'"
          334  +} {51}
          335  +do_test like-2.51.2 {
          336  +  db eval "SELECT x FROM t2 WHERE y LIKE '3%'"
          337  +} {51}
          338  +do_test like-2.51.3 {
          339  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abc3%'"
          340  +} {51}
          341  +do_test like-2.52.1 {
          342  +  db eval "SELECT x FROM t1 WHERE y LIKE '4%'"
          343  +} {52}
          344  +do_test like-2.52.2 {
          345  +  db eval "SELECT x FROM t2 WHERE y LIKE '4%'"
          346  +} {52}
          347  +do_test like-2.52.3 {
          348  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abc4%'"
          349  +} {52}
          350  +do_test like-2.53.1 {
          351  +  db eval "SELECT x FROM t1 WHERE y LIKE '5%'"
          352  +} {53}
          353  +do_test like-2.53.2 {
          354  +  db eval "SELECT x FROM t2 WHERE y LIKE '5%'"
          355  +} {53}
          356  +do_test like-2.53.3 {
          357  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abc5%'"
          358  +} {53}
          359  +do_test like-2.54.1 {
          360  +  db eval "SELECT x FROM t1 WHERE y LIKE '6%'"
          361  +} {54}
          362  +do_test like-2.54.2 {
          363  +  db eval "SELECT x FROM t2 WHERE y LIKE '6%'"
          364  +} {54}
          365  +do_test like-2.54.3 {
          366  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abc6%'"
          367  +} {54}
          368  +do_test like-2.55.1 {
          369  +  db eval "SELECT x FROM t1 WHERE y LIKE '7%'"
          370  +} {55}
          371  +do_test like-2.55.2 {
          372  +  db eval "SELECT x FROM t2 WHERE y LIKE '7%'"
          373  +} {55}
          374  +do_test like-2.55.3 {
          375  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abc7%'"
          376  +} {55}
          377  +do_test like-2.56.1 {
          378  +  db eval "SELECT x FROM t1 WHERE y LIKE '8%'"
          379  +} {56}
          380  +do_test like-2.56.2 {
          381  +  db eval "SELECT x FROM t2 WHERE y LIKE '8%'"
          382  +} {56}
          383  +do_test like-2.56.3 {
          384  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abc8%'"
          385  +} {56}
          386  +do_test like-2.57.1 {
          387  +  db eval "SELECT x FROM t1 WHERE y LIKE '9%'"
          388  +} {57}
          389  +do_test like-2.57.2 {
          390  +  db eval "SELECT x FROM t2 WHERE y LIKE '9%'"
          391  +} {57}
          392  +do_test like-2.57.3 {
          393  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abc9%'"
          394  +} {57}
          395  +do_test like-2.58.1 {
          396  +  db eval "SELECT x FROM t1 WHERE y LIKE ':%'"
          397  +} {58}
          398  +do_test like-2.58.2 {
          399  +  db eval "SELECT x FROM t2 WHERE y LIKE ':%'"
          400  +} {58}
          401  +do_test like-2.58.3 {
          402  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abc:%'"
          403  +} {58}
          404  +do_test like-2.59.1 {
          405  +  db eval "SELECT x FROM t1 WHERE y LIKE ';%'"
          406  +} {59}
          407  +do_test like-2.59.2 {
          408  +  db eval "SELECT x FROM t2 WHERE y LIKE ';%'"
          409  +} {59}
          410  +do_test like-2.59.3 {
          411  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abc;%'"
          412  +} {59}
          413  +do_test like-2.60.1 {
          414  +  db eval "SELECT x FROM t1 WHERE y LIKE '<%'"
          415  +} {60}
          416  +do_test like-2.60.2 {
          417  +  db eval "SELECT x FROM t2 WHERE y LIKE '<%'"
          418  +} {60}
          419  +do_test like-2.60.3 {
          420  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abc<%'"
          421  +} {60}
          422  +do_test like-2.61.1 {
          423  +  db eval "SELECT x FROM t1 WHERE y LIKE '=%'"
          424  +} {61}
          425  +do_test like-2.61.2 {
          426  +  db eval "SELECT x FROM t2 WHERE y LIKE '=%'"
          427  +} {61}
          428  +do_test like-2.61.3 {
          429  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abc=%'"
          430  +} {61}
          431  +do_test like-2.62.1 {
          432  +  db eval "SELECT x FROM t1 WHERE y LIKE '>%'"
          433  +} {62}
          434  +do_test like-2.62.2 {
          435  +  db eval "SELECT x FROM t2 WHERE y LIKE '>%'"
          436  +} {62}
          437  +do_test like-2.62.3 {
          438  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abc>%'"
          439  +} {62}
          440  +do_test like-2.63.1 {
          441  +  db eval "SELECT x FROM t1 WHERE y LIKE '?%'"
          442  +} {63}
          443  +do_test like-2.63.2 {
          444  +  db eval "SELECT x FROM t2 WHERE y LIKE '?%'"
          445  +} {63}
          446  +do_test like-2.63.3 {
          447  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abc?%'"
          448  +} {63}
          449  +do_test like-2.64.1 {
          450  +  db eval "SELECT x FROM t1 WHERE y LIKE '@%'"
          451  +} {64}
          452  +do_test like-2.64.2 {
          453  +  db eval "SELECT x FROM t2 WHERE y LIKE '@%'"
          454  +} {64}
          455  +do_test like-2.64.3 {
          456  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abc@%'"
          457  +} {64}
          458  +do_test like-2.65.1 {
          459  +  db eval "SELECT x FROM t1 WHERE y LIKE 'A%'"
          460  +} {65 97}
          461  +do_test like-2.65.2 {
          462  +  db eval "SELECT x FROM t2 WHERE y LIKE 'A%'"
          463  +} {65 97}
          464  +do_test like-2.65.3 {
          465  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcA%'"
          466  +} {65 97}
          467  +do_test like-2.66.1 {
          468  +  db eval "SELECT x FROM t1 WHERE y LIKE 'B%'"
          469  +} {66 98}
          470  +do_test like-2.66.2 {
          471  +  db eval "SELECT x FROM t2 WHERE y LIKE 'B%'"
          472  +} {66 98}
          473  +do_test like-2.66.3 {
          474  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcB%'"
          475  +} {66 98}
          476  +do_test like-2.67.1 {
          477  +  db eval "SELECT x FROM t1 WHERE y LIKE 'C%'"
          478  +} {67 99}
          479  +do_test like-2.67.2 {
          480  +  db eval "SELECT x FROM t2 WHERE y LIKE 'C%'"
          481  +} {67 99}
          482  +do_test like-2.67.3 {
          483  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcC%'"
          484  +} {67 99}
          485  +do_test like-2.68.1 {
          486  +  db eval "SELECT x FROM t1 WHERE y LIKE 'D%'"
          487  +} {68 100}
          488  +do_test like-2.68.2 {
          489  +  db eval "SELECT x FROM t2 WHERE y LIKE 'D%'"
          490  +} {68 100}
          491  +do_test like-2.68.3 {
          492  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcD%'"
          493  +} {68 100}
          494  +do_test like-2.69.1 {
          495  +  db eval "SELECT x FROM t1 WHERE y LIKE 'E%'"
          496  +} {69 101}
          497  +do_test like-2.69.2 {
          498  +  db eval "SELECT x FROM t2 WHERE y LIKE 'E%'"
          499  +} {69 101}
          500  +do_test like-2.69.3 {
          501  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcE%'"
          502  +} {69 101}
          503  +do_test like-2.70.1 {
          504  +  db eval "SELECT x FROM t1 WHERE y LIKE 'F%'"
          505  +} {70 102}
          506  +do_test like-2.70.2 {
          507  +  db eval "SELECT x FROM t2 WHERE y LIKE 'F%'"
          508  +} {70 102}
          509  +do_test like-2.70.3 {
          510  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcF%'"
          511  +} {70 102}
          512  +do_test like-2.71.1 {
          513  +  db eval "SELECT x FROM t1 WHERE y LIKE 'G%'"
          514  +} {71 103}
          515  +do_test like-2.71.2 {
          516  +  db eval "SELECT x FROM t2 WHERE y LIKE 'G%'"
          517  +} {71 103}
          518  +do_test like-2.71.3 {
          519  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcG%'"
          520  +} {71 103}
          521  +do_test like-2.72.1 {
          522  +  db eval "SELECT x FROM t1 WHERE y LIKE 'H%'"
          523  +} {72 104}
          524  +do_test like-2.72.2 {
          525  +  db eval "SELECT x FROM t2 WHERE y LIKE 'H%'"
          526  +} {72 104}
          527  +do_test like-2.72.3 {
          528  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcH%'"
          529  +} {72 104}
          530  +do_test like-2.73.1 {
          531  +  db eval "SELECT x FROM t1 WHERE y LIKE 'I%'"
          532  +} {73 105}
          533  +do_test like-2.73.2 {
          534  +  db eval "SELECT x FROM t2 WHERE y LIKE 'I%'"
          535  +} {73 105}
          536  +do_test like-2.73.3 {
          537  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcI%'"
          538  +} {73 105}
          539  +do_test like-2.74.1 {
          540  +  db eval "SELECT x FROM t1 WHERE y LIKE 'J%'"
          541  +} {74 106}
          542  +do_test like-2.74.2 {
          543  +  db eval "SELECT x FROM t2 WHERE y LIKE 'J%'"
          544  +} {74 106}
          545  +do_test like-2.74.3 {
          546  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcJ%'"
          547  +} {74 106}
          548  +do_test like-2.75.1 {
          549  +  db eval "SELECT x FROM t1 WHERE y LIKE 'K%'"
          550  +} {75 107}
          551  +do_test like-2.75.2 {
          552  +  db eval "SELECT x FROM t2 WHERE y LIKE 'K%'"
          553  +} {75 107}
          554  +do_test like-2.75.3 {
          555  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcK%'"
          556  +} {75 107}
          557  +do_test like-2.76.1 {
          558  +  db eval "SELECT x FROM t1 WHERE y LIKE 'L%'"
          559  +} {76 108}
          560  +do_test like-2.76.2 {
          561  +  db eval "SELECT x FROM t2 WHERE y LIKE 'L%'"
          562  +} {76 108}
          563  +do_test like-2.76.3 {
          564  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcL%'"
          565  +} {76 108}
          566  +do_test like-2.77.1 {
          567  +  db eval "SELECT x FROM t1 WHERE y LIKE 'M%'"
          568  +} {77 109}
          569  +do_test like-2.77.2 {
          570  +  db eval "SELECT x FROM t2 WHERE y LIKE 'M%'"
          571  +} {77 109}
          572  +do_test like-2.77.3 {
          573  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcM%'"
          574  +} {77 109}
          575  +do_test like-2.78.1 {
          576  +  db eval "SELECT x FROM t1 WHERE y LIKE 'N%'"
          577  +} {78 110}
          578  +do_test like-2.78.2 {
          579  +  db eval "SELECT x FROM t2 WHERE y LIKE 'N%'"
          580  +} {78 110}
          581  +do_test like-2.78.3 {
          582  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcN%'"
          583  +} {78 110}
          584  +do_test like-2.79.1 {
          585  +  db eval "SELECT x FROM t1 WHERE y LIKE 'O%'"
          586  +} {79 111}
          587  +do_test like-2.79.2 {
          588  +  db eval "SELECT x FROM t2 WHERE y LIKE 'O%'"
          589  +} {79 111}
          590  +do_test like-2.79.3 {
          591  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcO%'"
          592  +} {79 111}
          593  +do_test like-2.80.1 {
          594  +  db eval "SELECT x FROM t1 WHERE y LIKE 'P%'"
          595  +} {80 112}
          596  +do_test like-2.80.2 {
          597  +  db eval "SELECT x FROM t2 WHERE y LIKE 'P%'"
          598  +} {80 112}
          599  +do_test like-2.80.3 {
          600  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcP%'"
          601  +} {80 112}
          602  +do_test like-2.81.1 {
          603  +  db eval "SELECT x FROM t1 WHERE y LIKE 'Q%'"
          604  +} {81 113}
          605  +do_test like-2.81.2 {
          606  +  db eval "SELECT x FROM t2 WHERE y LIKE 'Q%'"
          607  +} {81 113}
          608  +do_test like-2.81.3 {
          609  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcQ%'"
          610  +} {81 113}
          611  +do_test like-2.82.1 {
          612  +  db eval "SELECT x FROM t1 WHERE y LIKE 'R%'"
          613  +} {82 114}
          614  +do_test like-2.82.2 {
          615  +  db eval "SELECT x FROM t2 WHERE y LIKE 'R%'"
          616  +} {82 114}
          617  +do_test like-2.82.3 {
          618  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcR%'"
          619  +} {82 114}
          620  +do_test like-2.83.1 {
          621  +  db eval "SELECT x FROM t1 WHERE y LIKE 'S%'"
          622  +} {83 115}
          623  +do_test like-2.83.2 {
          624  +  db eval "SELECT x FROM t2 WHERE y LIKE 'S%'"
          625  +} {83 115}
          626  +do_test like-2.83.3 {
          627  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcS%'"
          628  +} {83 115}
          629  +do_test like-2.84.1 {
          630  +  db eval "SELECT x FROM t1 WHERE y LIKE 'T%'"
          631  +} {84 116}
          632  +do_test like-2.84.2 {
          633  +  db eval "SELECT x FROM t2 WHERE y LIKE 'T%'"
          634  +} {84 116}
          635  +do_test like-2.84.3 {
          636  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcT%'"
          637  +} {84 116}
          638  +do_test like-2.85.1 {
          639  +  db eval "SELECT x FROM t1 WHERE y LIKE 'U%'"
          640  +} {85 117}
          641  +do_test like-2.85.2 {
          642  +  db eval "SELECT x FROM t2 WHERE y LIKE 'U%'"
          643  +} {85 117}
          644  +do_test like-2.85.3 {
          645  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcU%'"
          646  +} {85 117}
          647  +do_test like-2.86.1 {
          648  +  db eval "SELECT x FROM t1 WHERE y LIKE 'V%'"
          649  +} {86 118}
          650  +do_test like-2.86.2 {
          651  +  db eval "SELECT x FROM t2 WHERE y LIKE 'V%'"
          652  +} {86 118}
          653  +do_test like-2.86.3 {
          654  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcV%'"
          655  +} {86 118}
          656  +do_test like-2.87.1 {
          657  +  db eval "SELECT x FROM t1 WHERE y LIKE 'W%'"
          658  +} {87 119}
          659  +do_test like-2.87.2 {
          660  +  db eval "SELECT x FROM t2 WHERE y LIKE 'W%'"
          661  +} {87 119}
          662  +do_test like-2.87.3 {
          663  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcW%'"
          664  +} {87 119}
          665  +do_test like-2.88.1 {
          666  +  db eval "SELECT x FROM t1 WHERE y LIKE 'X%'"
          667  +} {88 120}
          668  +do_test like-2.88.2 {
          669  +  db eval "SELECT x FROM t2 WHERE y LIKE 'X%'"
          670  +} {88 120}
          671  +do_test like-2.88.3 {
          672  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcX%'"
          673  +} {88 120}
          674  +do_test like-2.89.1 {
          675  +  db eval "SELECT x FROM t1 WHERE y LIKE 'Y%'"
          676  +} {89 121}
          677  +do_test like-2.89.2 {
          678  +  db eval "SELECT x FROM t2 WHERE y LIKE 'Y%'"
          679  +} {89 121}
          680  +do_test like-2.89.3 {
          681  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcY%'"
          682  +} {89 121}
          683  +do_test like-2.90.1 {
          684  +  db eval "SELECT x FROM t1 WHERE y LIKE 'Z%'"
          685  +} {90 122}
          686  +do_test like-2.90.2 {
          687  +  db eval "SELECT x FROM t2 WHERE y LIKE 'Z%'"
          688  +} {90 122}
          689  +do_test like-2.90.3 {
          690  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcZ%'"
          691  +} {90 122}
          692  +do_test like-2.91.1 {
          693  +  db eval "SELECT x FROM t1 WHERE y LIKE '\[%'"
          694  +} {91}
          695  +do_test like-2.91.2 {
          696  +  db eval "SELECT x FROM t2 WHERE y LIKE '\[%'"
          697  +} {91}
          698  +do_test like-2.91.3 {
          699  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abc\[%'"
          700  +} {91}
          701  +do_test like-2.92.1 {
          702  +  db eval "SELECT x FROM t1 WHERE y LIKE '\\%'"
          703  +} {92}
          704  +do_test like-2.92.2 {
          705  +  db eval "SELECT x FROM t2 WHERE y LIKE '\\%'"
          706  +} {92}
          707  +do_test like-2.92.3 {
          708  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abc\\%'"
          709  +} {92}
          710  +do_test like-2.93.1 {
          711  +  db eval "SELECT x FROM t1 WHERE y LIKE '\]%'"
          712  +} {93}
          713  +do_test like-2.93.2 {
          714  +  db eval "SELECT x FROM t2 WHERE y LIKE '\]%'"
          715  +} {93}
          716  +do_test like-2.93.3 {
          717  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abc\]%'"
          718  +} {93}
          719  +do_test like-2.94.1 {
          720  +  db eval "SELECT x FROM t1 WHERE y LIKE '^%'"
          721  +} {94}
          722  +do_test like-2.94.2 {
          723  +  db eval "SELECT x FROM t2 WHERE y LIKE '^%'"
          724  +} {94}
          725  +do_test like-2.94.3 {
          726  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abc^%'"
          727  +} {94}
          728  +do_test like-2.96.1 {
          729  +  db eval "SELECT x FROM t1 WHERE y LIKE '`%'"
          730  +} {96}
          731  +do_test like-2.96.2 {
          732  +  db eval "SELECT x FROM t2 WHERE y LIKE '`%'"
          733  +} {96}
          734  +do_test like-2.96.3 {
          735  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abc`%'"
          736  +} {96}
          737  +do_test like-2.97.1 {
          738  +  db eval "SELECT x FROM t1 WHERE y LIKE 'a%'"
          739  +} {65 97}
          740  +do_test like-2.97.2 {
          741  +  db eval "SELECT x FROM t2 WHERE y LIKE 'a%'"
          742  +} {65 97}
          743  +do_test like-2.97.3 {
          744  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abca%'"
          745  +} {65 97}
          746  +do_test like-2.98.1 {
          747  +  db eval "SELECT x FROM t1 WHERE y LIKE 'b%'"
          748  +} {66 98}
          749  +do_test like-2.98.2 {
          750  +  db eval "SELECT x FROM t2 WHERE y LIKE 'b%'"
          751  +} {66 98}
          752  +do_test like-2.98.3 {
          753  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcb%'"
          754  +} {66 98}
          755  +do_test like-2.99.1 {
          756  +  db eval "SELECT x FROM t1 WHERE y LIKE 'c%'"
          757  +} {67 99}
          758  +do_test like-2.99.2 {
          759  +  db eval "SELECT x FROM t2 WHERE y LIKE 'c%'"
          760  +} {67 99}
          761  +do_test like-2.99.3 {
          762  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcc%'"
          763  +} {67 99}
          764  +do_test like-2.100.1 {
          765  +  db eval "SELECT x FROM t1 WHERE y LIKE 'd%'"
          766  +} {68 100}
          767  +do_test like-2.100.2 {
          768  +  db eval "SELECT x FROM t2 WHERE y LIKE 'd%'"
          769  +} {68 100}
          770  +do_test like-2.100.3 {
          771  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcd%'"
          772  +} {68 100}
          773  +do_test like-2.101.1 {
          774  +  db eval "SELECT x FROM t1 WHERE y LIKE 'e%'"
          775  +} {69 101}
          776  +do_test like-2.101.2 {
          777  +  db eval "SELECT x FROM t2 WHERE y LIKE 'e%'"
          778  +} {69 101}
          779  +do_test like-2.101.3 {
          780  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abce%'"
          781  +} {69 101}
          782  +do_test like-2.102.1 {
          783  +  db eval "SELECT x FROM t1 WHERE y LIKE 'f%'"
          784  +} {70 102}
          785  +do_test like-2.102.2 {
          786  +  db eval "SELECT x FROM t2 WHERE y LIKE 'f%'"
          787  +} {70 102}
          788  +do_test like-2.102.3 {
          789  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcf%'"
          790  +} {70 102}
          791  +do_test like-2.103.1 {
          792  +  db eval "SELECT x FROM t1 WHERE y LIKE 'g%'"
          793  +} {71 103}
          794  +do_test like-2.103.2 {
          795  +  db eval "SELECT x FROM t2 WHERE y LIKE 'g%'"
          796  +} {71 103}
          797  +do_test like-2.103.3 {
          798  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcg%'"
          799  +} {71 103}
          800  +do_test like-2.104.1 {
          801  +  db eval "SELECT x FROM t1 WHERE y LIKE 'h%'"
          802  +} {72 104}
          803  +do_test like-2.104.2 {
          804  +  db eval "SELECT x FROM t2 WHERE y LIKE 'h%'"
          805  +} {72 104}
          806  +do_test like-2.104.3 {
          807  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abch%'"
          808  +} {72 104}
          809  +do_test like-2.105.1 {
          810  +  db eval "SELECT x FROM t1 WHERE y LIKE 'i%'"
          811  +} {73 105}
          812  +do_test like-2.105.2 {
          813  +  db eval "SELECT x FROM t2 WHERE y LIKE 'i%'"
          814  +} {73 105}
          815  +do_test like-2.105.3 {
          816  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abci%'"
          817  +} {73 105}
          818  +do_test like-2.106.1 {
          819  +  db eval "SELECT x FROM t1 WHERE y LIKE 'j%'"
          820  +} {74 106}
          821  +do_test like-2.106.2 {
          822  +  db eval "SELECT x FROM t2 WHERE y LIKE 'j%'"
          823  +} {74 106}
          824  +do_test like-2.106.3 {
          825  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcj%'"
          826  +} {74 106}
          827  +do_test like-2.107.1 {
          828  +  db eval "SELECT x FROM t1 WHERE y LIKE 'k%'"
          829  +} {75 107}
          830  +do_test like-2.107.2 {
          831  +  db eval "SELECT x FROM t2 WHERE y LIKE 'k%'"
          832  +} {75 107}
          833  +do_test like-2.107.3 {
          834  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abck%'"
          835  +} {75 107}
          836  +do_test like-2.108.1 {
          837  +  db eval "SELECT x FROM t1 WHERE y LIKE 'l%'"
          838  +} {76 108}
          839  +do_test like-2.108.2 {
          840  +  db eval "SELECT x FROM t2 WHERE y LIKE 'l%'"
          841  +} {76 108}
          842  +do_test like-2.108.3 {
          843  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcl%'"
          844  +} {76 108}
          845  +do_test like-2.109.1 {
          846  +  db eval "SELECT x FROM t1 WHERE y LIKE 'm%'"
          847  +} {77 109}
          848  +do_test like-2.109.2 {
          849  +  db eval "SELECT x FROM t2 WHERE y LIKE 'm%'"
          850  +} {77 109}
          851  +do_test like-2.109.3 {
          852  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcm%'"
          853  +} {77 109}
          854  +do_test like-2.110.1 {
          855  +  db eval "SELECT x FROM t1 WHERE y LIKE 'n%'"
          856  +} {78 110}
          857  +do_test like-2.110.2 {
          858  +  db eval "SELECT x FROM t2 WHERE y LIKE 'n%'"
          859  +} {78 110}
          860  +do_test like-2.110.3 {
          861  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcn%'"
          862  +} {78 110}
          863  +do_test like-2.111.1 {
          864  +  db eval "SELECT x FROM t1 WHERE y LIKE 'o%'"
          865  +} {79 111}
          866  +do_test like-2.111.2 {
          867  +  db eval "SELECT x FROM t2 WHERE y LIKE 'o%'"
          868  +} {79 111}
          869  +do_test like-2.111.3 {
          870  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abco%'"
          871  +} {79 111}
          872  +do_test like-2.112.1 {
          873  +  db eval "SELECT x FROM t1 WHERE y LIKE 'p%'"
          874  +} {80 112}
          875  +do_test like-2.112.2 {
          876  +  db eval "SELECT x FROM t2 WHERE y LIKE 'p%'"
          877  +} {80 112}
          878  +do_test like-2.112.3 {
          879  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcp%'"
          880  +} {80 112}
          881  +do_test like-2.113.1 {
          882  +  db eval "SELECT x FROM t1 WHERE y LIKE 'q%'"
          883  +} {81 113}
          884  +do_test like-2.113.2 {
          885  +  db eval "SELECT x FROM t2 WHERE y LIKE 'q%'"
          886  +} {81 113}
          887  +do_test like-2.113.3 {
          888  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcq%'"
          889  +} {81 113}
          890  +do_test like-2.114.1 {
          891  +  db eval "SELECT x FROM t1 WHERE y LIKE 'r%'"
          892  +} {82 114}
          893  +do_test like-2.114.2 {
          894  +  db eval "SELECT x FROM t2 WHERE y LIKE 'r%'"
          895  +} {82 114}
          896  +do_test like-2.114.3 {
          897  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcr%'"
          898  +} {82 114}
          899  +do_test like-2.115.1 {
          900  +  db eval "SELECT x FROM t1 WHERE y LIKE 's%'"
          901  +} {83 115}
          902  +do_test like-2.115.2 {
          903  +  db eval "SELECT x FROM t2 WHERE y LIKE 's%'"
          904  +} {83 115}
          905  +do_test like-2.115.3 {
          906  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcs%'"
          907  +} {83 115}
          908  +do_test like-2.116.1 {
          909  +  db eval "SELECT x FROM t1 WHERE y LIKE 't%'"
          910  +} {84 116}
          911  +do_test like-2.116.2 {
          912  +  db eval "SELECT x FROM t2 WHERE y LIKE 't%'"
          913  +} {84 116}
          914  +do_test like-2.116.3 {
          915  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abct%'"
          916  +} {84 116}
          917  +do_test like-2.117.1 {
          918  +  db eval "SELECT x FROM t1 WHERE y LIKE 'u%'"
          919  +} {85 117}
          920  +do_test like-2.117.2 {
          921  +  db eval "SELECT x FROM t2 WHERE y LIKE 'u%'"
          922  +} {85 117}
          923  +do_test like-2.117.3 {
          924  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcu%'"
          925  +} {85 117}
          926  +do_test like-2.118.1 {
          927  +  db eval "SELECT x FROM t1 WHERE y LIKE 'v%'"
          928  +} {86 118}
          929  +do_test like-2.118.2 {
          930  +  db eval "SELECT x FROM t2 WHERE y LIKE 'v%'"
          931  +} {86 118}
          932  +do_test like-2.118.3 {
          933  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcv%'"
          934  +} {86 118}
          935  +do_test like-2.119.1 {
          936  +  db eval "SELECT x FROM t1 WHERE y LIKE 'w%'"
          937  +} {87 119}
          938  +do_test like-2.119.2 {
          939  +  db eval "SELECT x FROM t2 WHERE y LIKE 'w%'"
          940  +} {87 119}
          941  +do_test like-2.119.3 {
          942  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcw%'"
          943  +} {87 119}
          944  +do_test like-2.120.1 {
          945  +  db eval "SELECT x FROM t1 WHERE y LIKE 'x%'"
          946  +} {88 120}
          947  +do_test like-2.120.2 {
          948  +  db eval "SELECT x FROM t2 WHERE y LIKE 'x%'"
          949  +} {88 120}
          950  +do_test like-2.120.3 {
          951  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcx%'"
          952  +} {88 120}
          953  +do_test like-2.121.1 {
          954  +  db eval "SELECT x FROM t1 WHERE y LIKE 'y%'"
          955  +} {89 121}
          956  +do_test like-2.121.2 {
          957  +  db eval "SELECT x FROM t2 WHERE y LIKE 'y%'"
          958  +} {89 121}
          959  +do_test like-2.121.3 {
          960  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcy%'"
          961  +} {89 121}
          962  +do_test like-2.122.1 {
          963  +  db eval "SELECT x FROM t1 WHERE y LIKE 'z%'"
          964  +} {90 122}
          965  +do_test like-2.122.2 {
          966  +  db eval "SELECT x FROM t2 WHERE y LIKE 'z%'"
          967  +} {90 122}
          968  +do_test like-2.122.3 {
          969  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abcz%'"
          970  +} {90 122}
          971  +do_test like-2.123.1 {
          972  +  db eval "SELECT x FROM t1 WHERE y LIKE '\173%'"
          973  +} {123}
          974  +do_test like-2.123.2 {
          975  +  db eval "SELECT x FROM t2 WHERE y LIKE '\173%'"
          976  +} {123}
          977  +do_test like-2.123.3 {
          978  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abc\173%'"
          979  +} {123}
          980  +do_test like-2.124.1 {
          981  +  db eval "SELECT x FROM t1 WHERE y LIKE '|%'"
          982  +} {124}
          983  +do_test like-2.124.2 {
          984  +  db eval "SELECT x FROM t2 WHERE y LIKE '|%'"
          985  +} {124}
          986  +do_test like-2.124.3 {
          987  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abc|%'"
          988  +} {124}
          989  +do_test like-2.125.1 {
          990  +  db eval "SELECT x FROM t1 WHERE y LIKE '\175%'"
          991  +} {125}
          992  +do_test like-2.125.2 {
          993  +  db eval "SELECT x FROM t2 WHERE y LIKE '\175%'"
          994  +} {125}
          995  +do_test like-2.125.3 {
          996  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abc\175%'"
          997  +} {125}
          998  +do_test like-2.126.1 {
          999  +  db eval "SELECT x FROM t1 WHERE y LIKE '~%'"
         1000  +} {126}
         1001  +do_test like-2.126.2 {
         1002  +  db eval "SELECT x FROM t2 WHERE y LIKE '~%'"
         1003  +} {126}
         1004  +do_test like-2.126.3 {
         1005  +  db eval "SELECT x FROM t3 WHERE y LIKE 'abc~%'"
         1006  +} {126}
         1007  +
         1008  +
         1009  +finish_test