/ Hex Artifact Content
Login

Artifact 1dee70c9cc147330156d75e23de88f771e624998b03ae316cb64e1d249f129d8:


0000: 23 20 32 30 30 38 20 4f 63 74 6f 62 65 72 20 36  # 2008 October 6
0010: 0a 23 0a 23 20 54 68 65 20 61 75 74 68 6f 72 20  .#.# The author 
0020: 64 69 73 63 6c 61 69 6d 73 20 63 6f 70 79 72 69  disclaims copyri
0030: 67 68 74 20 74 6f 20 74 68 69 73 20 73 6f 75 72  ght to this sour
0040: 63 65 20 63 6f 64 65 2e 20 20 49 6e 20 70 6c 61  ce code.  In pla
0050: 63 65 20 6f 66 0a 23 20 61 20 6c 65 67 61 6c 20  ce of.# a legal 
0060: 6e 6f 74 69 63 65 2c 20 68 65 72 65 20 69 73 20  notice, here is 
0070: 61 20 62 6c 65 73 73 69 6e 67 3a 0a 23 0a 23 20  a blessing:.#.# 
0080: 20 20 20 4d 61 79 20 79 6f 75 20 64 6f 20 67 6f     May you do go
0090: 6f 64 20 61 6e 64 20 6e 6f 74 20 65 76 69 6c 2e  od and not evil.
00a0: 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20 66 69  .#    May you fi
00b0: 6e 64 20 66 6f 72 67 69 76 65 6e 65 73 73 20 66  nd forgiveness f
00c0: 6f 72 20 79 6f 75 72 73 65 6c 66 20 61 6e 64 20  or yourself and 
00d0: 66 6f 72 67 69 76 65 20 6f 74 68 65 72 73 2e 0a  forgive others..
00e0: 23 20 20 20 20 4d 61 79 20 79 6f 75 20 73 68 61  #    May you sha
00f0: 72 65 20 66 72 65 65 6c 79 2c 20 6e 65 76 65 72  re freely, never
0100: 20 74 61 6b 69 6e 67 20 6d 6f 72 65 20 74 68 61   taking more tha
0110: 6e 20 79 6f 75 20 67 69 76 65 2e 0a 23 0a 23 2a  n you give..#.#*
0120: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0130: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0140: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0150: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0160: 2a 2a 2a 2a 2a 2a 0a 23 20 54 68 69 73 20 66 69  ******.# This fi
0170: 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 73 20 72 65  le implements re
0180: 67 72 65 73 73 69 6f 6e 20 74 65 73 74 73 20 66  gression tests f
0190: 6f 72 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  or SQLite librar
01a0: 79 2e 20 20 54 68 65 0a 23 20 66 6f 63 75 73 20  y.  The.# focus 
01b0: 6f 66 20 74 68 69 73 20 66 69 6c 65 20 69 73 20  of this file is 
01c0: 74 65 73 74 69 6e 67 20 74 68 65 20 4c 49 4d 49  testing the LIMI
01d0: 54 20 2e 2e 2e 20 4f 46 46 53 45 54 20 2e 2e 2e  T ... OFFSET ...
01e0: 20 63 6c 61 75 73 65 0a 23 20 20 6f 66 20 55 50   clause.#  of UP
01f0: 44 41 54 45 20 61 6e 64 20 44 45 4c 45 54 45 20  DATE and DELETE 
0200: 73 74 61 74 65 6d 65 6e 74 73 2e 0a 23 0a 23 20  statements..#.# 
0210: 24 49 64 3a 20 77 68 65 72 65 6c 69 6d 69 74 2e  $Id: wherelimit.
0220: 74 65 73 74 2c 76 20 31 2e 32 20 32 30 30 38 2f  test,v 1.2 2008/
0230: 31 30 2f 31 30 20 31 38 3a 32 35 3a 34 36 20 73  10/10 18:25:46 s
0240: 68 61 6e 65 20 45 78 70 20 24 0a 0a 73 65 74 20  hane Exp $..set 
0250: 74 65 73 74 64 69 72 20 5b 66 69 6c 65 20 64 69  testdir [file di
0260: 72 6e 61 6d 65 20 24 61 72 67 76 30 5d 0a 73 6f  rname $argv0].so
0270: 75 72 63 65 20 24 74 65 73 74 64 69 72 2f 74 65  urce $testdir/te
0280: 73 74 65 72 2e 74 63 6c 0a 0a 70 72 6f 63 20 63  ster.tcl..proc c
0290: 72 65 61 74 65 5f 74 65 73 74 5f 64 61 74 61 20  reate_test_data 
02a0: 7b 73 69 7a 65 7d 20 7b 0a 20 20 23 20 42 75 69  {size} {.  # Bui
02b0: 6c 64 20 73 6f 6d 65 20 74 65 73 74 20 64 61 74  ld some test dat
02c0: 61 0a 20 20 23 0a 20 20 65 78 65 63 73 71 6c 20  a.  #.  execsql 
02d0: 7b 0a 20 20 20 20 44 52 4f 50 20 54 41 42 4c 45  {.    DROP TABLE
02e0: 20 49 46 20 45 58 49 53 54 53 20 74 31 3b 0a 20   IF EXISTS t1;. 
02f0: 20 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20     CREATE TABLE 
0300: 74 31 28 78 20 69 6e 74 2c 20 79 20 69 6e 74 29  t1(x int, y int)
0310: 3b 0a 20 20 20 20 42 45 47 49 4e 3b 0a 20 20 7d  ;.    BEGIN;.  }
0320: 0a 20 20 66 6f 72 20 7b 73 65 74 20 69 20 31 7d  .  for {set i 1}
0330: 20 7b 24 69 3c 3d 24 73 69 7a 65 7d 20 7b 69 6e   {$i<=$size} {in
0340: 63 72 20 69 7d 20 7b 0a 20 20 20 20 66 6f 72 20  cr i} {.    for 
0350: 7b 73 65 74 20 6a 20 31 7d 20 7b 24 6a 3c 3d 24  {set j 1} {$j<=$
0360: 73 69 7a 65 7d 20 7b 69 6e 63 72 20 6a 7d 20 7b  size} {incr j} {
0370: 0a 20 20 20 20 20 20 65 78 65 63 73 71 6c 20 22  .      execsql "
0380: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56  INSERT INTO t1 V
0390: 41 4c 55 45 53 28 5b 65 78 70 72 20 7b 24 69 7d  ALUES([expr {$i}
03a0: 5d 2c 5b 65 78 70 72 20 7b 24 6a 7d 5d 29 22 0a  ],[expr {$j}])".
03b0: 20 20 20 20 7d 0a 20 20 7d 0a 20 20 65 78 65 63      }.  }.  exec
03c0: 73 71 6c 20 7b 0a 20 20 20 20 43 4f 4d 4d 49 54  sql {.    COMMIT
03d0: 3b 0a 20 20 7d 0a 20 20 72 65 74 75 72 6e 20 7b  ;.  }.  return {
03e0: 7d 0a 7d 0a 0a 69 66 63 61 70 61 62 6c 65 20 7b  }.}..ifcapable {
03f0: 75 70 64 61 74 65 5f 64 65 6c 65 74 65 5f 6c 69  update_delete_li
0400: 6d 69 74 7d 20 7b 0a 0a 20 20 65 78 65 63 73 71  mit} {..  execsq
0410: 6c 20 7b 20 43 52 45 41 54 45 20 54 41 42 4c 45  l { CREATE TABLE
0420: 20 74 31 28 78 2c 20 79 29 20 7d 0a 0a 20 20 23   t1(x, y) }..  #
0430: 20 63 68 65 63 6b 20 73 79 6e 74 61 78 20 65 72   check syntax er
0440: 72 6f 72 20 73 75 70 70 6f 72 74 0a 20 20 64 6f  ror support.  do
0450: 5f 74 65 73 74 20 77 68 65 72 65 6c 69 6d 69 74  _test wherelimit
0460: 2d 30 2e 31 20 7b 0a 20 20 20 20 63 61 74 63 68  -0.1 {.    catch
0470: 73 71 6c 20 7b 44 45 4c 45 54 45 20 46 52 4f 4d  sql {DELETE FROM
0480: 20 74 31 20 4f 52 44 45 52 20 42 59 20 78 7d 0a   t1 ORDER BY x}.
0490: 20 20 7d 20 7b 31 20 7b 4f 52 44 45 52 20 42 59    } {1 {ORDER BY
04a0: 20 77 69 74 68 6f 75 74 20 4c 49 4d 49 54 20 6f   without LIMIT o
04b0: 6e 20 44 45 4c 45 54 45 7d 7d 0a 20 20 64 6f 5f  n DELETE}}.  do_
04c0: 74 65 73 74 20 77 68 65 72 65 6c 69 6d 69 74 2d  test wherelimit-
04d0: 30 2e 32 20 7b 0a 20 20 20 20 63 61 74 63 68 73  0.2 {.    catchs
04e0: 71 6c 20 7b 44 45 4c 45 54 45 20 46 52 4f 4d 20  ql {DELETE FROM 
04f0: 74 31 20 57 48 45 52 45 20 78 3d 31 20 4f 52 44  t1 WHERE x=1 ORD
0500: 45 52 20 42 59 20 78 7d 0a 20 20 7d 20 7b 31 20  ER BY x}.  } {1 
0510: 7b 4f 52 44 45 52 20 42 59 20 77 69 74 68 6f 75  {ORDER BY withou
0520: 74 20 4c 49 4d 49 54 20 6f 6e 20 44 45 4c 45 54  t LIMIT on DELET
0530: 45 7d 7d 0a 20 20 64 6f 5f 74 65 73 74 20 77 68  E}}.  do_test wh
0540: 65 72 65 6c 69 6d 69 74 2d 30 2e 33 20 7b 0a 20  erelimit-0.3 {. 
0550: 20 20 20 63 61 74 63 68 73 71 6c 20 7b 55 50 44     catchsql {UPD
0560: 41 54 45 20 74 31 20 53 45 54 20 79 3d 31 20 57  ATE t1 SET y=1 W
0570: 48 45 52 45 20 78 3d 31 20 4f 52 44 45 52 20 42  HERE x=1 ORDER B
0580: 59 20 78 7d 0a 20 20 7d 20 7b 31 20 7b 4f 52 44  Y x}.  } {1 {ORD
0590: 45 52 20 42 59 20 77 69 74 68 6f 75 74 20 4c 49  ER BY without LI
05a0: 4d 49 54 20 6f 6e 20 55 50 44 41 54 45 7d 7d 0a  MIT on UPDATE}}.
05b0: 0a 20 20 65 78 65 63 73 71 6c 20 7b 20 44 52 4f  .  execsql { DRO
05c0: 50 20 54 41 42 4c 45 20 74 31 20 7d 0a 0a 20 20  P TABLE t1 }..  
05d0: 23 20 6e 6f 20 41 53 20 6f 6e 20 74 61 62 6c 65  # no AS on table
05e0: 20 73 6f 75 72 63 65 73 0a 20 20 64 6f 5f 74 65   sources.  do_te
05f0: 73 74 20 77 68 65 72 65 6c 69 6d 69 74 2d 30 2e  st wherelimit-0.
0600: 34 20 7b 0a 20 20 20 20 63 61 74 63 68 73 71 6c  4 {.    catchsql
0610: 20 7b 44 45 4c 45 54 45 20 46 52 4f 4d 20 74 31   {DELETE FROM t1
0620: 20 41 53 20 61 20 57 48 45 52 45 20 78 3d 31 7d   AS a WHERE x=1}
0630: 0a 20 20 7d 20 7b 31 20 7b 6e 65 61 72 20 22 41  .  } {1 {near "A
0640: 53 22 3a 20 73 79 6e 74 61 78 20 65 72 72 6f 72  S": syntax error
0650: 7d 7d 0a 20 20 64 6f 5f 74 65 73 74 20 77 68 65  }}.  do_test whe
0660: 72 65 6c 69 6d 69 74 2d 30 2e 35 20 7b 0a 20 20  relimit-0.5 {.  
0670: 20 20 63 61 74 63 68 73 71 6c 20 7b 55 50 44 41    catchsql {UPDA
0680: 54 45 20 74 31 20 41 53 20 61 20 53 45 54 20 79  TE t1 AS a SET y
0690: 3d 31 20 57 48 45 52 45 20 78 3d 31 7d 0a 20 20  =1 WHERE x=1}.  
06a0: 7d 20 7b 31 20 7b 6e 65 61 72 20 22 41 53 22 3a  } {1 {near "AS":
06b0: 20 73 79 6e 74 61 78 20 65 72 72 6f 72 7d 7d 0a   syntax error}}.
06c0: 0a 20 20 23 20 4f 46 46 53 45 54 20 77 2f 6f 20  .  # OFFSET w/o 
06d0: 4c 49 4d 49 54 0a 20 20 64 6f 5f 74 65 73 74 20  LIMIT.  do_test 
06e0: 77 68 65 72 65 6c 69 6d 69 74 2d 30 2e 36 20 7b  wherelimit-0.6 {
06f0: 0a 20 20 20 20 63 61 74 63 68 73 71 6c 20 7b 44  .    catchsql {D
0700: 45 4c 45 54 45 20 46 52 4f 4d 20 74 31 20 57 48  ELETE FROM t1 WH
0710: 45 52 45 20 78 3d 31 20 4f 46 46 53 45 54 20 32  ERE x=1 OFFSET 2
0720: 7d 0a 20 20 7d 20 7b 31 20 7b 6e 65 61 72 20 22  }.  } {1 {near "
0730: 4f 46 46 53 45 54 22 3a 20 73 79 6e 74 61 78 20  OFFSET": syntax 
0740: 65 72 72 6f 72 7d 7d 0a 20 20 64 6f 5f 74 65 73  error}}.  do_tes
0750: 74 20 77 68 65 72 65 6c 69 6d 69 74 2d 30 2e 37  t wherelimit-0.7
0760: 20 7b 0a 20 20 20 20 63 61 74 63 68 73 71 6c 20   {.    catchsql 
0770: 7b 55 50 44 41 54 45 20 74 31 20 53 45 54 20 79  {UPDATE t1 SET y
0780: 3d 31 20 57 48 45 52 45 20 78 3d 31 20 4f 46 46  =1 WHERE x=1 OFF
0790: 53 45 54 20 32 7d 0a 20 20 7d 20 7b 31 20 7b 6e  SET 2}.  } {1 {n
07a0: 65 61 72 20 22 4f 46 46 53 45 54 22 3a 20 73 79  ear "OFFSET": sy
07b0: 6e 74 61 78 20 65 72 72 6f 72 7d 7d 0a 0a 0a 20  ntax error}}... 
07c0: 20 23 20 63 68 65 63 6b 20 64 65 6c 65 74 65 73   # check deletes
07d0: 20 77 2f 6f 20 77 68 65 72 65 20 63 6c 61 75 73   w/o where claus
07e0: 65 73 20 62 75 74 20 77 69 74 68 20 6c 69 6d 69  es but with limi
07f0: 74 2f 6f 66 66 73 65 74 73 0a 20 20 63 72 65 61  t/offsets.  crea
0800: 74 65 5f 74 65 73 74 5f 64 61 74 61 20 35 0a 20  te_test_data 5. 
0810: 20 64 6f 5f 74 65 73 74 20 77 68 65 72 65 6c 69   do_test whereli
0820: 6d 69 74 2d 31 2e 30 20 7b 0a 20 20 20 20 65 78  mit-1.0 {.    ex
0830: 65 63 73 71 6c 20 7b 53 45 4c 45 43 54 20 63 6f  ecsql {SELECT co
0840: 75 6e 74 28 2a 29 20 46 52 4f 4d 20 74 31 7d 0a  unt(*) FROM t1}.
0850: 20 20 7d 20 7b 32 35 7d 0a 20 20 64 6f 5f 74 65    } {25}.  do_te
0860: 73 74 20 77 68 65 72 65 6c 69 6d 69 74 2d 31 2e  st wherelimit-1.
0870: 31 20 7b 0a 20 20 20 20 65 78 65 63 73 71 6c 20  1 {.    execsql 
0880: 7b 44 45 4c 45 54 45 20 46 52 4f 4d 20 74 31 7d  {DELETE FROM t1}
0890: 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b 53 45  .    execsql {SE
08a0: 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29 20 46 52  LECT count(*) FR
08b0: 4f 4d 20 74 31 7d 0a 20 20 7d 20 7b 30 7d 0a 20  OM t1}.  } {0}. 
08c0: 20 63 72 65 61 74 65 5f 74 65 73 74 5f 64 61 74   create_test_dat
08d0: 61 20 35 0a 20 20 64 6f 5f 74 65 73 74 20 77 68  a 5.  do_test wh
08e0: 65 72 65 6c 69 6d 69 74 2d 31 2e 32 20 7b 0a 20  erelimit-1.2 {. 
08f0: 20 20 20 65 78 65 63 73 71 6c 20 7b 44 45 4c 45     execsql {DELE
0900: 54 45 20 46 52 4f 4d 20 74 31 20 4c 49 4d 49 54  TE FROM t1 LIMIT
0910: 20 35 7d 0a 20 20 20 20 65 78 65 63 73 71 6c 20   5}.    execsql 
0920: 7b 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29  {SELECT count(*)
0930: 20 46 52 4f 4d 20 74 31 7d 0a 20 20 7d 20 7b 32   FROM t1}.  } {2
0940: 30 7d 0a 20 20 64 6f 5f 74 65 73 74 20 77 68 65  0}.  do_test whe
0950: 72 65 6c 69 6d 69 74 2d 31 2e 33 20 7b 0a 20 20  relimit-1.3 {.  
0960: 20 20 23 20 6c 69 6d 69 74 20 35 0a 20 20 20 20    # limit 5.    
0970: 65 78 65 63 73 71 6c 20 7b 44 45 4c 45 54 45 20  execsql {DELETE 
0980: 46 52 4f 4d 20 74 31 20 4f 52 44 45 52 20 42 59  FROM t1 ORDER BY
0990: 20 78 20 4c 49 4d 49 54 20 35 7d 0a 20 20 20 20   x LIMIT 5}.    
09a0: 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43 54 20  execsql {SELECT 
09b0: 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 74 31  count(*) FROM t1
09c0: 7d 0a 20 20 7d 20 7b 31 35 7d 0a 20 20 64 6f 5f  }.  } {15}.  do_
09d0: 74 65 73 74 20 77 68 65 72 65 6c 69 6d 69 74 2d  test wherelimit-
09e0: 31 2e 34 20 7b 0a 20 20 20 20 23 20 6c 69 6d 69  1.4 {.    # limi
09f0: 74 20 35 2c 20 6f 66 66 73 65 74 20 32 0a 20 20  t 5, offset 2.  
0a00: 20 20 65 78 65 63 73 71 6c 20 7b 44 45 4c 45 54    execsql {DELET
0a10: 45 20 46 52 4f 4d 20 74 31 20 4f 52 44 45 52 20  E FROM t1 ORDER 
0a20: 42 59 20 78 20 4c 49 4d 49 54 20 35 20 4f 46 46  BY x LIMIT 5 OFF
0a30: 53 45 54 20 32 7d 0a 20 20 20 20 65 78 65 63 73  SET 2}.    execs
0a40: 71 6c 20 7b 53 45 4c 45 43 54 20 63 6f 75 6e 74  ql {SELECT count
0a50: 28 2a 29 20 46 52 4f 4d 20 74 31 7d 0a 20 20 7d  (*) FROM t1}.  }
0a60: 20 7b 31 30 7d 0a 20 20 64 6f 5f 74 65 73 74 20   {10}.  do_test 
0a70: 77 68 65 72 65 6c 69 6d 69 74 2d 31 2e 35 20 7b  wherelimit-1.5 {
0a80: 0a 20 20 20 20 23 20 6c 69 6d 69 74 20 35 2c 20  .    # limit 5, 
0a90: 6f 66 66 73 65 74 20 2d 32 0a 20 20 20 20 65 78  offset -2.    ex
0aa0: 65 63 73 71 6c 20 7b 44 45 4c 45 54 45 20 46 52  ecsql {DELETE FR
0ab0: 4f 4d 20 74 31 20 4f 52 44 45 52 20 42 59 20 78  OM t1 ORDER BY x
0ac0: 20 4c 49 4d 49 54 20 35 20 4f 46 46 53 45 54 20   LIMIT 5 OFFSET 
0ad0: 2d 32 7d 0a 20 20 20 20 65 78 65 63 73 71 6c 20  -2}.    execsql 
0ae0: 7b 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29  {SELECT count(*)
0af0: 20 46 52 4f 4d 20 74 31 7d 0a 20 20 7d 20 7b 35   FROM t1}.  } {5
0b00: 7d 0a 20 20 64 6f 5f 74 65 73 74 20 77 68 65 72  }.  do_test wher
0b10: 65 6c 69 6d 69 74 2d 31 2e 36 20 7b 0a 20 20 20  elimit-1.6 {.   
0b20: 20 23 20 6c 69 6d 69 74 20 2d 35 20 28 6e 6f 20   # limit -5 (no 
0b30: 6c 69 6d 69 74 29 2c 20 6f 66 66 73 65 74 20 32  limit), offset 2
0b40: 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b 44 45  .    execsql {DE
0b50: 4c 45 54 45 20 46 52 4f 4d 20 74 31 20 4f 52 44  LETE FROM t1 ORD
0b60: 45 52 20 42 59 20 78 20 4c 49 4d 49 54 20 32 2c  ER BY x LIMIT 2,
0b70: 20 2d 35 7d 0a 20 20 20 20 65 78 65 63 73 71 6c   -5}.    execsql
0b80: 20 7b 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a   {SELECT count(*
0b90: 29 20 46 52 4f 4d 20 74 31 7d 0a 20 20 7d 20 7b  ) FROM t1}.  } {
0ba0: 32 7d 0a 20 20 64 6f 5f 74 65 73 74 20 77 68 65  2}.  do_test whe
0bb0: 72 65 6c 69 6d 69 74 2d 31 2e 37 20 7b 0a 20 20  relimit-1.7 {.  
0bc0: 20 20 23 20 6c 69 6d 69 74 20 35 2c 20 6f 66 66    # limit 5, off
0bd0: 73 65 74 20 2d 32 20 28 6e 6f 20 6f 66 66 73 65  set -2 (no offse
0be0: 74 29 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b  t).    execsql {
0bf0: 44 45 4c 45 54 45 20 46 52 4f 4d 20 74 31 20 4f  DELETE FROM t1 O
0c00: 52 44 45 52 20 42 59 20 78 20 4c 49 4d 49 54 20  RDER BY x LIMIT 
0c10: 2d 32 2c 20 35 7d 0a 20 20 20 20 65 78 65 63 73  -2, 5}.    execs
0c20: 71 6c 20 7b 53 45 4c 45 43 54 20 63 6f 75 6e 74  ql {SELECT count
0c30: 28 2a 29 20 46 52 4f 4d 20 74 31 7d 0a 20 20 7d  (*) FROM t1}.  }
0c40: 20 7b 30 7d 0a 20 20 63 72 65 61 74 65 5f 74 65   {0}.  create_te
0c50: 73 74 5f 64 61 74 61 20 35 0a 20 20 64 6f 5f 74  st_data 5.  do_t
0c60: 65 73 74 20 77 68 65 72 65 6c 69 6d 69 74 2d 31  est wherelimit-1
0c70: 2e 38 20 7b 0a 20 20 20 20 23 20 6c 69 6d 69 74  .8 {.    # limit
0c80: 20 2d 35 20 28 6e 6f 20 6c 69 6d 69 74 29 2c 20   -5 (no limit), 
0c90: 6f 66 66 73 65 74 20 2d 32 20 28 6e 6f 20 6f 66  offset -2 (no of
0ca0: 66 73 65 74 29 0a 20 20 20 20 65 78 65 63 73 71  fset).    execsq
0cb0: 6c 20 7b 44 45 4c 45 54 45 20 46 52 4f 4d 20 74  l {DELETE FROM t
0cc0: 31 20 4f 52 44 45 52 20 42 59 20 78 20 4c 49 4d  1 ORDER BY x LIM
0cd0: 49 54 20 2d 32 2c 20 2d 35 7d 0a 20 20 20 20 65  IT -2, -5}.    e
0ce0: 78 65 63 73 71 6c 20 7b 53 45 4c 45 43 54 20 63  xecsql {SELECT c
0cf0: 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 74 31 7d  ount(*) FROM t1}
0d00: 0a 20 20 7d 20 7b 30 7d 0a 20 20 63 72 65 61 74  .  } {0}.  creat
0d10: 65 5f 74 65 73 74 5f 64 61 74 61 20 33 0a 20 20  e_test_data 3.  
0d20: 64 6f 5f 74 65 73 74 20 77 68 65 72 65 6c 69 6d  do_test wherelim
0d30: 69 74 2d 31 2e 39 20 7b 0a 20 20 20 20 23 20 6c  it-1.9 {.    # l
0d40: 69 6d 69 74 20 35 2c 20 6f 66 66 73 65 74 20 32  imit 5, offset 2
0d50: 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b 44 45  .    execsql {DE
0d60: 4c 45 54 45 20 46 52 4f 4d 20 74 31 20 4f 52 44  LETE FROM t1 ORD
0d70: 45 52 20 42 59 20 78 20 4c 49 4d 49 54 20 32 2c  ER BY x LIMIT 2,
0d80: 20 35 7d 0a 20 20 20 20 65 78 65 63 73 71 6c 20   5}.    execsql 
0d90: 7b 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29  {SELECT count(*)
0da0: 20 46 52 4f 4d 20 74 31 7d 0a 20 20 7d 20 7b 34   FROM t1}.  } {4
0db0: 7d 0a 20 20 64 6f 5f 74 65 73 74 20 77 68 65 72  }.  do_test wher
0dc0: 65 6c 69 6d 69 74 2d 31 2e 31 30 20 7b 0a 20 20  elimit-1.10 {.  
0dd0: 20 20 23 20 6c 69 6d 69 74 20 35 2c 20 6f 66 66    # limit 5, off
0de0: 73 65 74 20 35 0a 20 20 20 20 65 78 65 63 73 71  set 5.    execsq
0df0: 6c 20 7b 44 45 4c 45 54 45 20 46 52 4f 4d 20 74  l {DELETE FROM t
0e00: 31 20 4f 52 44 45 52 20 42 59 20 78 20 4c 49 4d  1 ORDER BY x LIM
0e10: 49 54 20 35 20 4f 46 46 53 45 54 20 35 7d 0a 20  IT 5 OFFSET 5}. 
0e20: 20 20 20 65 78 65 63 73 71 6c 20 7b 53 45 4c 45     execsql {SELE
0e30: 43 54 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d  CT count(*) FROM
0e40: 20 74 31 7d 0a 20 20 7d 20 7b 34 7d 0a 20 20 64   t1}.  } {4}.  d
0e50: 6f 5f 74 65 73 74 20 77 68 65 72 65 6c 69 6d 69  o_test wherelimi
0e60: 74 2d 31 2e 31 31 20 7b 0a 20 20 20 20 23 20 6c  t-1.11 {.    # l
0e70: 69 6d 69 74 20 35 30 2c 20 6f 66 66 73 65 74 20  imit 50, offset 
0e80: 33 30 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b  30.    execsql {
0e90: 44 45 4c 45 54 45 20 46 52 4f 4d 20 74 31 20 4f  DELETE FROM t1 O
0ea0: 52 44 45 52 20 42 59 20 78 20 4c 49 4d 49 54 20  RDER BY x LIMIT 
0eb0: 35 30 20 4f 46 46 53 45 54 20 33 30 7d 0a 20 20  50 OFFSET 30}.  
0ec0: 20 20 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43    execsql {SELEC
0ed0: 54 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20  T count(*) FROM 
0ee0: 74 31 7d 0a 20 20 7d 20 7b 34 7d 0a 20 20 64 6f  t1}.  } {4}.  do
0ef0: 5f 74 65 73 74 20 77 68 65 72 65 6c 69 6d 69 74  _test wherelimit
0f00: 2d 31 2e 31 32 20 7b 0a 20 20 20 20 23 20 6c 69  -1.12 {.    # li
0f10: 6d 69 74 20 35 30 2c 20 6f 66 66 73 65 74 20 33  mit 50, offset 3
0f20: 30 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b 44  0.    execsql {D
0f30: 45 4c 45 54 45 20 46 52 4f 4d 20 74 31 20 4f 52  ELETE FROM t1 OR
0f40: 44 45 52 20 42 59 20 78 20 4c 49 4d 49 54 20 33  DER BY x LIMIT 3
0f50: 30 2c 20 35 30 7d 0a 20 20 20 20 65 78 65 63 73  0, 50}.    execs
0f60: 71 6c 20 7b 53 45 4c 45 43 54 20 63 6f 75 6e 74  ql {SELECT count
0f70: 28 2a 29 20 46 52 4f 4d 20 74 31 7d 0a 20 20 7d  (*) FROM t1}.  }
0f80: 20 7b 34 7d 0a 20 20 64 6f 5f 74 65 73 74 20 77   {4}.  do_test w
0f90: 68 65 72 65 6c 69 6d 69 74 2d 31 2e 31 33 20 7b  herelimit-1.13 {
0fa0: 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b 44 45  .    execsql {DE
0fb0: 4c 45 54 45 20 46 52 4f 4d 20 74 31 20 4f 52 44  LETE FROM t1 ORD
0fc0: 45 52 20 42 59 20 78 20 4c 49 4d 49 54 20 35 30  ER BY x LIMIT 50
0fd0: 20 4f 46 46 53 45 54 20 35 30 7d 0a 20 20 20 20   OFFSET 50}.    
0fe0: 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43 54 20  execsql {SELECT 
0ff0: 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 74 31  count(*) FROM t1
1000: 7d 0a 20 20 7d 20 7b 34 7d 0a 0a 0a 20 20 63 72  }.  } {4}...  cr
1010: 65 61 74 65 5f 74 65 73 74 5f 64 61 74 61 20 36  eate_test_data 6
1020: 0a 20 20 64 6f 5f 74 65 73 74 20 77 68 65 72 65  .  do_test where
1030: 6c 69 6d 69 74 2d 32 2e 30 20 7b 0a 20 20 20 20  limit-2.0 {.    
1040: 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43 54 20  execsql {SELECT 
1050: 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 74 31  count(*) FROM t1
1060: 7d 0a 20 20 7d 20 7b 33 36 7d 0a 20 20 64 6f 5f  }.  } {36}.  do_
1070: 74 65 73 74 20 77 68 65 72 65 6c 69 6d 69 74 2d  test wherelimit-
1080: 32 2e 31 20 7b 0a 20 20 20 20 65 78 65 63 73 71  2.1 {.    execsq
1090: 6c 20 7b 44 45 4c 45 54 45 20 46 52 4f 4d 20 74  l {DELETE FROM t
10a0: 31 20 57 48 45 52 45 20 78 3d 31 7d 0a 20 20 20  1 WHERE x=1}.   
10b0: 20 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43 54   execsql {SELECT
10c0: 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 74   count(*) FROM t
10d0: 31 7d 0a 20 20 7d 20 7b 33 30 7d 0a 20 20 63 72  1}.  } {30}.  cr
10e0: 65 61 74 65 5f 74 65 73 74 5f 64 61 74 61 20 36  eate_test_data 6
10f0: 0a 20 20 64 6f 5f 74 65 73 74 20 77 68 65 72 65  .  do_test where
1100: 6c 69 6d 69 74 2d 32 2e 32 20 7b 0a 20 20 20 20  limit-2.2 {.    
1110: 65 78 65 63 73 71 6c 20 7b 44 45 4c 45 54 45 20  execsql {DELETE 
1120: 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 78 3d  FROM t1 WHERE x=
1130: 31 20 4c 49 4d 49 54 20 35 7d 0a 20 20 20 20 65  1 LIMIT 5}.    e
1140: 78 65 63 73 71 6c 20 7b 53 45 4c 45 43 54 20 63  xecsql {SELECT c
1150: 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 74 31 7d  ount(*) FROM t1}
1160: 0a 20 20 7d 20 7b 33 31 7d 0a 20 20 64 6f 5f 74  .  } {31}.  do_t
1170: 65 73 74 20 77 68 65 72 65 6c 69 6d 69 74 2d 32  est wherelimit-2
1180: 2e 33 20 7b 0a 20 20 20 20 23 20 6c 69 6d 69 74  .3 {.    # limit
1190: 20 35 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b   5.    execsql {
11a0: 44 45 4c 45 54 45 20 46 52 4f 4d 20 74 31 20 57  DELETE FROM t1 W
11b0: 48 45 52 45 20 78 3d 31 20 4f 52 44 45 52 20 42  HERE x=1 ORDER B
11c0: 59 20 78 20 4c 49 4d 49 54 20 35 7d 0a 20 20 20  Y x LIMIT 5}.   
11d0: 20 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43 54   execsql {SELECT
11e0: 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 74   count(*) FROM t
11f0: 31 7d 0a 20 20 7d 20 7b 33 30 7d 0a 20 20 64 6f  1}.  } {30}.  do
1200: 5f 74 65 73 74 20 77 68 65 72 65 6c 69 6d 69 74  _test wherelimit
1210: 2d 32 2e 34 20 7b 0a 20 20 20 20 23 20 6c 69 6d  -2.4 {.    # lim
1220: 69 74 20 35 2c 20 6f 66 66 73 65 74 20 32 0a 20  it 5, offset 2. 
1230: 20 20 20 65 78 65 63 73 71 6c 20 7b 44 45 4c 45     execsql {DELE
1240: 54 45 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45  TE FROM t1 WHERE
1250: 20 78 3d 32 20 4f 52 44 45 52 20 42 59 20 78 20   x=2 ORDER BY x 
1260: 4c 49 4d 49 54 20 35 20 4f 46 46 53 45 54 20 32  LIMIT 5 OFFSET 2
1270: 7d 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b 53  }.    execsql {S
1280: 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29 20 46  ELECT count(*) F
1290: 52 4f 4d 20 74 31 7d 0a 20 20 7d 20 7b 32 36 7d  ROM t1}.  } {26}
12a0: 0a 20 20 64 6f 5f 74 65 73 74 20 77 68 65 72 65  .  do_test where
12b0: 6c 69 6d 69 74 2d 32 2e 35 20 7b 0a 20 20 20 20  limit-2.5 {.    
12c0: 23 20 6c 69 6d 69 74 20 35 2c 20 6f 66 66 73 65  # limit 5, offse
12d0: 74 20 2d 32 0a 20 20 20 20 65 78 65 63 73 71 6c  t -2.    execsql
12e0: 20 7b 44 45 4c 45 54 45 20 46 52 4f 4d 20 74 31   {DELETE FROM t1
12f0: 20 57 48 45 52 45 20 78 3d 32 20 4f 52 44 45 52   WHERE x=2 ORDER
1300: 20 42 59 20 78 20 4c 49 4d 49 54 20 35 20 4f 46   BY x LIMIT 5 OF
1310: 46 53 45 54 20 2d 32 7d 0a 20 20 20 20 65 78 65  FSET -2}.    exe
1320: 63 73 71 6c 20 7b 53 45 4c 45 43 54 20 63 6f 75  csql {SELECT cou
1330: 6e 74 28 2a 29 20 46 52 4f 4d 20 74 31 7d 0a 20  nt(*) FROM t1}. 
1340: 20 7d 20 7b 32 34 7d 0a 20 20 64 6f 5f 74 65 73   } {24}.  do_tes
1350: 74 20 77 68 65 72 65 6c 69 6d 69 74 2d 32 2e 36  t wherelimit-2.6
1360: 20 7b 0a 20 20 20 20 23 20 6c 69 6d 69 74 20 2d   {.    # limit -
1370: 35 20 28 6e 6f 20 6c 69 6d 69 74 29 2c 20 6f 66  5 (no limit), of
1380: 66 73 65 74 20 32 0a 20 20 20 20 65 78 65 63 73  fset 2.    execs
1390: 71 6c 20 7b 44 45 4c 45 54 45 20 46 52 4f 4d 20  ql {DELETE FROM 
13a0: 74 31 20 57 48 45 52 45 20 78 3d 33 20 4f 52 44  t1 WHERE x=3 ORD
13b0: 45 52 20 42 59 20 78 20 4c 49 4d 49 54 20 32 2c  ER BY x LIMIT 2,
13c0: 20 2d 35 7d 0a 20 20 20 20 65 78 65 63 73 71 6c   -5}.    execsql
13d0: 20 7b 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a   {SELECT count(*
13e0: 29 20 46 52 4f 4d 20 74 31 7d 0a 20 20 7d 20 7b  ) FROM t1}.  } {
13f0: 32 30 7d 0a 20 20 64 6f 5f 74 65 73 74 20 77 68  20}.  do_test wh
1400: 65 72 65 6c 69 6d 69 74 2d 32 2e 37 20 7b 0a 20  erelimit-2.7 {. 
1410: 20 20 20 23 20 6c 69 6d 69 74 20 35 2c 20 6f 66     # limit 5, of
1420: 66 73 65 74 20 2d 32 20 28 6e 6f 20 6f 66 66 73  fset -2 (no offs
1430: 65 74 29 0a 20 20 20 20 65 78 65 63 73 71 6c 20  et).    execsql 
1440: 7b 44 45 4c 45 54 45 20 46 52 4f 4d 20 74 31 20  {DELETE FROM t1 
1450: 57 48 45 52 45 20 78 3d 33 20 4f 52 44 45 52 20  WHERE x=3 ORDER 
1460: 42 59 20 78 20 4c 49 4d 49 54 20 2d 32 2c 20 35  BY x LIMIT -2, 5
1470: 7d 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b 53  }.    execsql {S
1480: 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29 20 46  ELECT count(*) F
1490: 52 4f 4d 20 74 31 7d 0a 20 20 7d 20 7b 31 38 7d  ROM t1}.  } {18}
14a0: 0a 20 20 64 6f 5f 74 65 73 74 20 77 68 65 72 65  .  do_test where
14b0: 6c 69 6d 69 74 2d 32 2e 38 20 7b 0a 20 20 20 20  limit-2.8 {.    
14c0: 23 20 6c 69 6d 69 74 20 2d 35 20 28 6e 6f 20 6c  # limit -5 (no l
14d0: 69 6d 69 74 29 2c 20 6f 66 66 73 65 74 20 2d 32  imit), offset -2
14e0: 20 28 6e 6f 20 6f 66 66 73 65 74 29 0a 20 20 20   (no offset).   
14f0: 20 65 78 65 63 73 71 6c 20 7b 44 45 4c 45 54 45   execsql {DELETE
1500: 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 78   FROM t1 WHERE x
1510: 3d 34 20 4f 52 44 45 52 20 42 59 20 78 20 4c 49  =4 ORDER BY x LI
1520: 4d 49 54 20 2d 32 2c 20 2d 35 7d 0a 20 20 20 20  MIT -2, -5}.    
1530: 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43 54 20  execsql {SELECT 
1540: 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 74 31  count(*) FROM t1
1550: 7d 0a 20 20 7d 20 7b 31 32 7d 0a 20 20 63 72 65  }.  } {12}.  cre
1560: 61 74 65 5f 74 65 73 74 5f 64 61 74 61 20 36 0a  ate_test_data 6.
1570: 20 20 64 6f 5f 74 65 73 74 20 77 68 65 72 65 6c    do_test wherel
1580: 69 6d 69 74 2d 32 2e 39 20 7b 0a 20 20 20 20 23  imit-2.9 {.    #
1590: 20 6c 69 6d 69 74 20 35 2c 20 6f 66 66 73 65 74   limit 5, offset
15a0: 20 32 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b   2.    execsql {
15b0: 44 45 4c 45 54 45 20 46 52 4f 4d 20 74 31 20 57  DELETE FROM t1 W
15c0: 48 45 52 45 20 78 3d 35 20 4f 52 44 45 52 20 42  HERE x=5 ORDER B
15d0: 59 20 78 20 4c 49 4d 49 54 20 32 2c 20 35 7d 0a  Y x LIMIT 2, 5}.
15e0: 20 20 20 20 65 78 65 63 73 71 6c 20 7b 53 45 4c      execsql {SEL
15f0: 45 43 54 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f  ECT count(*) FRO
1600: 4d 20 74 31 7d 0a 20 20 7d 20 7b 33 32 7d 0a 20  M t1}.  } {32}. 
1610: 20 64 6f 5f 74 65 73 74 20 77 68 65 72 65 6c 69   do_test whereli
1620: 6d 69 74 2d 32 2e 31 30 20 7b 0a 20 20 20 20 23  mit-2.10 {.    #
1630: 20 6c 69 6d 69 74 20 35 2c 20 6f 66 66 73 65 74   limit 5, offset
1640: 20 35 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b   5.    execsql {
1650: 44 45 4c 45 54 45 20 46 52 4f 4d 20 74 31 20 57  DELETE FROM t1 W
1660: 48 45 52 45 20 78 3d 36 20 4f 52 44 45 52 20 42  HERE x=6 ORDER B
1670: 59 20 78 20 4c 49 4d 49 54 20 35 20 4f 46 46 53  Y x LIMIT 5 OFFS
1680: 45 54 20 35 7d 0a 20 20 20 20 65 78 65 63 73 71  ET 5}.    execsq
1690: 6c 20 7b 53 45 4c 45 43 54 20 63 6f 75 6e 74 28  l {SELECT count(
16a0: 2a 29 20 46 52 4f 4d 20 74 31 7d 0a 20 20 7d 20  *) FROM t1}.  } 
16b0: 7b 33 31 7d 0a 20 20 64 6f 5f 74 65 73 74 20 77  {31}.  do_test w
16c0: 68 65 72 65 6c 69 6d 69 74 2d 32 2e 31 31 20 7b  herelimit-2.11 {
16d0: 0a 20 20 20 20 23 20 6c 69 6d 69 74 20 35 30 2c  .    # limit 50,
16e0: 20 6f 66 66 73 65 74 20 33 30 0a 20 20 20 20 65   offset 30.    e
16f0: 78 65 63 73 71 6c 20 7b 44 45 4c 45 54 45 20 46  xecsql {DELETE F
1700: 52 4f 4d 20 74 31 20 57 48 45 52 45 20 78 3d 31  ROM t1 WHERE x=1
1710: 20 4f 52 44 45 52 20 42 59 20 78 20 4c 49 4d 49   ORDER BY x LIMI
1720: 54 20 35 30 20 4f 46 46 53 45 54 20 33 30 7d 0a  T 50 OFFSET 30}.
1730: 20 20 20 20 65 78 65 63 73 71 6c 20 7b 53 45 4c      execsql {SEL
1740: 45 43 54 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f  ECT count(*) FRO
1750: 4d 20 74 31 7d 0a 20 20 7d 20 7b 33 31 7d 0a 20  M t1}.  } {31}. 
1760: 20 64 6f 5f 74 65 73 74 20 77 68 65 72 65 6c 69   do_test whereli
1770: 6d 69 74 2d 32 2e 31 32 20 7b 0a 20 20 20 20 23  mit-2.12 {.    #
1780: 20 6c 69 6d 69 74 20 35 30 2c 20 6f 66 66 73 65   limit 50, offse
1790: 74 20 33 30 0a 20 20 20 20 65 78 65 63 73 71 6c  t 30.    execsql
17a0: 20 7b 44 45 4c 45 54 45 20 46 52 4f 4d 20 74 31   {DELETE FROM t1
17b0: 20 57 48 45 52 45 20 78 3d 32 20 4f 52 44 45 52   WHERE x=2 ORDER
17c0: 20 42 59 20 78 20 4c 49 4d 49 54 20 33 30 2c 20   BY x LIMIT 30, 
17d0: 35 30 7d 0a 20 20 20 20 65 78 65 63 73 71 6c 20  50}.    execsql 
17e0: 7b 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29  {SELECT count(*)
17f0: 20 46 52 4f 4d 20 74 31 7d 0a 20 20 7d 20 7b 33   FROM t1}.  } {3
1800: 31 7d 0a 20 20 64 6f 5f 74 65 73 74 20 77 68 65  1}.  do_test whe
1810: 72 65 6c 69 6d 69 74 2d 32 2e 31 33 20 7b 0a 20  relimit-2.13 {. 
1820: 20 20 20 65 78 65 63 73 71 6c 20 7b 44 45 4c 45     execsql {DELE
1830: 54 45 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45  TE FROM t1 WHERE
1840: 20 78 3d 33 20 4f 52 44 45 52 20 42 59 20 78 20   x=3 ORDER BY x 
1850: 4c 49 4d 49 54 20 35 30 20 4f 46 46 53 45 54 20  LIMIT 50 OFFSET 
1860: 35 30 7d 0a 20 20 20 20 65 78 65 63 73 71 6c 20  50}.    execsql 
1870: 7b 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29  {SELECT count(*)
1880: 20 46 52 4f 4d 20 74 31 7d 0a 20 20 7d 20 7b 33   FROM t1}.  } {3
1890: 31 7d 0a 0a 0a 20 20 63 72 65 61 74 65 5f 74 65  1}...  create_te
18a0: 73 74 5f 64 61 74 61 20 36 0a 20 20 64 6f 5f 74  st_data 6.  do_t
18b0: 65 73 74 20 77 68 65 72 65 6c 69 6d 69 74 2d 33  est wherelimit-3
18c0: 2e 30 20 7b 0a 20 20 20 20 65 78 65 63 73 71 6c  .0 {.    execsql
18d0: 20 7b 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a   {SELECT count(*
18e0: 29 20 46 52 4f 4d 20 74 31 7d 0a 20 20 7d 20 7b  ) FROM t1}.  } {
18f0: 33 36 7d 0a 20 20 64 6f 5f 74 65 73 74 20 77 68  36}.  do_test wh
1900: 65 72 65 6c 69 6d 69 74 2d 33 2e 31 20 7b 0a 20  erelimit-3.1 {. 
1910: 20 20 20 65 78 65 63 73 71 6c 20 7b 55 50 44 41     execsql {UPDA
1920: 54 45 20 74 31 20 53 45 54 20 79 3d 31 20 57 48  TE t1 SET y=1 WH
1930: 45 52 45 20 78 3d 31 7d 0a 20 20 20 20 65 78 65  ERE x=1}.    exe
1940: 63 73 71 6c 20 7b 53 45 4c 45 43 54 20 63 6f 75  csql {SELECT cou
1950: 6e 74 28 2a 29 20 46 52 4f 4d 20 74 31 20 57 48  nt(*) FROM t1 WH
1960: 45 52 45 20 79 3d 31 7d 0a 20 20 7d 20 7b 31 31  ERE y=1}.  } {11
1970: 7d 0a 20 20 63 72 65 61 74 65 5f 74 65 73 74 5f  }.  create_test_
1980: 64 61 74 61 20 36 0a 20 20 64 6f 5f 74 65 73 74  data 6.  do_test
1990: 20 77 68 65 72 65 6c 69 6d 69 74 2d 33 2e 32 20   wherelimit-3.2 
19a0: 7b 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b 55  {.    execsql {U
19b0: 50 44 41 54 45 20 74 31 20 53 45 54 20 79 3d 31  PDATE t1 SET y=1
19c0: 20 57 48 45 52 45 20 78 3d 31 20 4c 49 4d 49 54   WHERE x=1 LIMIT
19d0: 20 35 7d 0a 20 20 20 20 65 78 65 63 73 71 6c 20   5}.    execsql 
19e0: 7b 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29  {SELECT count(*)
19f0: 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 79   FROM t1 WHERE y
1a00: 3d 31 7d 0a 20 20 7d 20 7b 31 30 7d 0a 20 20 64  =1}.  } {10}.  d
1a10: 6f 5f 74 65 73 74 20 77 68 65 72 65 6c 69 6d 69  o_test wherelimi
1a20: 74 2d 33 2e 33 20 7b 0a 20 20 20 20 23 20 6c 69  t-3.3 {.    # li
1a30: 6d 69 74 20 35 0a 20 20 20 20 65 78 65 63 73 71  mit 5.    execsq
1a40: 6c 20 7b 55 50 44 41 54 45 20 74 31 20 53 45 54  l {UPDATE t1 SET
1a50: 20 79 3d 32 20 57 48 45 52 45 20 78 3d 32 20 4f   y=2 WHERE x=2 O
1a60: 52 44 45 52 20 42 59 20 78 20 4c 49 4d 49 54 20  RDER BY x LIMIT 
1a70: 35 7d 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b  5}.    execsql {
1a80: 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29 20  SELECT count(*) 
1a90: 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 79 3d  FROM t1 WHERE y=
1aa0: 32 7d 0a 20 20 7d 20 7b 39 7d 0a 20 20 63 72 65  2}.  } {9}.  cre
1ab0: 61 74 65 5f 74 65 73 74 5f 64 61 74 61 20 36 0a  ate_test_data 6.
1ac0: 20 20 64 6f 5f 74 65 73 74 20 77 68 65 72 65 6c    do_test wherel
1ad0: 69 6d 69 74 2d 33 2e 34 20 7b 0a 20 20 20 20 23  imit-3.4 {.    #
1ae0: 20 6c 69 6d 69 74 20 35 2c 20 6f 66 66 73 65 74   limit 5, offset
1af0: 20 32 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b   2.    execsql {
1b00: 55 50 44 41 54 45 20 74 31 20 53 45 54 20 79 3d  UPDATE t1 SET y=
1b10: 32 20 57 48 45 52 45 20 78 3d 32 20 4f 52 44 45  2 WHERE x=2 ORDE
1b20: 52 20 42 59 20 78 20 4c 49 4d 49 54 20 35 20 4f  R BY x LIMIT 5 O
1b30: 46 46 53 45 54 20 32 7d 0a 20 20 20 20 65 78 65  FFSET 2}.    exe
1b40: 63 73 71 6c 20 7b 53 45 4c 45 43 54 20 63 6f 75  csql {SELECT cou
1b50: 6e 74 28 2a 29 20 46 52 4f 4d 20 74 31 20 57 48  nt(*) FROM t1 WH
1b60: 45 52 45 20 79 3d 31 7d 0a 20 20 7d 20 7b 36 7d  ERE y=1}.  } {6}
1b70: 0a 20 20 64 6f 5f 74 65 73 74 20 77 68 65 72 65  .  do_test where
1b80: 6c 69 6d 69 74 2d 33 2e 35 20 7b 0a 20 20 20 20  limit-3.5 {.    
1b90: 23 20 6c 69 6d 69 74 20 35 2c 20 6f 66 66 73 65  # limit 5, offse
1ba0: 74 20 2d 32 0a 20 20 20 20 65 78 65 63 73 71 6c  t -2.    execsql
1bb0: 20 7b 55 50 44 41 54 45 20 74 31 20 53 45 54 20   {UPDATE t1 SET 
1bc0: 79 3d 32 20 57 48 45 52 45 20 78 3d 32 20 4f 52  y=2 WHERE x=2 OR
1bd0: 44 45 52 20 42 59 20 78 20 4c 49 4d 49 54 20 35  DER BY x LIMIT 5
1be0: 20 4f 46 46 53 45 54 20 2d 32 7d 0a 20 20 20 20   OFFSET -2}.    
1bf0: 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43 54 20  execsql {SELECT 
1c00: 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 74 31  count(*) FROM t1
1c10: 20 57 48 45 52 45 20 79 3d 31 7d 0a 20 20 7d 20   WHERE y=1}.  } 
1c20: 7b 35 7d 0a 20 20 64 6f 5f 74 65 73 74 20 77 68  {5}.  do_test wh
1c30: 65 72 65 6c 69 6d 69 74 2d 33 2e 36 20 7b 0a 20  erelimit-3.6 {. 
1c40: 20 20 20 23 20 6c 69 6d 69 74 20 2d 35 20 28 6e     # limit -5 (n
1c50: 6f 20 6c 69 6d 69 74 29 2c 20 6f 66 66 73 65 74  o limit), offset
1c60: 20 32 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b   2.    execsql {
1c70: 55 50 44 41 54 45 20 74 31 20 53 45 54 20 79 3d  UPDATE t1 SET y=
1c80: 33 20 57 48 45 52 45 20 78 3d 33 20 4f 52 44 45  3 WHERE x=3 ORDE
1c90: 52 20 42 59 20 78 20 4c 49 4d 49 54 20 32 2c 20  R BY x LIMIT 2, 
1ca0: 2d 35 7d 0a 20 20 20 20 65 78 65 63 73 71 6c 20  -5}.    execsql 
1cb0: 7b 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29  {SELECT count(*)
1cc0: 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 79   FROM t1 WHERE y
1cd0: 3d 33 7d 0a 20 20 7d 20 7b 38 7d 0a 20 20 64 6f  =3}.  } {8}.  do
1ce0: 5f 74 65 73 74 20 77 68 65 72 65 6c 69 6d 69 74  _test wherelimit
1cf0: 2d 33 2e 37 20 7b 0a 20 20 20 20 23 20 6c 69 6d  -3.7 {.    # lim
1d00: 69 74 20 35 2c 20 6f 66 66 73 65 74 20 2d 32 20  it 5, offset -2 
1d10: 28 6e 6f 20 6f 66 66 73 65 74 29 0a 20 20 20 20  (no offset).    
1d20: 65 78 65 63 73 71 6c 20 7b 55 50 44 41 54 45 20  execsql {UPDATE 
1d30: 74 31 20 53 45 54 20 79 3d 33 20 57 48 45 52 45  t1 SET y=3 WHERE
1d40: 20 78 3d 33 20 4f 52 44 45 52 20 42 59 20 78 20   x=3 ORDER BY x 
1d50: 4c 49 4d 49 54 20 2d 32 2c 20 35 7d 0a 20 20 20  LIMIT -2, 5}.   
1d60: 20 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43 54   execsql {SELECT
1d70: 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 74   count(*) FROM t
1d80: 31 20 57 48 45 52 45 20 79 3d 33 7d 0a 20 20 7d  1 WHERE y=3}.  }
1d90: 20 7b 31 30 7d 0a 0a 20 20 64 6f 5f 74 65 73 74   {10}..  do_test
1da0: 20 77 68 65 72 65 6c 69 6d 69 74 2d 33 2e 38 20   wherelimit-3.8 
1db0: 7b 0a 20 20 20 20 23 20 6c 69 6d 69 74 20 2d 35  {.    # limit -5
1dc0: 20 28 6e 6f 20 6c 69 6d 69 74 29 2c 20 6f 66 66   (no limit), off
1dd0: 73 65 74 20 2d 32 20 28 6e 6f 20 6f 66 66 73 65  set -2 (no offse
1de0: 74 29 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b  t).    execsql {
1df0: 55 50 44 41 54 45 20 74 31 20 53 45 54 20 79 3d  UPDATE t1 SET y=
1e00: 34 20 57 48 45 52 45 20 78 3d 34 20 4f 52 44 45  4 WHERE x=4 ORDE
1e10: 52 20 42 59 20 78 20 4c 49 4d 49 54 20 2d 32 2c  R BY x LIMIT -2,
1e20: 20 2d 35 7d 0a 20 20 20 20 65 78 65 63 73 71 6c   -5}.    execsql
1e30: 20 7b 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a   {SELECT count(*
1e40: 29 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20  ) FROM t1 WHERE 
1e50: 79 3d 34 7d 0a 20 20 7d 20 7b 39 7d 0a 20 20 63  y=4}.  } {9}.  c
1e60: 72 65 61 74 65 5f 74 65 73 74 5f 64 61 74 61 20  reate_test_data 
1e70: 36 0a 20 20 64 6f 5f 74 65 73 74 20 77 68 65 72  6.  do_test wher
1e80: 65 6c 69 6d 69 74 2d 33 2e 39 20 7b 0a 20 20 20  elimit-3.9 {.   
1e90: 20 23 20 6c 69 6d 69 74 20 35 2c 20 6f 66 66 73   # limit 5, offs
1ea0: 65 74 20 32 0a 20 20 20 20 65 78 65 63 73 71 6c  et 2.    execsql
1eb0: 20 7b 55 50 44 41 54 45 20 74 31 20 53 45 54 20   {UPDATE t1 SET 
1ec0: 79 3d 34 20 57 48 45 52 45 20 78 3d 35 20 4f 52  y=4 WHERE x=5 OR
1ed0: 44 45 52 20 42 59 20 78 20 4c 49 4d 49 54 20 32  DER BY x LIMIT 2
1ee0: 2c 20 35 7d 0a 20 20 20 20 65 78 65 63 73 71 6c  , 5}.    execsql
1ef0: 20 7b 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a   {SELECT count(*
1f00: 29 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20  ) FROM t1 WHERE 
1f10: 79 3d 34 7d 0a 20 20 7d 20 7b 39 7d 0a 20 20 64  y=4}.  } {9}.  d
1f20: 6f 5f 74 65 73 74 20 77 68 65 72 65 6c 69 6d 69  o_test wherelimi
1f30: 74 2d 33 2e 31 30 20 7b 0a 20 20 20 20 23 20 6c  t-3.10 {.    # l
1f40: 69 6d 69 74 20 35 2c 20 6f 66 66 73 65 74 20 35  imit 5, offset 5
1f50: 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b 55 50  .    execsql {UP
1f60: 44 41 54 45 20 74 31 20 53 45 54 20 79 3d 34 20  DATE t1 SET y=4 
1f70: 57 48 45 52 45 20 78 3d 36 20 4f 52 44 45 52 20  WHERE x=6 ORDER 
1f80: 42 59 20 78 20 4c 49 4d 49 54 20 35 20 4f 46 46  BY x LIMIT 5 OFF
1f90: 53 45 54 20 35 7d 0a 20 20 20 20 65 78 65 63 73  SET 5}.    execs
1fa0: 71 6c 20 7b 53 45 4c 45 43 54 20 63 6f 75 6e 74  ql {SELECT count
1fb0: 28 2a 29 20 46 52 4f 4d 20 74 31 20 57 48 45 52  (*) FROM t1 WHER
1fc0: 45 20 79 3d 31 7d 0a 20 20 7d 20 7b 36 7d 0a 20  E y=1}.  } {6}. 
1fd0: 20 64 6f 5f 74 65 73 74 20 77 68 65 72 65 6c 69   do_test whereli
1fe0: 6d 69 74 2d 33 2e 31 31 20 7b 0a 20 20 20 20 23  mit-3.11 {.    #
1ff0: 20 6c 69 6d 69 74 20 35 30 2c 20 6f 66 66 73 65   limit 50, offse
2000: 74 20 33 30 0a 20 20 20 20 65 78 65 63 73 71 6c  t 30.    execsql
2010: 20 7b 55 50 44 41 54 45 20 74 31 20 53 45 54 20   {UPDATE t1 SET 
2020: 79 3d 31 20 57 48 45 52 45 20 78 3d 31 20 4f 52  y=1 WHERE x=1 OR
2030: 44 45 52 20 42 59 20 78 20 4c 49 4d 49 54 20 35  DER BY x LIMIT 5
2040: 30 20 4f 46 46 53 45 54 20 33 30 7d 0a 20 20 20  0 OFFSET 30}.   
2050: 20 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43 54   execsql {SELECT
2060: 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 74   count(*) FROM t
2070: 31 20 57 48 45 52 45 20 79 3d 31 7d 0a 20 20 7d  1 WHERE y=1}.  }
2080: 20 7b 36 7d 0a 20 20 64 6f 5f 74 65 73 74 20 77   {6}.  do_test w
2090: 68 65 72 65 6c 69 6d 69 74 2d 33 2e 31 32 20 7b  herelimit-3.12 {
20a0: 0a 20 20 20 20 23 20 6c 69 6d 69 74 20 35 30 2c  .    # limit 50,
20b0: 20 6f 66 66 73 65 74 20 33 30 0a 20 20 20 20 65   offset 30.    e
20c0: 78 65 63 73 71 6c 20 7b 55 50 44 41 54 45 20 74  xecsql {UPDATE t
20d0: 31 20 53 45 54 20 79 3d 31 20 57 48 45 52 45 20  1 SET y=1 WHERE 
20e0: 78 3d 32 20 4f 52 44 45 52 20 42 59 20 78 20 4c  x=2 ORDER BY x L
20f0: 49 4d 49 54 20 33 30 2c 20 35 30 7d 0a 20 20 20  IMIT 30, 50}.   
2100: 20 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43 54   execsql {SELECT
2110: 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 74   count(*) FROM t
2120: 31 20 57 48 45 52 45 20 79 3d 31 7d 0a 20 20 7d  1 WHERE y=1}.  }
2130: 20 7b 36 7d 0a 20 20 64 6f 5f 74 65 73 74 20 77   {6}.  do_test w
2140: 68 65 72 65 6c 69 6d 69 74 2d 33 2e 31 33 20 7b  herelimit-3.13 {
2150: 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b 55 50  .    execsql {UP
2160: 44 41 54 45 20 74 31 20 53 45 54 20 79 3d 31 20  DATE t1 SET y=1 
2170: 57 48 45 52 45 20 78 3d 33 20 4f 52 44 45 52 20  WHERE x=3 ORDER 
2180: 42 59 20 78 20 4c 49 4d 49 54 20 35 30 20 4f 46  BY x LIMIT 50 OF
2190: 46 53 45 54 20 35 30 7d 0a 20 20 20 20 65 78 65  FSET 50}.    exe
21a0: 63 73 71 6c 20 7b 53 45 4c 45 43 54 20 63 6f 75  csql {SELECT cou
21b0: 6e 74 28 2a 29 20 46 52 4f 4d 20 74 31 20 57 48  nt(*) FROM t1 WH
21c0: 45 52 45 20 79 3d 31 7d 0a 20 20 7d 20 7b 36 7d  ERE y=1}.  } {6}
21d0: 0a 0a 20 20 23 20 43 61 6e 6e 6f 74 20 75 73 65  ..  # Cannot use
21e0: 20 61 20 4c 49 4d 49 54 20 66 6f 72 20 55 50 44   a LIMIT for UPD
21f0: 41 54 45 20 6f 72 20 44 45 4c 45 54 45 20 61 67  ATE or DELETE ag
2200: 61 69 6e 73 74 20 61 20 57 49 54 48 4f 55 54 20  ainst a WITHOUT 
2210: 52 4f 57 49 44 20 74 61 62 6c 65 0a 20 20 23 20  ROWID table.  # 
2220: 6f 72 20 61 20 56 49 45 57 2e 20 20 28 57 65 20  or a VIEW.  (We 
2230: 73 68 6f 75 6c 64 20 66 69 78 20 74 68 69 73 20  should fix this 
2240: 73 6f 6d 65 64 61 79 29 2e 0a 20 20 23 0a 20 20  someday)..  #.  
2250: 64 62 20 63 6c 6f 73 65 0a 20 20 73 71 6c 69 74  db close.  sqlit
2260: 65 33 20 64 62 20 3a 6d 65 6d 6f 72 79 3a 0a 20  e3 db :memory:. 
2270: 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74   do_execsql_test
2280: 20 77 68 65 72 65 6c 69 6d 69 74 2d 34 2e 31 20   wherelimit-4.1 
2290: 7b 0a 20 20 20 20 43 52 45 41 54 45 20 54 41 42  {.    CREATE TAB
22a0: 4c 45 20 74 31 28 61 20 69 6e 74 29 3b 0a 20 20  LE t1(a int);.  
22b0: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31    INSERT INTO t1
22c0: 20 56 41 4c 55 45 53 28 31 29 3b 0a 20 20 20 20   VALUES(1);.    
22d0: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56  INSERT INTO t1 V
22e0: 41 4c 55 45 53 28 32 29 3b 0a 20 20 20 20 49 4e  ALUES(2);.    IN
22f0: 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c  SERT INTO t1 VAL
2300: 55 45 53 28 33 29 3b 0a 20 20 20 20 43 52 45 41  UES(3);.    CREA
2310: 54 45 20 54 41 42 4c 45 20 74 32 28 61 20 69 6e  TE TABLE t2(a in
2320: 74 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49  t);.    INSERT I
2330: 4e 54 4f 20 74 32 20 53 45 4c 45 43 54 20 61 2b  NTO t2 SELECT a+
2340: 31 30 30 20 46 52 4f 4d 20 74 31 3b 0a 20 20 20  100 FROM t1;.   
2350: 20 43 52 45 41 54 45 20 56 49 45 57 20 74 76 28   CREATE VIEW tv(
2360: 72 2c 61 29 20 41 53 0a 20 20 20 20 20 20 20 53  r,a) AS.       S
2370: 45 4c 45 43 54 20 72 6f 77 69 64 2c 20 61 20 46  ELECT rowid, a F
2380: 52 4f 4d 20 74 32 20 55 4e 49 4f 4e 20 41 4c 4c  ROM t2 UNION ALL
2390: 20 53 45 4c 45 43 54 20 72 6f 77 69 64 2c 20 61   SELECT rowid, a
23a0: 20 46 52 4f 4d 20 74 31 3b 0a 20 20 20 20 43 52   FROM t1;.    CR
23b0: 45 41 54 45 20 54 52 49 47 47 45 52 20 74 76 5f  EATE TRIGGER tv_
23c0: 64 65 6c 20 49 4e 53 54 45 41 44 20 4f 46 20 44  del INSTEAD OF D
23d0: 45 4c 45 54 45 20 4f 4e 20 74 76 0a 20 20 20 20  ELETE ON tv.    
23e0: 42 45 47 49 4e 0a 20 20 20 20 20 20 44 45 4c 45  BEGIN.      DELE
23f0: 54 45 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45  TE FROM t1 WHERE
2400: 20 72 6f 77 69 64 3d 6f 6c 64 2e 72 3b 0a 20 20   rowid=old.r;.  
2410: 20 20 20 20 44 45 4c 45 54 45 20 46 52 4f 4d 20      DELETE FROM 
2420: 74 32 20 57 48 45 52 45 20 72 6f 77 69 64 3d 6f  t2 WHERE rowid=o
2430: 6c 64 2e 72 3b 0a 20 20 20 20 45 4e 44 3b 0a 20  ld.r;.    END;. 
2440: 20 7d 20 7b 7d 0a 20 20 64 6f 5f 63 61 74 63 68   } {}.  do_catch
2450: 73 71 6c 5f 74 65 73 74 20 77 68 65 72 65 6c 69  sql_test whereli
2460: 6d 69 74 2d 34 2e 32 20 7b 0a 20 20 20 20 44 45  mit-4.2 {.    DE
2470: 4c 45 54 45 20 46 52 4f 4d 20 74 76 20 57 48 45  LETE FROM tv WHE
2480: 52 45 20 31 20 4c 49 4d 49 54 20 32 3b 0a 20 20  RE 1 LIMIT 2;.  
2490: 7d 20 7b 30 20 7b 7d 7d 0a 20 20 64 6f 5f 63 61  } {0 {}}.  do_ca
24a0: 74 63 68 73 71 6c 5f 74 65 73 74 20 77 68 65 72  tchsql_test wher
24b0: 65 6c 69 6d 69 74 2d 34 2e 33 20 7b 0a 20 20 20  elimit-4.3 {.   
24c0: 20 44 45 4c 45 54 45 20 46 52 4f 4d 20 74 76 20   DELETE FROM tv 
24d0: 57 48 45 52 45 20 31 20 4f 52 44 45 52 20 42 59  WHERE 1 ORDER BY
24e0: 20 61 20 4c 49 4d 49 54 20 32 3b 0a 20 20 7d 20   a LIMIT 2;.  } 
24f0: 7b 30 20 7b 7d 7d 0a 20 20 64 6f 5f 65 78 65 63  {0 {}}.  do_exec
2500: 73 71 6c 5f 74 65 73 74 20 77 68 65 72 65 6c 69  sql_test whereli
2510: 6d 69 74 2d 34 2e 31 30 20 7b 0a 20 20 20 20 43  mit-4.10 {.    C
2520: 52 45 41 54 45 20 54 41 42 4c 45 20 74 33 28 61  REATE TABLE t3(a
2530: 2c 62 2c 63 2c 64 20 54 45 58 54 2c 20 50 52 49  ,b,c,d TEXT, PRI
2540: 4d 41 52 59 20 4b 45 59 28 61 2c 62 29 29 20 57  MARY KEY(a,b)) W
2550: 49 54 48 4f 55 54 20 52 4f 57 49 44 3b 0a 20 20  ITHOUT ROWID;.  
2560: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 33    INSERT INTO t3
2570: 28 61 2c 62 2c 63 2c 64 29 20 56 41 4c 55 45 53  (a,b,c,d) VALUES
2580: 28 31 2c 32 2c 33 2c 34 29 2c 28 35 2c 36 2c 37  (1,2,3,4),(5,6,7
2590: 2c 38 29 2c 28 39 2c 31 30 2c 31 31 2c 31 32 29  ,8),(9,10,11,12)
25a0: 3b 0a 20 20 7d 20 7b 7d 0a 20 20 64 6f 5f 63 61  ;.  } {}.  do_ca
25b0: 74 63 68 73 71 6c 5f 74 65 73 74 20 77 68 65 72  tchsql_test wher
25c0: 65 6c 69 6d 69 74 2d 34 2e 31 31 20 7b 0a 20 20  elimit-4.11 {.  
25d0: 20 20 44 45 4c 45 54 45 20 46 52 4f 4d 20 74 33    DELETE FROM t3
25e0: 20 57 48 45 52 45 20 61 3d 35 20 4c 49 4d 49 54   WHERE a=5 LIMIT
25f0: 20 32 3b 0a 20 20 7d 20 7b 30 20 7b 7d 7d 0a 20   2;.  } {0 {}}. 
2600: 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74   do_execsql_test
2610: 20 77 68 65 72 65 6c 69 6d 69 74 2d 34 2e 31 32   wherelimit-4.12
2620: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c   {.    SELECT a,
2630: 62 2c 63 2c 64 20 46 52 4f 4d 20 74 33 20 4f 52  b,c,d FROM t3 OR
2640: 44 45 52 20 42 59 20 31 3b 0a 20 20 7d 20 7b 31  DER BY 1;.  } {1
2650: 20 32 20 33 20 34 20 39 20 31 30 20 31 31 20 31   2 3 4 9 10 11 1
2660: 32 7d 0a 0a 7d 0a 0a 66 69 6e 69 73 68 5f 74 65  2}..}..finish_te
2670: 73 74 0a                                         st.