/ Hex Artifact Content
Login

Artifact e1704ab1b4c1bb3ffc9da4681f8e85a0b909fd80b937984fc94b27415ac8e5a4:


0000: 23 20 32 30 31 37 2d 30 37 2d 31 35 0a 23 0a 23  # 2017-07-15.#.#
0010: 20 54 68 65 20 61 75 74 68 6f 72 20 64 69 73 63   The author disc
0020: 6c 61 69 6d 73 20 63 6f 70 79 72 69 67 68 74 20  laims copyright 
0030: 74 6f 20 74 68 69 73 20 73 6f 75 72 63 65 20 63  to this source c
0040: 6f 64 65 2e 20 20 49 6e 20 70 6c 61 63 65 20 6f  ode.  In place o
0050: 66 0a 23 20 61 20 6c 65 67 61 6c 20 6e 6f 74 69  f.# a legal noti
0060: 63 65 2c 20 68 65 72 65 20 69 73 20 61 20 62 6c  ce, here is a bl
0070: 65 73 73 69 6e 67 3a 0a 23 0a 23 20 20 20 20 4d  essing:.#.#    M
0080: 61 79 20 79 6f 75 20 64 6f 20 67 6f 6f 64 20 61  ay you do good a
0090: 6e 64 20 6e 6f 74 20 65 76 69 6c 2e 0a 23 20 20  nd not evil..#  
00a0: 20 20 4d 61 79 20 79 6f 75 20 66 69 6e 64 20 66    May you find f
00b0: 6f 72 67 69 76 65 6e 65 73 73 20 66 6f 72 20 79  orgiveness for y
00c0: 6f 75 72 73 65 6c 66 20 61 6e 64 20 66 6f 72 67  ourself and forg
00d0: 69 76 65 20 6f 74 68 65 72 73 2e 0a 23 20 20 20  ive others..#   
00e0: 20 4d 61 79 20 79 6f 75 20 73 68 61 72 65 20 66   May you share f
00f0: 72 65 65 6c 79 2c 20 6e 65 76 65 72 20 74 61 6b  reely, never tak
0100: 69 6e 67 20 6d 6f 72 65 20 74 68 61 6e 20 79 6f  ing more than yo
0110: 75 20 67 69 76 65 2e 0a 23 0a 23 2a 2a 2a 2a 2a  u 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 0a 23 20 54 68 69 73 20 66 69 6c 65 20 69  **.# This file i
0170: 6d 70 6c 65 6d 65 6e 74 73 20 72 65 67 72 65 73  mplements regres
0180: 73 69 6f 6e 20 74 65 73 74 73 20 66 6f 72 20 53  sion tests for S
0190: 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 20 20  QLite library.  
01a0: 54 68 65 0a 23 20 66 6f 63 75 73 20 6f 66 20 74  The.# focus of t
01b0: 68 69 73 20 66 69 6c 65 20 69 73 20 70 65 72 63  his file is perc
01c0: 65 6e 74 69 6c 65 2e 63 20 65 78 74 65 6e 73 69  entile.c extensi
01d0: 6f 6e 0a 23 0a 0a 73 65 74 20 74 65 73 74 64 69  on.#..set testdi
01e0: 72 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20  r [file dirname 
01f0: 24 61 72 67 76 30 5d 0a 73 6f 75 72 63 65 20 24  $argv0].source $
0200: 74 65 73 74 64 69 72 2f 74 65 73 74 65 72 2e 74  testdir/tester.t
0210: 63 6c 0a 73 65 74 20 74 65 73 74 70 72 65 66 69  cl.set testprefi
0220: 78 20 75 6e 69 6f 6e 76 74 61 62 0a 0a 69 66 63  x unionvtab..ifc
0230: 61 70 61 62 6c 65 20 21 76 74 61 62 20 7b 0a 20  apable !vtab {. 
0240: 20 66 69 6e 69 73 68 5f 74 65 73 74 0a 20 20 72   finish_test.  r
0250: 65 74 75 72 6e 0a 7d 0a 0a 6c 6f 61 64 5f 73 74  eturn.}..load_st
0260: 61 74 69 63 5f 65 78 74 65 6e 73 69 6f 6e 20 64  atic_extension d
0270: 62 20 75 6e 69 6f 6e 76 74 61 62 0a 0a 23 2d 2d  b unionvtab..#--
0280: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0290: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
02a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
02b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
02c0: 2d 2d 2d 2d 2d 2d 2d 0a 23 20 57 61 72 6d 20 62  -------.# Warm b
02d0: 6f 64 79 20 74 65 73 74 73 2e 0a 23 0a 66 6f 72  ody tests..#.for
02e0: 63 65 64 65 6c 65 74 65 20 74 65 73 74 2e 64 62  cedelete test.db
02f0: 32 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73  2.do_execsql_tes
0300: 74 20 31 2e 30 20 7b 0a 20 20 41 54 54 41 43 48  t 1.0 {.  ATTACH
0310: 20 27 74 65 73 74 2e 64 62 32 27 20 41 53 20 61   'test.db2' AS a
0320: 75 78 3b 0a 0a 20 20 43 52 45 41 54 45 20 54 41  ux;..  CREATE TA
0330: 42 4c 45 20 74 31 28 61 20 49 4e 54 45 47 45 52  BLE t1(a INTEGER
0340: 20 50 52 49 4d 41 52 59 20 4b 45 59 2c 20 62 20   PRIMARY KEY, b 
0350: 54 45 58 54 29 3b 0a 20 20 43 52 45 41 54 45 20  TEXT);.  CREATE 
0360: 54 41 42 4c 45 20 74 32 28 61 20 49 4e 54 45 47  TABLE t2(a INTEG
0370: 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 2c 20  ER PRIMARY KEY, 
0380: 62 20 54 45 58 54 29 3b 0a 20 20 43 52 45 41 54  b TEXT);.  CREAT
0390: 45 20 54 41 42 4c 45 20 61 75 78 2e 74 33 28 61  E TABLE aux.t3(a
03a0: 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59   INTEGER PRIMARY
03b0: 20 4b 45 59 2c 20 62 20 54 45 58 54 29 3b 0a 0a   KEY, b TEXT);..
03c0: 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74  .  INSERT INTO t
03d0: 31 20 56 41 4c 55 45 53 28 31 2c 20 27 6f 6e 65  1 VALUES(1, 'one
03e0: 27 29 2c 20 28 32 2c 20 27 74 77 6f 27 29 2c 20  '), (2, 'two'), 
03f0: 28 33 2c 20 27 74 68 72 65 65 27 29 3b 0a 20 20  (3, 'three');.  
0400: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 32 20 56  INSERT INTO t2 V
0410: 41 4c 55 45 53 28 31 30 2c 20 27 74 65 6e 27 29  ALUES(10, 'ten')
0420: 2c 20 28 31 31 2c 20 27 65 6c 65 76 65 6e 27 29  , (11, 'eleven')
0430: 2c 20 28 31 32 2c 20 27 74 77 65 6c 76 65 27 29  , (12, 'twelve')
0440: 3b 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20  ;.  INSERT INTO 
0450: 74 33 20 56 41 4c 55 45 53 28 32 30 2c 20 27 74  t3 VALUES(20, 't
0460: 77 65 6e 74 79 27 29 2c 20 28 32 31 2c 20 27 74  wenty'), (21, 't
0470: 77 65 6e 74 79 2d 6f 6e 65 27 29 2c 20 28 32 32  wenty-one'), (22
0480: 2c 20 27 74 77 65 6e 74 79 2d 74 77 6f 27 29 3b  , 'twenty-two');
0490: 0a 7d 0a 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74  .}..do_execsql_t
04a0: 65 73 74 20 31 2e 31 20 7b 0a 20 20 43 52 45 41  est 1.1 {.  CREA
04b0: 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45  TE VIRTUAL TABLE
04c0: 20 74 65 6d 70 2e 75 75 75 20 55 53 49 4e 47 20   temp.uuu USING 
04d0: 75 6e 69 6f 6e 76 74 61 62 28 0a 20 20 20 20 22  unionvtab(.    "
04e0: 56 41 4c 55 45 53 28 4e 55 4c 4c 2c 20 27 74 31  VALUES(NULL, 't1
04f0: 27 2c 20 31 2c 20 39 29 2c 20 20 28 27 6d 61 69  ', 1, 9),  ('mai
0500: 6e 27 2c 20 27 74 32 27 2c 20 31 30 2c 20 31 39  n', 't2', 10, 19
0510: 29 2c 20 28 27 61 75 78 27 2c 20 27 74 33 27 2c  ), ('aux', 't3',
0520: 20 32 30 2c 20 32 39 29 22 0a 20 20 29 3b 0a 20   20, 29)".  );. 
0530: 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 75   SELECT * FROM u
0540: 75 75 3b 0a 7d 20 7b 0a 20 20 31 20 6f 6e 65 20  uu;.} {.  1 one 
0550: 32 20 74 77 6f 20 33 20 74 68 72 65 65 0a 20 20  2 two 3 three.  
0560: 31 30 20 74 65 6e 20 31 31 20 65 6c 65 76 65 6e  10 ten 11 eleven
0570: 20 31 32 20 74 77 65 6c 76 65 0a 20 20 32 30 20   12 twelve.  20 
0580: 74 77 65 6e 74 79 20 32 31 20 74 77 65 6e 74 79  twenty 21 twenty
0590: 2d 6f 6e 65 20 32 32 20 74 77 65 6e 74 79 2d 74  -one 22 twenty-t
05a0: 77 6f 0a 7d 0a 0a 64 6f 5f 65 78 65 63 73 71 6c  wo.}..do_execsql
05b0: 5f 74 65 73 74 20 31 2e 32 20 7b 0a 20 20 50 52  _test 1.2 {.  PR
05c0: 41 47 4d 41 20 74 61 62 6c 65 5f 69 6e 66 6f 28  AGMA table_info(
05d0: 75 75 75 29 3b 0a 7d 20 7b 0a 20 20 30 20 61 20  uuu);.} {.  0 a 
05e0: 49 4e 54 45 47 45 52 20 30 20 7b 7d 20 30 20 0a  INTEGER 0 {} 0 .
05f0: 20 20 31 20 62 20 54 45 58 54 20 30 20 7b 7d 20    1 b TEXT 0 {} 
0600: 30 0a 7d 0a 0a 64 6f 5f 65 78 65 63 73 71 6c 5f  0.}..do_execsql_
0610: 74 65 73 74 20 31 2e 33 20 7b 0a 20 20 53 45 4c  test 1.3 {.  SEL
0620: 45 43 54 20 2a 20 46 52 4f 4d 20 75 75 75 20 57  ECT * FROM uuu W
0630: 48 45 52 45 20 72 6f 77 69 64 20 3d 20 33 3b 0a  HERE rowid = 3;.
0640: 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20    SELECT * FROM 
0650: 75 75 75 20 57 48 45 52 45 20 72 6f 77 69 64 20  uuu WHERE rowid 
0660: 3d 20 31 31 3b 0a 7d 20 7b 33 20 74 68 72 65 65  = 11;.} {3 three
0670: 20 31 31 20 65 6c 65 76 65 6e 7d 0a 0a 64 6f 5f   11 eleven}..do_
0680: 65 78 65 63 73 71 6c 5f 74 65 73 74 20 31 2e 34  execsql_test 1.4
0690: 20 7b 0a 20 20 53 45 4c 45 43 54 20 2a 20 46 52   {.  SELECT * FR
06a0: 4f 4d 20 75 75 75 20 57 48 45 52 45 20 72 6f 77  OM uuu WHERE row
06b0: 69 64 20 49 4e 20 28 31 32 2c 20 31 30 2c 20 32  id IN (12, 10, 2
06c0: 29 3b 0a 7d 20 7b 32 20 74 77 6f 20 31 30 20 74  );.} {2 two 10 t
06d0: 65 6e 20 31 32 20 74 77 65 6c 76 65 7d 0a 0a 64  en 12 twelve}..d
06e0: 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 31  o_execsql_test 1
06f0: 2e 35 20 7b 0a 20 20 53 45 4c 45 43 54 20 2a 20  .5 {.  SELECT * 
0700: 46 52 4f 4d 20 75 75 75 20 57 48 45 52 45 20 72  FROM uuu WHERE r
0710: 6f 77 69 64 20 42 45 54 57 45 45 4e 20 33 20 41  owid BETWEEN 3 A
0720: 4e 44 20 31 31 3b 0a 7d 20 7b 33 20 74 68 72 65  ND 11;.} {3 thre
0730: 65 20 31 30 20 74 65 6e 20 31 31 20 65 6c 65 76  e 10 ten 11 elev
0740: 65 6e 7d 0a 0a 64 6f 5f 65 78 65 63 73 71 6c 5f  en}..do_execsql_
0750: 74 65 73 74 20 31 2e 36 20 7b 0a 20 20 53 45 4c  test 1.6 {.  SEL
0760: 45 43 54 20 2a 20 46 52 4f 4d 20 75 75 75 20 57  ECT * FROM uuu W
0770: 48 45 52 45 20 72 6f 77 69 64 20 42 45 54 57 45  HERE rowid BETWE
0780: 45 4e 20 31 31 20 41 4e 44 20 31 35 3b 0a 7d 20  EN 11 AND 15;.} 
0790: 7b 31 31 20 65 6c 65 76 65 6e 20 31 32 20 74 77  {11 eleven 12 tw
07a0: 65 6c 76 65 7d 0a 0a 64 6f 5f 65 78 65 63 73 71  elve}..do_execsq
07b0: 6c 5f 74 65 73 74 20 31 2e 37 20 7b 0a 20 20 53  l_test 1.7 {.  S
07c0: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 75 75 75  ELECT * FROM uuu
07d0: 20 57 48 45 52 45 20 72 6f 77 69 64 20 42 45 54   WHERE rowid BET
07e0: 57 45 45 4e 20 2d 34 36 20 41 4e 44 20 31 35 30  WEEN -46 AND 150
07f0: 30 3b 0a 7d 20 7b 0a 20 20 31 20 6f 6e 65 20 32  0;.} {.  1 one 2
0800: 20 74 77 6f 20 33 20 74 68 72 65 65 0a 20 20 31   two 3 three.  1
0810: 30 20 74 65 6e 20 31 31 20 65 6c 65 76 65 6e 20  0 ten 11 eleven 
0820: 31 32 20 74 77 65 6c 76 65 0a 20 20 32 30 20 74  12 twelve.  20 t
0830: 77 65 6e 74 79 20 32 31 20 74 77 65 6e 74 79 2d  wenty 21 twenty-
0840: 6f 6e 65 20 32 32 20 74 77 65 6e 74 79 2d 74 77  one 22 twenty-tw
0850: 6f 0a 7d 0a 0a 64 6f 5f 65 78 65 63 73 71 6c 5f  o.}..do_execsql_
0860: 74 65 73 74 20 31 2e 38 20 7b 0a 20 20 43 52 45  test 1.8 {.  CRE
0870: 41 54 45 20 54 41 42 4c 45 20 73 72 63 28 64 62  ATE TABLE src(db
0880: 2c 20 74 62 6c 2c 20 6d 69 6e 2c 20 6d 61 78 29  , tbl, min, max)
0890: 3b 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20  ;.  INSERT INTO 
08a0: 73 72 63 20 56 41 4c 55 45 53 28 4e 55 4c 4c 2c  src VALUES(NULL,
08b0: 20 27 74 31 27 2c 20 31 2c 20 39 29 3b 0a 20 20   't1', 1, 9);.  
08c0: 49 4e 53 45 52 54 20 49 4e 54 4f 20 73 72 63 20  INSERT INTO src 
08d0: 56 41 4c 55 45 53 28 27 6d 61 69 6e 27 2c 20 27  VALUES('main', '
08e0: 74 32 27 2c 20 31 30 2c 20 31 39 29 3b 0a 20 20  t2', 10, 19);.  
08f0: 49 4e 53 45 52 54 20 49 4e 54 4f 20 73 72 63 20  INSERT INTO src 
0900: 56 41 4c 55 45 53 28 27 61 75 78 27 2c 20 27 74  VALUES('aux', 't
0910: 33 27 2c 20 32 30 2c 20 32 39 29 3b 0a 20 20 43  3', 20, 29);.  C
0920: 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54 41  REATE VIRTUAL TA
0930: 42 4c 45 20 74 65 6d 70 2e 6f 70 70 20 55 53 49  BLE temp.opp USI
0940: 4e 47 20 75 6e 69 6f 6e 76 74 61 62 28 73 72 63  NG unionvtab(src
0950: 29 3b 0a 20 20 53 45 4c 45 43 54 20 2a 20 46 52  );.  SELECT * FR
0960: 4f 4d 20 6f 70 70 3b 0a 7d 20 7b 0a 20 20 31 20  OM opp;.} {.  1 
0970: 6f 6e 65 20 32 20 74 77 6f 20 33 20 74 68 72 65  one 2 two 3 thre
0980: 65 0a 20 20 31 30 20 74 65 6e 20 31 31 20 65 6c  e.  10 ten 11 el
0990: 65 76 65 6e 20 31 32 20 74 77 65 6c 76 65 0a 20  even 12 twelve. 
09a0: 20 32 30 20 74 77 65 6e 74 79 20 32 31 20 74 77   20 twenty 21 tw
09b0: 65 6e 74 79 2d 6f 6e 65 20 32 32 20 74 77 65 6e  enty-one 22 twen
09c0: 74 79 2d 74 77 6f 0a 7d 0a 0a 64 6f 5f 65 78 65  ty-two.}..do_exe
09d0: 63 73 71 6c 5f 74 65 73 74 20 31 2e 39 20 7b 0a  csql_test 1.9 {.
09e0: 20 20 43 52 45 41 54 45 20 56 49 52 54 55 41 4c    CREATE VIRTUAL
09f0: 20 54 41 42 4c 45 20 74 65 6d 70 2e 71 6c 6c 20   TABLE temp.qll 
0a00: 55 53 49 4e 47 20 75 6e 69 6f 6e 76 74 61 62 28  USING unionvtab(
0a10: 0a 20 20 20 20 27 53 45 4c 45 43 54 20 2a 20 46  .    'SELECT * F
0a20: 52 4f 4d 20 73 72 63 20 57 48 45 52 45 20 64 62  ROM src WHERE db
0a30: 21 3d 27 27 78 79 7a 27 27 27 0a 20 20 29 3b 0a  !=''xyz'''.  );.
0a40: 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20    SELECT * FROM 
0a50: 71 6c 6c 20 57 48 45 52 45 20 72 6f 77 69 64 20  qll WHERE rowid 
0a60: 42 45 54 57 45 45 4e 20 31 30 20 41 4e 44 20 32  BETWEEN 10 AND 2
0a70: 31 3b 0a 7d 20 7b 0a 20 20 31 30 20 74 65 6e 20  1;.} {.  10 ten 
0a80: 31 31 20 65 6c 65 76 65 6e 20 31 32 20 74 77 65  11 eleven 12 twe
0a90: 6c 76 65 0a 20 20 32 30 20 74 77 65 6e 74 79 20  lve.  20 twenty 
0aa0: 32 31 20 74 77 65 6e 74 79 2d 6f 6e 65 0a 7d 0a  21 twenty-one.}.
0ab0: 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  .#--------------
0ac0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0ad0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0ae0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0af0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 45 72  -----------.# Er
0b00: 72 6f 72 20 63 6f 6e 64 69 74 69 6f 6e 73 2e 0a  ror conditions..
0b10: 23 0a 23 20 20 20 32 2e 31 2e 2a 3a 20 41 74 74  #.#   2.1.*: Att
0b20: 65 6d 70 74 20 74 6f 20 63 72 65 61 74 65 20 61  empt to create a
0b30: 20 75 6e 69 6f 6e 76 74 61 62 20 74 61 62 6c 65   unionvtab table
0b40: 20 6f 75 74 73 69 64 65 20 6f 66 20 74 68 65 20   outside of the 
0b50: 54 45 4d 50 20 73 63 68 65 6d 61 2e 0a 23 20 20  TEMP schema..#  
0b60: 20 32 2e 32 2e 2a 3a 20 54 61 62 6c 65 73 20 74   2.2.*: Tables t
0b70: 68 61 74 20 64 6f 20 6e 6f 74 20 65 78 69 73 74  hat do not exist
0b80: 2e 0a 23 20 20 20 32 2e 33 2e 2a 3a 20 4e 6f 6e  ..#   2.3.*: Non
0b90: 20 72 6f 77 69 64 20 74 61 62 6c 65 73 2e 0a 23   rowid tables..#
0ba0: 20 20 20 32 2e 34 2e 2a 3a 20 54 61 62 6c 65 73     2.4.*: Tables
0bb0: 20 77 69 74 68 20 6d 69 73 6d 61 74 63 68 65 64   with mismatched
0bc0: 20 73 63 68 65 6d 61 73 2e 0a 23 20 20 20 32 2e   schemas..#   2.
0bd0: 35 2e 2a 3a 20 41 20 75 6e 69 6f 6e 76 74 61 62  5.*: A unionvtab
0be0: 20 74 61 62 6c 65 20 77 69 74 68 20 7a 65 72 6f   table with zero
0bf0: 20 73 6f 75 72 63 65 20 74 61 62 6c 65 73 2e 0a   source tables..
0c00: 23 0a 64 6f 5f 63 61 74 63 68 73 71 6c 5f 74 65  #.do_catchsql_te
0c10: 73 74 20 32 2e 31 2e 31 20 7b 0a 20 20 43 52 45  st 2.1.1 {.  CRE
0c20: 41 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c  ATE VIRTUAL TABL
0c30: 45 20 75 31 20 55 53 49 4e 47 20 75 6e 69 6f 6e  E u1 USING union
0c40: 76 74 61 62 28 22 56 41 4c 55 45 53 28 4e 55 4c  vtab("VALUES(NUL
0c50: 4c 2c 20 27 74 31 27 2c 20 31 2c 20 31 30 30 29  L, 't1', 1, 100)
0c60: 22 29 3b 0a 7d 20 7b 31 20 7b 75 6e 69 6f 6e 76  ");.} {1 {unionv
0c70: 74 61 62 20 74 61 62 6c 65 73 20 6d 75 73 74 20  tab tables must 
0c80: 62 65 20 63 72 65 61 74 65 64 20 69 6e 20 54 45  be created in TE
0c90: 4d 50 20 73 63 68 65 6d 61 7d 7d 0a 64 6f 5f 63  MP schema}}.do_c
0ca0: 61 74 63 68 73 71 6c 5f 74 65 73 74 20 32 2e 31  atchsql_test 2.1
0cb0: 2e 32 20 7b 0a 20 20 43 52 45 41 54 45 20 56 49  .2 {.  CREATE VI
0cc0: 52 54 55 41 4c 20 54 41 42 4c 45 20 6d 61 69 6e  RTUAL TABLE main
0cd0: 2e 75 31 20 55 53 49 4e 47 20 75 6e 69 6f 6e 76  .u1 USING unionv
0ce0: 74 61 62 28 22 56 41 4c 55 45 53 28 27 27 2c 20  tab("VALUES('', 
0cf0: 27 74 31 27 2c 20 31 2c 20 31 30 30 29 22 29 3b  't1', 1, 100)");
0d00: 0a 7d 20 7b 31 20 7b 75 6e 69 6f 6e 76 74 61 62  .} {1 {unionvtab
0d10: 20 74 61 62 6c 65 73 20 6d 75 73 74 20 62 65 20   tables must be 
0d20: 63 72 65 61 74 65 64 20 69 6e 20 54 45 4d 50 20  created in TEMP 
0d30: 73 63 68 65 6d 61 7d 7d 0a 64 6f 5f 63 61 74 63  schema}}.do_catc
0d40: 68 73 71 6c 5f 74 65 73 74 20 32 2e 31 2e 33 20  hsql_test 2.1.3 
0d50: 7b 0a 20 20 43 52 45 41 54 45 20 56 49 52 54 55  {.  CREATE VIRTU
0d60: 41 4c 20 54 41 42 4c 45 20 61 75 78 2e 75 31 20  AL TABLE aux.u1 
0d70: 55 53 49 4e 47 20 75 6e 69 6f 6e 76 74 61 62 28  USING unionvtab(
0d80: 22 56 41 4c 55 45 53 28 27 27 2c 20 27 74 31 27  "VALUES('', 't1'
0d90: 2c 20 31 2c 20 31 30 30 29 22 29 3b 0a 7d 20 7b  , 1, 100)");.} {
0da0: 31 20 7b 75 6e 69 6f 6e 76 74 61 62 20 74 61 62  1 {unionvtab tab
0db0: 6c 65 73 20 6d 75 73 74 20 62 65 20 63 72 65 61  les must be crea
0dc0: 74 65 64 20 69 6e 20 54 45 4d 50 20 73 63 68 65  ted in TEMP sche
0dd0: 6d 61 7d 7d 0a 0a 64 6f 5f 63 61 74 63 68 73 71  ma}}..do_catchsq
0de0: 6c 5f 74 65 73 74 20 32 2e 32 2e 31 20 7b 0a 20  l_test 2.2.1 {. 
0df0: 20 43 52 45 41 54 45 20 56 49 52 54 55 41 4c 20   CREATE VIRTUAL 
0e00: 54 41 42 4c 45 20 74 65 6d 70 2e 75 31 20 55 53  TABLE temp.u1 US
0e10: 49 4e 47 20 75 6e 69 6f 6e 76 74 61 62 28 22 56  ING unionvtab("V
0e20: 41 4c 55 45 53 28 4e 55 4c 4c 2c 20 27 74 35 35  ALUES(NULL, 't55
0e30: 35 27 2c 20 31 2c 20 31 30 30 29 22 29 3b 0a 7d  5', 1, 100)");.}
0e40: 20 7b 31 20 7b 6e 6f 20 73 75 63 68 20 72 6f 77   {1 {no such row
0e50: 69 64 20 74 61 62 6c 65 3a 20 74 35 35 35 7d 7d  id table: t555}}
0e60: 0a 64 6f 5f 63 61 74 63 68 73 71 6c 5f 74 65 73  .do_catchsql_tes
0e70: 74 20 32 2e 32 2e 32 20 7b 0a 20 20 43 52 45 41  t 2.2.2 {.  CREA
0e80: 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45  TE VIRTUAL TABLE
0e90: 20 74 65 6d 70 2e 75 31 20 55 53 49 4e 47 20 75   temp.u1 USING u
0ea0: 6e 69 6f 6e 76 74 61 62 28 22 56 41 4c 55 45 53  nionvtab("VALUES
0eb0: 28 27 61 75 78 27 2c 20 27 74 35 35 35 27 2c 20  ('aux', 't555', 
0ec0: 31 2c 20 31 30 30 29 22 29 3b 0a 7d 20 7b 31 20  1, 100)");.} {1 
0ed0: 7b 6e 6f 20 73 75 63 68 20 72 6f 77 69 64 20 74  {no such rowid t
0ee0: 61 62 6c 65 3a 20 61 75 78 2e 74 35 35 35 7d 7d  able: aux.t555}}
0ef0: 0a 64 6f 5f 63 61 74 63 68 73 71 6c 5f 74 65 73  .do_catchsql_tes
0f00: 74 20 32 2e 32 2e 33 20 7b 0a 20 20 43 52 45 41  t 2.2.3 {.  CREA
0f10: 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45  TE VIRTUAL TABLE
0f20: 20 74 65 6d 70 2e 75 31 20 55 53 49 4e 47 20 75   temp.u1 USING u
0f30: 6e 69 6f 6e 76 74 61 62 28 22 56 41 4c 55 45 53  nionvtab("VALUES
0f40: 28 27 78 75 61 27 2c 20 27 74 35 35 35 27 2c 20  ('xua', 't555', 
0f50: 31 2c 20 31 30 30 29 22 29 3b 0a 7d 20 7b 31 20  1, 100)");.} {1 
0f60: 7b 6e 6f 20 73 75 63 68 20 72 6f 77 69 64 20 74  {no such rowid t
0f70: 61 62 6c 65 3a 20 78 75 61 2e 74 35 35 35 7d 7d  able: xua.t555}}
0f80: 0a 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73  ..do_execsql_tes
0f90: 74 20 32 2e 33 2e 30 20 7b 0a 20 20 43 52 45 41  t 2.3.0 {.  CREA
0fa0: 54 45 20 54 41 42 4c 45 20 77 72 31 28 61 2c 20  TE TABLE wr1(a, 
0fb0: 62 2c 20 63 20 50 52 49 4d 41 52 59 20 4b 45 59  b, c PRIMARY KEY
0fc0: 29 20 57 49 54 48 4f 55 54 20 52 4f 57 49 44 3b  ) WITHOUT ROWID;
0fd0: 0a 20 20 43 52 45 41 54 45 20 56 49 45 57 20 76  .  CREATE VIEW v
0fe0: 31 20 41 53 20 53 45 4c 45 43 54 20 2a 20 46 52  1 AS SELECT * FR
0ff0: 4f 4d 20 74 31 3b 0a 20 20 43 52 45 41 54 45 20  OM t1;.  CREATE 
1000: 56 49 45 57 20 76 32 20 41 53 20 53 45 4c 45 43  VIEW v2 AS SELEC
1010: 54 20 5f 72 6f 77 69 64 5f 2c 20 2a 20 46 52 4f  T _rowid_, * FRO
1020: 4d 20 74 31 3b 0a 0a 20 20 43 52 45 41 54 45 20  M t1;..  CREATE 
1030: 54 41 42 4c 45 20 77 72 32 28 61 2c 20 5f 72 6f  TABLE wr2(a, _ro
1040: 77 69 64 5f 20 49 4e 54 45 47 45 52 2c 20 63 20  wid_ INTEGER, c 
1050: 50 52 49 4d 41 52 59 20 4b 45 59 29 20 57 49 54  PRIMARY KEY) WIT
1060: 48 4f 55 54 20 52 4f 57 49 44 3b 0a 20 20 43 52  HOUT ROWID;.  CR
1070: 45 41 54 45 20 54 41 42 4c 45 20 77 72 33 28 61  EATE TABLE wr3(a
1080: 2c 20 62 2c 20 5f 72 6f 77 69 64 5f 20 50 52 49  , b, _rowid_ PRI
1090: 4d 41 52 59 20 4b 45 59 29 20 57 49 54 48 4f 55  MARY KEY) WITHOU
10a0: 54 20 52 4f 57 49 44 3b 0a 7d 0a 64 6f 5f 63 61  T ROWID;.}.do_ca
10b0: 74 63 68 73 71 6c 5f 74 65 73 74 20 32 2e 33 2e  tchsql_test 2.3.
10c0: 31 20 7b 0a 20 20 43 52 45 41 54 45 20 56 49 52  1 {.  CREATE VIR
10d0: 54 55 41 4c 20 54 41 42 4c 45 20 74 65 6d 70 2e  TUAL TABLE temp.
10e0: 75 31 20 55 53 49 4e 47 20 75 6e 69 6f 6e 76 74  u1 USING unionvt
10f0: 61 62 28 22 56 41 4c 55 45 53 28 27 6d 61 69 6e  ab("VALUES('main
1100: 27 2c 20 27 77 72 31 27 2c 20 31 2c 20 32 29 22  ', 'wr1', 1, 2)"
1110: 29 3b 0a 7d 20 7b 31 20 7b 6e 6f 20 73 75 63 68  );.} {1 {no such
1120: 20 72 6f 77 69 64 20 74 61 62 6c 65 3a 20 6d 61   rowid table: ma
1130: 69 6e 2e 77 72 31 7d 7d 0a 64 6f 5f 63 61 74 63  in.wr1}}.do_catc
1140: 68 73 71 6c 5f 74 65 73 74 20 32 2e 33 2e 32 20  hsql_test 2.3.2 
1150: 7b 0a 20 20 43 52 45 41 54 45 20 56 49 52 54 55  {.  CREATE VIRTU
1160: 41 4c 20 54 41 42 4c 45 20 74 65 6d 70 2e 75 31  AL TABLE temp.u1
1170: 20 55 53 49 4e 47 20 75 6e 69 6f 6e 76 74 61 62   USING unionvtab
1180: 28 22 56 41 4c 55 45 53 28 4e 55 4c 4c 2c 20 27  ("VALUES(NULL, '
1190: 76 31 27 2c 20 31 2c 20 32 29 22 29 3b 0a 7d 20  v1', 1, 2)");.} 
11a0: 7b 31 20 7b 6e 6f 20 73 75 63 68 20 72 6f 77 69  {1 {no such rowi
11b0: 64 20 74 61 62 6c 65 3a 20 76 31 7d 7d 0a 64 6f  d table: v1}}.do
11c0: 5f 63 61 74 63 68 73 71 6c 5f 74 65 73 74 20 32  _catchsql_test 2
11d0: 2e 33 2e 33 20 7b 0a 20 20 43 52 45 41 54 45 20  .3.3 {.  CREATE 
11e0: 56 49 52 54 55 41 4c 20 54 41 42 4c 45 20 74 65  VIRTUAL TABLE te
11f0: 6d 70 2e 75 31 20 55 53 49 4e 47 20 75 6e 69 6f  mp.u1 USING unio
1200: 6e 76 74 61 62 28 22 56 41 4c 55 45 53 28 4e 55  nvtab("VALUES(NU
1210: 4c 4c 2c 20 27 76 32 27 2c 20 31 2c 20 32 29 22  LL, 'v2', 1, 2)"
1220: 29 3b 0a 7d 20 7b 31 20 7b 6e 6f 20 73 75 63 68  );.} {1 {no such
1230: 20 72 6f 77 69 64 20 74 61 62 6c 65 3a 20 76 32   rowid table: v2
1240: 7d 7d 0a 64 6f 5f 63 61 74 63 68 73 71 6c 5f 74  }}.do_catchsql_t
1250: 65 73 74 20 32 2e 33 2e 34 20 7b 0a 20 20 43 52  est 2.3.4 {.  CR
1260: 45 41 54 45 20 56 49 52 54 55 41 4c 20 54 41 42  EATE VIRTUAL TAB
1270: 4c 45 20 74 65 6d 70 2e 75 31 20 55 53 49 4e 47  LE temp.u1 USING
1280: 20 75 6e 69 6f 6e 76 74 61 62 28 22 56 41 4c 55   unionvtab("VALU
1290: 45 53 28 4e 55 4c 4c 2c 20 27 77 72 32 27 2c 20  ES(NULL, 'wr2', 
12a0: 31 2c 20 32 29 22 29 3b 0a 7d 20 7b 31 20 7b 6e  1, 2)");.} {1 {n
12b0: 6f 20 73 75 63 68 20 72 6f 77 69 64 20 74 61 62  o such rowid tab
12c0: 6c 65 3a 20 77 72 32 7d 7d 0a 64 6f 5f 63 61 74  le: wr2}}.do_cat
12d0: 63 68 73 71 6c 5f 74 65 73 74 20 32 2e 33 2e 35  chsql_test 2.3.5
12e0: 20 7b 0a 20 20 43 52 45 41 54 45 20 56 49 52 54   {.  CREATE VIRT
12f0: 55 41 4c 20 54 41 42 4c 45 20 74 65 6d 70 2e 75  UAL TABLE temp.u
1300: 31 20 55 53 49 4e 47 20 75 6e 69 6f 6e 76 74 61  1 USING unionvta
1310: 62 28 22 56 41 4c 55 45 53 28 4e 55 4c 4c 2c 20  b("VALUES(NULL, 
1320: 27 77 72 33 27 2c 20 31 2c 20 32 29 22 29 3b 0a  'wr3', 1, 2)");.
1330: 7d 20 7b 31 20 7b 6e 6f 20 73 75 63 68 20 72 6f  } {1 {no such ro
1340: 77 69 64 20 74 61 62 6c 65 3a 20 77 72 33 7d 7d  wid table: wr3}}
1350: 0a 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73  ..do_execsql_tes
1360: 74 20 32 2e 34 2e 30 20 7b 0a 20 20 43 52 45 41  t 2.4.0 {.  CREA
1370: 54 45 20 54 41 42 4c 45 20 78 31 28 61 20 42 4c  TE TABLE x1(a BL
1380: 4f 42 2c 20 62 29 3b 0a 20 20 43 52 45 41 54 45  OB, b);.  CREATE
1390: 20 54 41 42 4c 45 20 78 32 28 61 20 42 4c 4f 42   TABLE x2(a BLOB
13a0: 2c 20 62 29 3b 0a 20 20 43 52 45 41 54 45 20 54  , b);.  CREATE T
13b0: 45 4d 50 20 54 41 42 4c 45 20 78 33 28 61 20 42  EMP TABLE x3(a B
13c0: 4c 4f 42 2c 20 62 29 3b 0a 0a 20 20 43 52 45 41  LOB, b);..  CREA
13d0: 54 45 20 54 41 42 4c 45 20 61 75 78 2e 79 31 28  TE TABLE aux.y1(
13e0: 6f 6e 65 2c 20 74 77 6f 2c 20 74 68 72 65 65 20  one, two, three 
13f0: 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20  INTEGER PRIMARY 
1400: 4b 45 59 29 3b 0a 20 20 43 52 45 41 54 45 20 54  KEY);.  CREATE T
1410: 45 4d 50 20 54 41 42 4c 45 20 79 32 28 6f 6e 65  EMP TABLE y2(one
1420: 2c 20 74 77 6f 2c 20 74 68 72 65 65 20 49 4e 54  , two, three INT
1430: 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59  EGER PRIMARY KEY
1440: 29 3b 0a 20 20 43 52 45 41 54 45 20 54 41 42 4c  );.  CREATE TABL
1450: 45 20 79 33 28 6f 6e 65 2c 20 74 77 6f 2c 20 74  E y3(one, two, t
1460: 68 72 65 65 20 49 4e 54 45 47 45 52 20 50 52 49  hree INTEGER PRI
1470: 4d 41 52 59 20 4b 45 59 29 3b 0a 7d 0a 0a 66 6f  MARY KEY);.}..fo
1480: 72 65 61 63 68 20 7b 74 6e 20 64 62 73 20 72 65  reach {tn dbs re
1490: 73 7d 20 7b 0a 20 20 31 20 7b 78 31 20 78 32 20  s} {.  1 {x1 x2 
14a0: 78 33 7d 20 7b 30 20 7b 7d 7d 0a 20 20 32 20 7b  x3} {0 {}}.  2 {
14b0: 79 31 20 79 32 20 79 33 7d 20 7b 30 20 7b 7d 7d  y1 y2 y3} {0 {}}
14c0: 0a 20 20 33 20 7b 78 31 20 79 32 20 79 33 7d 20  .  3 {x1 y2 y3} 
14d0: 7b 31 20 7b 73 6f 75 72 63 65 20 74 61 62 6c 65  {1 {source table
14e0: 20 73 63 68 65 6d 61 20 6d 69 73 6d 61 74 63 68   schema mismatch
14f0: 7d 7d 0a 20 20 34 20 7b 78 31 20 79 32 20 78 33  }}.  4 {x1 y2 x3
1500: 7d 20 7b 31 20 7b 73 6f 75 72 63 65 20 74 61 62  } {1 {source tab
1510: 6c 65 20 73 63 68 65 6d 61 20 6d 69 73 6d 61 74  le schema mismat
1520: 63 68 7d 7d 0a 20 20 35 20 7b 78 31 20 78 32 20  ch}}.  5 {x1 x2 
1530: 79 33 7d 20 7b 31 20 7b 73 6f 75 72 63 65 20 74  y3} {1 {source t
1540: 61 62 6c 65 20 73 63 68 65 6d 61 20 6d 69 73 6d  able schema mism
1550: 61 74 63 68 7d 7d 0a 7d 20 7b 0a 20 20 73 65 74  atch}}.} {.  set
1560: 20 4c 20 5b 6c 69 73 74 5d 0a 20 20 73 65 74 20   L [list].  set 
1570: 69 4d 69 6e 20 30 0a 20 20 66 6f 72 65 61 63 68  iMin 0.  foreach
1580: 20 65 20 24 64 62 73 20 7b 0a 20 20 20 20 73 65   e $dbs {.    se
1590: 74 20 45 20 5b 73 70 6c 69 74 20 24 65 20 2e 5d  t E [split $e .]
15a0: 0a 20 20 20 20 69 66 20 7b 5b 6c 6c 65 6e 67 74  .    if {[llengt
15b0: 68 20 24 45 5d 3e 31 7d 20 7b 0a 20 20 20 20 20  h $E]>1} {.     
15c0: 20 6c 61 70 70 65 6e 64 20 4c 20 22 28 27 5b 6c   lappend L "('[l
15d0: 69 6e 64 65 78 20 24 45 20 30 5d 27 2c 20 27 5b  index $E 0]', '[
15e0: 6c 69 6e 64 65 78 20 24 45 20 31 5d 27 2c 20 24  lindex $E 1]', $
15f0: 69 4d 69 6e 2c 20 24 69 4d 69 6e 29 22 0a 20 20  iMin, $iMin)".  
1600: 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20    } else {.     
1610: 20 6c 61 70 70 65 6e 64 20 4c 20 22 28 4e 55 4c   lappend L "(NUL
1620: 4c 2c 20 27 24 65 27 2c 20 24 69 4d 69 6e 2c 20  L, '$e', $iMin, 
1630: 24 69 4d 69 6e 29 22 0a 20 20 20 20 7d 0a 20 20  $iMin)".    }.  
1640: 20 20 69 6e 63 72 20 69 4d 69 6e 0a 20 20 7d 0a    incr iMin.  }.
1650: 0a 20 20 73 65 74 20 73 71 6c 20 22 43 52 45 41  .  set sql "CREA
1660: 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45  TE VIRTUAL TABLE
1670: 20 74 65 6d 70 2e 61 31 20 55 53 49 4e 47 20 75   temp.a1 USING u
1680: 6e 69 6f 6e 76 74 61 62 28 5c 22 56 41 4c 55 45  nionvtab(\"VALUE
1690: 53 20 5b 6a 6f 69 6e 20 24 4c 20 2c 5d 5c 22 29  S [join $L ,]\")
16a0: 22 0a 20 20 64 6f 5f 63 61 74 63 68 73 71 6c 5f  ".  do_catchsql_
16b0: 74 65 73 74 20 32 2e 34 2e 24 74 6e 20 22 0a 20  test 2.4.$tn ". 
16c0: 20 20 20 44 52 4f 50 20 54 41 42 4c 45 20 49 46     DROP TABLE IF
16d0: 20 45 58 49 53 54 53 20 74 65 6d 70 2e 61 31 3b   EXISTS temp.a1;
16e0: 0a 20 20 20 20 43 52 45 41 54 45 20 56 49 52 54  .    CREATE VIRT
16f0: 55 41 4c 20 54 41 42 4c 45 20 74 65 6d 70 2e 61  UAL TABLE temp.a
1700: 31 20 55 53 49 4e 47 20 75 6e 69 6f 6e 76 74 61  1 USING unionvta
1710: 62 28 5c 22 56 41 4c 55 45 53 20 5b 6a 6f 69 6e  b(\"VALUES [join
1720: 20 24 4c 20 2c 5d 5c 22 29 3b 0a 20 20 22 20 24   $L ,]\");.  " $
1730: 72 65 73 0a 7d 0a 0a 64 6f 5f 63 61 74 63 68 73  res.}..do_catchs
1740: 71 6c 5f 74 65 73 74 20 32 2e 35 20 7b 0a 20 20  ql_test 2.5 {.  
1750: 43 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54  CREATE VIRTUAL T
1760: 41 42 4c 45 20 74 65 6d 70 2e 62 31 20 55 53 49  ABLE temp.b1 USI
1770: 4e 47 20 75 6e 69 6f 6e 76 74 61 62 28 0a 20 20  NG unionvtab(.  
1780: 20 20 5b 53 45 4c 45 43 54 20 27 6d 61 69 6e 27    [SELECT 'main'
1790: 2c 20 27 62 31 27 2c 20 30 2c 20 31 30 30 20 57  , 'b1', 0, 100 W
17a0: 48 45 52 45 20 30 5d 0a 20 20 29 0a 7d 20 7b 31  HERE 0].  ).} {1
17b0: 20 7b 6e 6f 20 73 6f 75 72 63 65 20 74 61 62 6c   {no source tabl
17c0: 65 73 20 63 6f 6e 66 69 67 75 72 65 64 7d 7d 0a  es configured}}.
17d0: 0a 66 6f 72 65 61 63 68 20 7b 74 6e 20 73 71 6c  .foreach {tn sql
17e0: 7d 20 7b 0a 20 20 31 20 7b 20 56 41 4c 55 45 53  } {.  1 { VALUES
17f0: 28 27 6d 61 69 6e 27 2c 20 27 74 31 27 2c 20 31  ('main', 't1', 1
1800: 30 2c 20 32 30 29 2c 20 28 27 6d 61 69 6e 27 2c  0, 20), ('main',
1810: 20 27 74 32 27 2c 20 33 30 2c 20 32 39 29 20 7d   't2', 30, 29) }
1820: 0a 20 20 32 20 7b 20 56 41 4c 55 45 53 28 27 6d  .  2 { VALUES('m
1830: 61 69 6e 27 2c 20 27 74 31 27 2c 20 31 30 2c 20  ain', 't1', 10, 
1840: 32 30 29 2c 20 28 27 6d 61 69 6e 27 2c 20 27 74  20), ('main', 't
1850: 32 27 2c 20 31 35 2c 20 33 30 29 20 7d 0a 7d 20  2', 15, 30) }.} 
1860: 7b 0a 20 20 64 6f 5f 63 61 74 63 68 73 71 6c 5f  {.  do_catchsql_
1870: 74 65 73 74 20 32 2e 36 2e 24 74 6e 20 22 0a 20  test 2.6.$tn ". 
1880: 20 20 20 43 52 45 41 54 45 20 56 49 52 54 55 41     CREATE VIRTUA
1890: 4c 20 54 41 42 4c 45 20 74 65 6d 70 2e 61 31 20  L TABLE temp.a1 
18a0: 55 53 49 4e 47 20 75 6e 69 6f 6e 76 74 61 62 28  USING unionvtab(
18b0: 60 24 73 71 6c 60 29 0a 20 20 22 20 7b 31 20 7b  `$sql`).  " {1 {
18c0: 72 6f 77 69 64 20 72 61 6e 67 65 20 6d 69 73 6d  rowid range mism
18d0: 61 74 63 68 20 65 72 72 6f 72 7d 7d 0a 7d 0a 0a  atch error}}.}..
18e0: 64 6f 5f 63 61 74 63 68 73 71 6c 5f 74 65 73 74  do_catchsql_test
18f0: 20 32 2e 37 2e 31 20 7b 0a 20 20 43 52 45 41 54   2.7.1 {.  CREAT
1900: 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45 20  E VIRTUAL TABLE 
1910: 74 65 6d 70 2e 62 31 20 55 53 49 4e 47 20 75 6e  temp.b1 USING un
1920: 69 6f 6e 76 74 61 62 28 31 2c 20 32 2c 20 33 2c  ionvtab(1, 2, 3,
1930: 20 34 29 0a 7d 20 7b 31 20 7b 77 72 6f 6e 67 20   4).} {1 {wrong 
1940: 6e 75 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65  number of argume
1950: 6e 74 73 20 66 6f 72 20 75 6e 69 6f 6e 76 74 61  nts for unionvta
1960: 62 7d 7d 0a 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  b}}..#----------
1970: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1980: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1990: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
19a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a  ---------------.
19b0: 23 0a 72 65 73 65 74 5f 64 62 0a 6c 6f 61 64 5f  #.reset_db.load_
19c0: 73 74 61 74 69 63 5f 65 78 74 65 6e 73 69 6f 6e  static_extension
19d0: 20 64 62 20 75 6e 69 6f 6e 76 74 61 62 0a 64 6f   db unionvtab.do
19e0: 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 33 2e  _execsql_test 3.
19f0: 30 20 7b 0a 20 20 43 52 45 41 54 45 20 54 41 42  0 {.  CREATE TAB
1a00: 4c 45 20 74 62 6c 31 28 61 20 49 4e 54 45 47 45  LE tbl1(a INTEGE
1a10: 52 20 50 52 49 4d 41 52 59 20 4b 45 59 2c 20 62  R PRIMARY KEY, b
1a20: 29 3b 0a 20 20 43 52 45 41 54 45 20 54 41 42 4c  );.  CREATE TABL
1a30: 45 20 74 62 6c 32 28 61 20 49 4e 54 45 47 45 52  E tbl2(a INTEGER
1a40: 20 50 52 49 4d 41 52 59 20 4b 45 59 2c 20 62 29   PRIMARY KEY, b)
1a50: 3b 0a 20 20 43 52 45 41 54 45 20 54 41 42 4c 45  ;.  CREATE TABLE
1a60: 20 74 62 6c 33 28 61 20 49 4e 54 45 47 45 52 20   tbl3(a INTEGER 
1a70: 50 52 49 4d 41 52 59 20 4b 45 59 2c 20 62 29 3b  PRIMARY KEY, b);
1a80: 0a 0a 20 20 57 49 54 48 20 73 73 28 69 69 29 20  ..  WITH ss(ii) 
1a90: 41 53 20 28 20 53 45 4c 45 43 54 20 31 20 55 4e  AS ( SELECT 1 UN
1aa0: 49 4f 4e 20 41 4c 4c 20 53 45 4c 45 43 54 20 69  ION ALL SELECT i
1ab0: 69 2b 31 20 46 52 4f 4d 20 73 73 20 57 48 45 52  i+1 FROM ss WHER
1ac0: 45 20 69 69 3c 31 30 30 20 29 0a 20 20 49 4e 53  E ii<100 ).  INS
1ad0: 45 52 54 20 49 4e 54 4f 20 74 62 6c 31 20 53 45  ERT INTO tbl1 SE
1ae0: 4c 45 43 54 20 69 69 2c 20 27 31 2e 27 20 7c 7c  LECT ii, '1.' ||
1af0: 20 69 69 20 46 52 4f 4d 20 73 73 3b 0a 0a 20 20   ii FROM ss;..  
1b00: 57 49 54 48 20 73 73 28 69 69 29 20 41 53 20 28  WITH ss(ii) AS (
1b10: 20 53 45 4c 45 43 54 20 31 20 55 4e 49 4f 4e 20   SELECT 1 UNION 
1b20: 41 4c 4c 20 53 45 4c 45 43 54 20 69 69 2b 31 20  ALL SELECT ii+1 
1b30: 46 52 4f 4d 20 73 73 20 57 48 45 52 45 20 69 69  FROM ss WHERE ii
1b40: 3c 31 30 30 20 29 0a 20 20 49 4e 53 45 52 54 20  <100 ).  INSERT 
1b50: 49 4e 54 4f 20 74 62 6c 32 20 53 45 4c 45 43 54  INTO tbl2 SELECT
1b60: 20 69 69 2c 20 27 32 2e 27 20 7c 7c 20 69 69 20   ii, '2.' || ii 
1b70: 46 52 4f 4d 20 73 73 3b 0a 0a 20 20 57 49 54 48  FROM ss;..  WITH
1b80: 20 73 73 28 69 69 29 20 41 53 20 28 20 53 45 4c   ss(ii) AS ( SEL
1b90: 45 43 54 20 31 20 55 4e 49 4f 4e 20 41 4c 4c 20  ECT 1 UNION ALL 
1ba0: 53 45 4c 45 43 54 20 69 69 2b 31 20 46 52 4f 4d  SELECT ii+1 FROM
1bb0: 20 73 73 20 57 48 45 52 45 20 69 69 3c 31 30 30   ss WHERE ii<100
1bc0: 20 29 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f   ).  INSERT INTO
1bd0: 20 74 62 6c 33 20 53 45 4c 45 43 54 20 69 69 2c   tbl3 SELECT ii,
1be0: 20 27 33 2e 27 20 7c 7c 20 69 69 20 46 52 4f 4d   '3.' || ii FROM
1bf0: 20 73 73 3b 0a 0a 20 20 43 52 45 41 54 45 20 56   ss;..  CREATE V
1c00: 49 52 54 55 41 4c 20 54 41 42 4c 45 20 74 65 6d  IRTUAL TABLE tem
1c10: 70 2e 75 75 20 55 53 49 4e 47 20 75 6e 69 6f 6e  p.uu USING union
1c20: 76 74 61 62 28 0a 20 20 20 20 22 56 41 4c 55 45  vtab(.    "VALUE
1c30: 53 28 4e 55 4c 4c 2c 27 74 62 6c 32 27 2c 20 32  S(NULL,'tbl2', 2
1c40: 36 2c 20 37 34 29 2c 20 28 4e 55 4c 4c 2c 27 74  6, 74), (NULL,'t
1c50: 62 6c 33 27 2c 20 37 35 2c 20 31 30 30 29 2c 20  bl3', 75, 100), 
1c60: 28 4e 55 4c 4c 2c 27 74 62 6c 31 27 2c 20 31 2c  (NULL,'tbl1', 1,
1c70: 20 32 35 29 22 0a 20 20 29 3b 0a 7d 0a 0a 64 6f   25)".  );.}..do
1c80: 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 33 2e  _execsql_test 3.
1c90: 31 20 7b 0a 20 20 53 45 4c 45 43 54 20 2a 20 46  1 {.  SELECT * F
1ca0: 52 4f 4d 20 75 75 20 57 48 45 52 45 20 72 6f 77  ROM uu WHERE row
1cb0: 69 64 20 3d 20 31 30 3b 0a 7d 20 7b 31 30 20 7b  id = 10;.} {10 {
1cc0: 31 2e 31 30 7d 7d 0a 64 6f 5f 65 78 65 63 73 71  1.10}}.do_execsq
1cd0: 6c 5f 74 65 73 74 20 33 2e 32 20 7b 0a 20 20 53  l_test 3.2 {.  S
1ce0: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 75 75 20  ELECT * FROM uu 
1cf0: 57 48 45 52 45 20 72 6f 77 69 64 20 3d 20 32 35  WHERE rowid = 25
1d00: 3b 0a 7d 20 7b 32 35 20 7b 31 2e 32 35 7d 7d 0a  ;.} {25 {1.25}}.
1d10: 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74  .do_execsql_test
1d20: 20 33 2e 33 20 7b 20 53 45 4c 45 43 54 20 63 6f   3.3 { SELECT co
1d30: 75 6e 74 28 2a 29 20 46 52 4f 4d 20 75 75 20 57  unt(*) FROM uu W
1d40: 48 45 52 45 20 72 6f 77 69 64 20 3c 3d 20 32 34  HERE rowid <= 24
1d50: 20 7d 20 7b 32 34 7d 0a 0a 23 20 54 68 65 20 66   } {24}..# The f
1d60: 6f 6c 6c 6f 77 69 6e 67 20 71 75 65 72 69 65 73  ollowing queries
1d70: 20 67 65 74 20 74 68 65 20 22 77 72 6f 6e 67 22   get the "wrong"
1d80: 20 61 6e 73 77 65 72 73 2e 20 54 68 69 73 20 69   answers. This i
1d90: 73 20 62 65 63 61 75 73 65 20 74 68 65 0a 23 20  s because the.# 
1da0: 6d 6f 64 75 6c 65 20 61 73 73 75 6d 65 73 20 74  module assumes t
1db0: 68 61 74 20 65 61 63 68 20 73 6f 75 72 63 65 20  hat each source 
1dc0: 74 61 62 6c 65 20 63 6f 6e 74 61 69 6e 73 20 72  table contains r
1dd0: 6f 77 69 64 73 20 66 72 6f 6d 20 6f 6e 6c 79 20  owids from only 
1de0: 77 69 74 68 69 6e 0a 23 20 74 68 65 20 72 61 6e  within.# the ran
1df0: 67 65 20 73 70 65 63 69 66 69 65 64 2e 20 46 6f  ge specified. Fo
1e00: 72 20 65 78 61 6d 70 6c 65 2c 20 28 72 6f 77 69  r example, (rowi
1e10: 64 20 3c 3d 20 32 35 29 20 6d 61 74 63 68 65 73  d <= 25) matches
1e20: 20 31 30 30 20 72 6f 77 73 2e 20 54 68 69 73 0a   100 rows. This.
1e30: 23 20 69 73 20 62 65 63 61 75 73 65 20 74 68 65  # is because the
1e40: 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d 65 6e   module implemen
1e50: 74 73 20 28 72 6f 77 69 64 20 3c 3d 20 32 35 29  ts (rowid <= 25)
1e60: 20 61 73 20 61 20 66 75 6c 6c 20 74 61 62 6c 65   as a full table
1e70: 20 73 63 61 6e 0a 23 20 6f 66 20 74 62 6c 31 20   scan.# of tbl1 
1e80: 6f 6e 6c 79 2e 0a 64 6f 5f 65 78 65 63 73 71 6c  only..do_execsql
1e90: 5f 74 65 73 74 20 33 2e 34 2e 31 20 7b 20 53 45  _test 3.4.1 { SE
1ea0: 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29 20 46 52  LECT count(*) FR
1eb0: 4f 4d 20 75 75 20 57 48 45 52 45 20 72 6f 77 69  OM uu WHERE rowi
1ec0: 64 20 3c 3d 20 32 35 20 7d 20 7b 31 30 30 7d 0a  d <= 25 } {100}.
1ed0: 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20  do_execsql_test 
1ee0: 33 2e 34 2e 32 20 7b 20 53 45 4c 45 43 54 20 63  3.4.2 { SELECT c
1ef0: 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 75 75 20  ount(*) FROM uu 
1f00: 57 48 45 52 45 20 72 6f 77 69 64 20 3c 3d 20 32  WHERE rowid <= 2
1f10: 36 20 7d 20 7b 31 32 36 7d 0a 64 6f 5f 65 78 65  6 } {126}.do_exe
1f20: 63 73 71 6c 5f 74 65 73 74 20 33 2e 34 2e 33 20  csql_test 3.4.3 
1f30: 7b 20 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a  { SELECT count(*
1f40: 29 20 46 52 4f 4d 20 75 75 20 57 48 45 52 45 20  ) FROM uu WHERE 
1f50: 72 6f 77 69 64 20 3c 3d 20 37 33 20 7d 20 7b 31  rowid <= 73 } {1
1f60: 37 33 7d 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74  73}.do_execsql_t
1f70: 65 73 74 20 33 2e 34 2e 34 20 7b 20 53 45 4c 45  est 3.4.4 { SELE
1f80: 43 54 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d  CT count(*) FROM
1f90: 20 75 75 20 57 48 45 52 45 20 72 6f 77 69 64 20   uu WHERE rowid 
1fa0: 3c 3d 20 37 34 20 7d 20 7b 32 30 30 7d 0a 64 6f  <= 74 } {200}.do
1fb0: 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 33 2e  _execsql_test 3.
1fc0: 34 2e 35 20 7b 20 53 45 4c 45 43 54 20 63 6f 75  4.5 { SELECT cou
1fd0: 6e 74 28 2a 29 20 46 52 4f 4d 20 75 75 20 57 48  nt(*) FROM uu WH
1fe0: 45 52 45 20 72 6f 77 69 64 20 3c 3d 20 37 35 20  ERE rowid <= 75 
1ff0: 7d 20 7b 32 37 35 7d 0a 64 6f 5f 65 78 65 63 73  } {275}.do_execs
2000: 71 6c 5f 74 65 73 74 20 33 2e 34 2e 36 20 7b 20  ql_test 3.4.6 { 
2010: 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29 20  SELECT count(*) 
2020: 46 52 4f 4d 20 75 75 20 57 48 45 52 45 20 72 6f  FROM uu WHERE ro
2030: 77 69 64 20 3c 3d 20 39 39 20 7d 20 7b 32 39 39  wid <= 99 } {299
2040: 7d 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73  }.do_execsql_tes
2050: 74 20 33 2e 34 2e 37 20 7b 20 53 45 4c 45 43 54  t 3.4.7 { SELECT
2060: 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 75   count(*) FROM u
2070: 75 20 57 48 45 52 45 20 72 6f 77 69 64 20 3c 3d  u WHERE rowid <=
2080: 20 31 30 30 20 7d 20 7b 33 30 30 7d 0a 64 6f 5f   100 } {300}.do_
2090: 65 78 65 63 73 71 6c 5f 74 65 73 74 20 33 2e 34  execsql_test 3.4
20a0: 2e 38 20 7b 20 53 45 4c 45 43 54 20 63 6f 75 6e  .8 { SELECT coun
20b0: 74 28 2a 29 20 46 52 4f 4d 20 75 75 20 57 48 45  t(*) FROM uu WHE
20c0: 52 45 20 72 6f 77 69 64 20 3c 3d 20 31 30 31 20  RE rowid <= 101 
20d0: 7d 20 7b 33 30 30 7d 0a 0a 64 6f 5f 65 78 65 63  } {300}..do_exec
20e0: 73 71 6c 5f 74 65 73 74 20 33 2e 35 2e 31 20 7b  sql_test 3.5.1 {
20f0: 20 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29   SELECT count(*)
2100: 20 46 52 4f 4d 20 75 75 20 57 48 45 52 45 20 72   FROM uu WHERE r
2110: 6f 77 69 64 20 3c 20 32 35 20 7d 20 7b 32 34 7d  owid < 25 } {24}
2120: 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74  .do_execsql_test
2130: 20 33 2e 35 2e 32 20 7b 20 53 45 4c 45 43 54 20   3.5.2 { SELECT 
2140: 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 75 75  count(*) FROM uu
2150: 20 57 48 45 52 45 20 72 6f 77 69 64 20 3c 20 32   WHERE rowid < 2
2160: 36 20 7d 20 7b 31 30 30 7d 0a 64 6f 5f 65 78 65  6 } {100}.do_exe
2170: 63 73 71 6c 5f 74 65 73 74 20 33 2e 35 2e 33 20  csql_test 3.5.3 
2180: 7b 20 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a  { SELECT count(*
2190: 29 20 46 52 4f 4d 20 75 75 20 57 48 45 52 45 20  ) FROM uu WHERE 
21a0: 72 6f 77 69 64 20 3c 20 32 37 20 7d 20 7b 31 32  rowid < 27 } {12
21b0: 36 7d 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65  6}.do_execsql_te
21c0: 73 74 20 33 2e 35 2e 34 20 7b 20 53 45 4c 45 43  st 3.5.4 { SELEC
21d0: 54 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20  T count(*) FROM 
21e0: 75 75 20 57 48 45 52 45 20 72 6f 77 69 64 20 3c  uu WHERE rowid <
21f0: 20 37 33 20 7d 20 7b 31 37 32 7d 0a 64 6f 5f 65   73 } {172}.do_e
2200: 78 65 63 73 71 6c 5f 74 65 73 74 20 33 2e 35 2e  xecsql_test 3.5.
2210: 35 20 7b 20 53 45 4c 45 43 54 20 63 6f 75 6e 74  5 { SELECT count
2220: 28 2a 29 20 46 52 4f 4d 20 75 75 20 57 48 45 52  (*) FROM uu WHER
2230: 45 20 72 6f 77 69 64 20 3c 20 37 34 20 7d 20 7b  E rowid < 74 } {
2240: 31 37 33 7d 0a 64 6f 5f 65 78 65 63 73 71 6c 5f  173}.do_execsql_
2250: 74 65 73 74 20 33 2e 35 2e 36 20 7b 20 53 45 4c  test 3.5.6 { SEL
2260: 45 43 54 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f  ECT count(*) FRO
2270: 4d 20 75 75 20 57 48 45 52 45 20 72 6f 77 69 64  M uu WHERE rowid
2280: 20 3c 20 37 35 20 7d 20 7b 32 30 30 7d 0a 64 6f   < 75 } {200}.do
2290: 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 33 2e  _execsql_test 3.
22a0: 35 2e 37 20 7b 20 53 45 4c 45 43 54 20 63 6f 75  5.7 { SELECT cou
22b0: 6e 74 28 2a 29 20 46 52 4f 4d 20 75 75 20 57 48  nt(*) FROM uu WH
22c0: 45 52 45 20 72 6f 77 69 64 20 3c 20 37 36 20 7d  ERE rowid < 76 }
22d0: 20 7b 32 37 35 7d 0a 64 6f 5f 65 78 65 63 73 71   {275}.do_execsq
22e0: 6c 5f 74 65 73 74 20 33 2e 35 2e 38 20 7b 20 53  l_test 3.5.8 { S
22f0: 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29 20 46  ELECT count(*) F
2300: 52 4f 4d 20 75 75 20 57 48 45 52 45 20 72 6f 77  ROM uu WHERE row
2310: 69 64 20 3c 20 39 39 20 7d 20 7b 32 39 38 7d 0a  id < 99 } {298}.
2320: 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20  do_execsql_test 
2330: 33 2e 35 2e 39 20 7b 20 53 45 4c 45 43 54 20 63  3.5.9 { SELECT c
2340: 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 75 75 20  ount(*) FROM uu 
2350: 57 48 45 52 45 20 72 6f 77 69 64 20 3c 20 31 30  WHERE rowid < 10
2360: 30 20 7d 20 7b 32 39 39 7d 0a 64 6f 5f 65 78 65  0 } {299}.do_exe
2370: 63 73 71 6c 5f 74 65 73 74 20 33 2e 35 2e 31 30  csql_test 3.5.10
2380: 20 7b 20 53 45 4c 45 43 54 20 63 6f 75 6e 74 28   { SELECT count(
2390: 2a 29 20 46 52 4f 4d 20 75 75 20 57 48 45 52 45  *) FROM uu WHERE
23a0: 20 72 6f 77 69 64 20 3c 20 31 30 31 20 7d 20 7b   rowid < 101 } {
23b0: 33 30 30 7d 0a 0a 64 6f 5f 65 78 65 63 73 71 6c  300}..do_execsql
23c0: 5f 74 65 73 74 20 33 2e 36 2e 31 20 7b 20 53 45  _test 3.6.1 { SE
23d0: 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29 20 46 52  LECT count(*) FR
23e0: 4f 4d 20 75 75 20 57 48 45 52 45 20 72 6f 77 69  OM uu WHERE rowi
23f0: 64 20 3e 20 32 34 20 7d 20 7b 32 37 36 7d 0a 64  d > 24 } {276}.d
2400: 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 33  o_execsql_test 3
2410: 2e 36 2e 31 20 7b 20 53 45 4c 45 43 54 20 63 6f  .6.1 { SELECT co
2420: 75 6e 74 28 2a 29 20 46 52 4f 4d 20 75 75 20 57  unt(*) FROM uu W
2430: 48 45 52 45 20 72 6f 77 69 64 20 3e 20 32 35 20  HERE rowid > 25 
2440: 7d 20 7b 32 30 30 7d 0a 64 6f 5f 65 78 65 63 73  } {200}.do_execs
2450: 71 6c 5f 74 65 73 74 20 33 2e 36 2e 32 20 7b 20  ql_test 3.6.2 { 
2460: 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29 20  SELECT count(*) 
2470: 46 52 4f 4d 20 75 75 20 57 48 45 52 45 20 72 6f  FROM uu WHERE ro
2480: 77 69 64 20 3e 20 32 36 20 7d 20 7b 31 37 34 7d  wid > 26 } {174}
2490: 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74  .do_execsql_test
24a0: 20 33 2e 36 2e 33 20 7b 20 53 45 4c 45 43 54 20   3.6.3 { SELECT 
24b0: 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 75 75  count(*) FROM uu
24c0: 20 57 48 45 52 45 20 72 6f 77 69 64 20 3e 20 32   WHERE rowid > 2
24d0: 37 20 7d 20 7b 31 37 33 7d 0a 64 6f 5f 65 78 65  7 } {173}.do_exe
24e0: 63 73 71 6c 5f 74 65 73 74 20 33 2e 36 2e 34 20  csql_test 3.6.4 
24f0: 7b 20 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a  { SELECT count(*
2500: 29 20 46 52 4f 4d 20 75 75 20 57 48 45 52 45 20  ) FROM uu WHERE 
2510: 72 6f 77 69 64 20 3e 20 37 33 20 7d 20 7b 31 32  rowid > 73 } {12
2520: 37 7d 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65  7}.do_execsql_te
2530: 73 74 20 33 2e 36 2e 35 20 7b 20 53 45 4c 45 43  st 3.6.5 { SELEC
2540: 54 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20  T count(*) FROM 
2550: 75 75 20 57 48 45 52 45 20 72 6f 77 69 64 20 3e  uu WHERE rowid >
2560: 20 37 34 20 7d 20 7b 31 30 30 7d 0a 64 6f 5f 65   74 } {100}.do_e
2570: 78 65 63 73 71 6c 5f 74 65 73 74 20 33 2e 36 2e  xecsql_test 3.6.
2580: 36 20 7b 20 53 45 4c 45 43 54 20 63 6f 75 6e 74  6 { SELECT count
2590: 28 2a 29 20 46 52 4f 4d 20 75 75 20 57 48 45 52  (*) FROM uu WHER
25a0: 45 20 72 6f 77 69 64 20 3e 20 37 35 20 7d 20 7b  E rowid > 75 } {
25b0: 32 35 7d 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74  25}.do_execsql_t
25c0: 65 73 74 20 33 2e 36 2e 37 20 7b 20 53 45 4c 45  est 3.6.7 { SELE
25d0: 43 54 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d  CT count(*) FROM
25e0: 20 75 75 20 57 48 45 52 45 20 72 6f 77 69 64 20   uu WHERE rowid 
25f0: 3e 20 37 36 20 7d 20 7b 32 34 7d 0a 64 6f 5f 65  > 76 } {24}.do_e
2600: 78 65 63 73 71 6c 5f 74 65 73 74 20 33 2e 36 2e  xecsql_test 3.6.
2610: 38 20 7b 20 53 45 4c 45 43 54 20 63 6f 75 6e 74  8 { SELECT count
2620: 28 2a 29 20 46 52 4f 4d 20 75 75 20 57 48 45 52  (*) FROM uu WHER
2630: 45 20 72 6f 77 69 64 20 3e 20 39 39 20 7d 20 7b  E rowid > 99 } {
2640: 31 7d 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65  1}.do_execsql_te
2650: 73 74 20 33 2e 36 2e 39 20 7b 20 53 45 4c 45 43  st 3.6.9 { SELEC
2660: 54 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20  T count(*) FROM 
2670: 75 75 20 57 48 45 52 45 20 72 6f 77 69 64 20 3e  uu WHERE rowid >
2680: 20 31 30 30 20 7d 20 7b 30 7d 0a 64 6f 5f 65 78   100 } {0}.do_ex
2690: 65 63 73 71 6c 5f 74 65 73 74 20 33 2e 36 2e 31  ecsql_test 3.6.1
26a0: 30 20 7b 20 53 45 4c 45 43 54 20 63 6f 75 6e 74  0 { SELECT count
26b0: 28 2a 29 20 46 52 4f 4d 20 75 75 20 57 48 45 52  (*) FROM uu WHER
26c0: 45 20 72 6f 77 69 64 20 3e 20 31 30 31 20 7d 20  E rowid > 101 } 
26d0: 7b 30 7d 0a 0a 64 6f 5f 65 78 65 63 73 71 6c 5f  {0}..do_execsql_
26e0: 74 65 73 74 20 33 2e 37 2e 31 20 7b 20 53 45 4c  test 3.7.1 { SEL
26f0: 45 43 54 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f  ECT count(*) FRO
2700: 4d 20 75 75 20 57 48 45 52 45 20 72 6f 77 69 64  M uu WHERE rowid
2710: 20 3e 3d 20 32 34 20 7d 20 7b 32 37 37 7d 0a 64   >= 24 } {277}.d
2720: 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 33  o_execsql_test 3
2730: 2e 37 2e 31 20 7b 20 53 45 4c 45 43 54 20 63 6f  .7.1 { SELECT co
2740: 75 6e 74 28 2a 29 20 46 52 4f 4d 20 75 75 20 57  unt(*) FROM uu W
2750: 48 45 52 45 20 72 6f 77 69 64 20 3e 3d 20 32 35  HERE rowid >= 25
2760: 20 7d 20 7b 32 37 36 7d 0a 64 6f 5f 65 78 65 63   } {276}.do_exec
2770: 73 71 6c 5f 74 65 73 74 20 33 2e 37 2e 32 20 7b  sql_test 3.7.2 {
2780: 20 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29   SELECT count(*)
2790: 20 46 52 4f 4d 20 75 75 20 57 48 45 52 45 20 72   FROM uu WHERE r
27a0: 6f 77 69 64 20 3e 3d 20 32 36 20 7d 20 7b 32 30  owid >= 26 } {20
27b0: 30 7d 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65  0}.do_execsql_te
27c0: 73 74 20 33 2e 37 2e 33 20 7b 20 53 45 4c 45 43  st 3.7.3 { SELEC
27d0: 54 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20  T count(*) FROM 
27e0: 75 75 20 57 48 45 52 45 20 72 6f 77 69 64 20 3e  uu WHERE rowid >
27f0: 3d 20 32 37 20 7d 20 7b 31 37 34 7d 0a 64 6f 5f  = 27 } {174}.do_
2800: 65 78 65 63 73 71 6c 5f 74 65 73 74 20 33 2e 37  execsql_test 3.7
2810: 2e 34 20 7b 20 53 45 4c 45 43 54 20 63 6f 75 6e  .4 { SELECT coun
2820: 74 28 2a 29 20 46 52 4f 4d 20 75 75 20 57 48 45  t(*) FROM uu WHE
2830: 52 45 20 72 6f 77 69 64 20 3e 3d 20 37 33 20 7d  RE rowid >= 73 }
2840: 20 7b 31 32 38 7d 0a 64 6f 5f 65 78 65 63 73 71   {128}.do_execsq
2850: 6c 5f 74 65 73 74 20 33 2e 37 2e 35 20 7b 20 53  l_test 3.7.5 { S
2860: 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29 20 46  ELECT count(*) F
2870: 52 4f 4d 20 75 75 20 57 48 45 52 45 20 72 6f 77  ROM uu WHERE row
2880: 69 64 20 3e 3d 20 37 34 20 7d 20 7b 31 32 37 7d  id >= 74 } {127}
2890: 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74  .do_execsql_test
28a0: 20 33 2e 37 2e 36 20 7b 20 53 45 4c 45 43 54 20   3.7.6 { SELECT 
28b0: 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 75 75  count(*) FROM uu
28c0: 20 57 48 45 52 45 20 72 6f 77 69 64 20 3e 3d 20   WHERE rowid >= 
28d0: 37 35 20 7d 20 7b 31 30 30 7d 0a 64 6f 5f 65 78  75 } {100}.do_ex
28e0: 65 63 73 71 6c 5f 74 65 73 74 20 33 2e 37 2e 37  ecsql_test 3.7.7
28f0: 20 7b 20 53 45 4c 45 43 54 20 63 6f 75 6e 74 28   { SELECT count(
2900: 2a 29 20 46 52 4f 4d 20 75 75 20 57 48 45 52 45  *) FROM uu WHERE
2910: 20 72 6f 77 69 64 20 3e 3d 20 37 36 20 7d 20 7b   rowid >= 76 } {
2920: 32 35 7d 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74  25}.do_execsql_t
2930: 65 73 74 20 33 2e 37 2e 38 20 7b 20 53 45 4c 45  est 3.7.8 { SELE
2940: 43 54 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d  CT count(*) FROM
2950: 20 75 75 20 57 48 45 52 45 20 72 6f 77 69 64 20   uu WHERE rowid 
2960: 3e 3d 20 39 39 20 7d 20 7b 32 7d 0a 64 6f 5f 65  >= 99 } {2}.do_e
2970: 78 65 63 73 71 6c 5f 74 65 73 74 20 33 2e 37 2e  xecsql_test 3.7.
2980: 39 20 7b 20 53 45 4c 45 43 54 20 63 6f 75 6e 74  9 { SELECT count
2990: 28 2a 29 20 46 52 4f 4d 20 75 75 20 57 48 45 52  (*) FROM uu WHER
29a0: 45 20 72 6f 77 69 64 20 3e 3d 20 31 30 30 20 7d  E rowid >= 100 }
29b0: 20 7b 31 7d 0a 64 6f 5f 65 78 65 63 73 71 6c 5f   {1}.do_execsql_
29c0: 74 65 73 74 20 33 2e 37 2e 31 30 20 7b 20 53 45  test 3.7.10 { SE
29d0: 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29 20 46 52  LECT count(*) FR
29e0: 4f 4d 20 75 75 20 57 48 45 52 45 20 72 6f 77 69  OM uu WHERE rowi
29f0: 64 20 3e 3d 20 31 30 31 20 7d 20 7b 30 7d 0a 0a  d >= 101 } {0}..
2a00: 73 65 74 20 4c 20 5b 65 78 70 72 20 20 39 32 32  set L [expr  922
2a10: 33 33 37 32 30 33 36 38 35 34 37 37 35 38 30 37  3372036854775807
2a20: 5d 0a 73 65 74 20 53 20 5b 65 78 70 72 20 2d 39  ].set S [expr -9
2a30: 32 32 33 33 37 32 30 33 36 38 35 34 37 37 35 38  2233720368547758
2a40: 30 38 5d 0a 0a 64 6f 5f 65 78 65 63 73 71 6c 5f  08]..do_execsql_
2a50: 74 65 73 74 20 33 2e 38 2e 31 20 7b 20 53 45 4c  test 3.8.1 { SEL
2a60: 45 43 54 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f  ECT count(*) FRO
2a70: 4d 20 75 75 20 57 48 45 52 45 20 72 6f 77 69 64  M uu WHERE rowid
2a80: 20 3e 3d 20 24 53 20 7d 20 7b 33 30 30 7d 0a 64   >= $S } {300}.d
2a90: 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 33  o_execsql_test 3
2aa0: 2e 38 2e 32 20 7b 20 53 45 4c 45 43 54 20 63 6f  .8.2 { SELECT co
2ab0: 75 6e 74 28 2a 29 20 46 52 4f 4d 20 75 75 20 57  unt(*) FROM uu W
2ac0: 48 45 52 45 20 72 6f 77 69 64 20 3e 20 20 24 53  HERE rowid >  $S
2ad0: 20 7d 20 7b 33 30 30 7d 0a 64 6f 5f 65 78 65 63   } {300}.do_exec
2ae0: 73 71 6c 5f 74 65 73 74 20 33 2e 38 2e 33 20 7b  sql_test 3.8.3 {
2af0: 20 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29   SELECT count(*)
2b00: 20 46 52 4f 4d 20 75 75 20 57 48 45 52 45 20 72   FROM uu WHERE r
2b10: 6f 77 69 64 20 3c 3d 20 24 53 20 7d 20 7b 30 7d  owid <= $S } {0}
2b20: 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74  .do_execsql_test
2b30: 20 33 2e 38 2e 34 20 7b 20 53 45 4c 45 43 54 20   3.8.4 { SELECT 
2b40: 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 75 75  count(*) FROM uu
2b50: 20 57 48 45 52 45 20 72 6f 77 69 64 20 3c 20 20   WHERE rowid <  
2b60: 24 53 20 7d 20 7b 30 7d 0a 0a 64 6f 5f 65 78 65  $S } {0}..do_exe
2b70: 63 73 71 6c 5f 74 65 73 74 20 33 2e 39 2e 31 20  csql_test 3.9.1 
2b80: 7b 20 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a  { SELECT count(*
2b90: 29 20 46 52 4f 4d 20 75 75 20 57 48 45 52 45 20  ) FROM uu WHERE 
2ba0: 72 6f 77 69 64 20 3e 3d 20 24 4c 20 7d 20 7b 30  rowid >= $L } {0
2bb0: 7d 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73  }.do_execsql_tes
2bc0: 74 20 33 2e 39 2e 32 20 7b 20 53 45 4c 45 43 54  t 3.9.2 { SELECT
2bd0: 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 75   count(*) FROM u
2be0: 75 20 57 48 45 52 45 20 72 6f 77 69 64 20 3e 20  u WHERE rowid > 
2bf0: 20 24 4c 20 7d 20 7b 30 7d 0a 64 6f 5f 65 78 65   $L } {0}.do_exe
2c00: 63 73 71 6c 5f 74 65 73 74 20 33 2e 39 2e 33 20  csql_test 3.9.3 
2c10: 7b 20 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a  { SELECT count(*
2c20: 29 20 46 52 4f 4d 20 75 75 20 57 48 45 52 45 20  ) FROM uu WHERE 
2c30: 72 6f 77 69 64 20 3c 3d 20 24 4c 20 7d 20 7b 33  rowid <= $L } {3
2c40: 30 30 7d 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74  00}.do_execsql_t
2c50: 65 73 74 20 33 2e 39 2e 34 20 7b 20 53 45 4c 45  est 3.9.4 { SELE
2c60: 43 54 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d  CT count(*) FROM
2c70: 20 75 75 20 57 48 45 52 45 20 72 6f 77 69 64 20   uu WHERE rowid 
2c80: 3c 20 20 24 4c 20 7d 20 7b 33 30 30 7d 0a 0a 64  <  $L } {300}..d
2c90: 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 33  o_execsql_test 3
2ca0: 2e 31 30 2e 31 20 7b 20 53 45 4c 45 43 54 20 63  .10.1 { SELECT c
2cb0: 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 75 75 20  ount(*) FROM uu 
2cc0: 57 48 45 52 45 20 61 20 3c 20 32 35 20 7d 20 7b  WHERE a < 25 } {
2cd0: 32 34 7d 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74  24}.do_execsql_t
2ce0: 65 73 74 20 33 2e 31 30 2e 32 20 7b 20 53 45 4c  est 3.10.2 { SEL
2cf0: 45 43 54 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f  ECT count(*) FRO
2d00: 4d 20 75 75 20 57 48 45 52 45 20 61 20 3c 20 32  M uu WHERE a < 2
2d10: 36 20 7d 20 7b 31 30 30 7d 0a 64 6f 5f 65 78 65  6 } {100}.do_exe
2d20: 63 73 71 6c 5f 74 65 73 74 20 33 2e 31 30 2e 33  csql_test 3.10.3
2d30: 20 7b 20 53 45 4c 45 43 54 20 63 6f 75 6e 74 28   { SELECT count(
2d40: 2a 29 20 46 52 4f 4d 20 75 75 20 57 48 45 52 45  *) FROM uu WHERE
2d50: 20 61 20 3c 20 32 37 20 7d 20 7b 31 32 36 7d 0a   a < 27 } {126}.
2d60: 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20  do_execsql_test 
2d70: 33 2e 31 30 2e 34 20 7b 20 53 45 4c 45 43 54 20  3.10.4 { SELECT 
2d80: 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 75 75  count(*) FROM uu
2d90: 20 57 48 45 52 45 20 61 20 3c 20 37 33 20 7d 20   WHERE a < 73 } 
2da0: 7b 31 37 32 7d 0a 64 6f 5f 65 78 65 63 73 71 6c  {172}.do_execsql
2db0: 5f 74 65 73 74 20 33 2e 31 30 2e 35 20 7b 20 53  _test 3.10.5 { S
2dc0: 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29 20 46  ELECT count(*) F
2dd0: 52 4f 4d 20 75 75 20 57 48 45 52 45 20 61 20 3c  ROM uu WHERE a <
2de0: 20 37 34 20 7d 20 7b 31 37 33 7d 0a 64 6f 5f 65   74 } {173}.do_e
2df0: 78 65 63 73 71 6c 5f 74 65 73 74 20 33 2e 31 30  xecsql_test 3.10
2e00: 2e 36 20 7b 20 53 45 4c 45 43 54 20 63 6f 75 6e  .6 { SELECT coun
2e10: 74 28 2a 29 20 46 52 4f 4d 20 75 75 20 57 48 45  t(*) FROM uu WHE
2e20: 52 45 20 61 20 3c 20 37 35 20 7d 20 7b 32 30 30  RE a < 75 } {200
2e30: 7d 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73  }.do_execsql_tes
2e40: 74 20 33 2e 31 30 2e 37 20 7b 20 53 45 4c 45 43  t 3.10.7 { SELEC
2e50: 54 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20  T count(*) FROM 
2e60: 75 75 20 57 48 45 52 45 20 61 20 3c 20 37 36 20  uu WHERE a < 76 
2e70: 7d 20 7b 32 37 35 7d 0a 64 6f 5f 65 78 65 63 73  } {275}.do_execs
2e80: 71 6c 5f 74 65 73 74 20 33 2e 31 30 2e 38 20 7b  ql_test 3.10.8 {
2e90: 20 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29   SELECT count(*)
2ea0: 20 46 52 4f 4d 20 75 75 20 57 48 45 52 45 20 61   FROM uu WHERE a
2eb0: 20 3c 20 39 39 20 7d 20 7b 32 39 38 7d 0a 64 6f   < 99 } {298}.do
2ec0: 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 33 2e  _execsql_test 3.
2ed0: 31 30 2e 39 20 7b 20 53 45 4c 45 43 54 20 63 6f  10.9 { SELECT co
2ee0: 75 6e 74 28 2a 29 20 46 52 4f 4d 20 75 75 20 57  unt(*) FROM uu W
2ef0: 48 45 52 45 20 61 20 3c 20 31 30 30 20 7d 20 7b  HERE a < 100 } {
2f00: 32 39 39 7d 0a 64 6f 5f 65 78 65 63 73 71 6c 5f  299}.do_execsql_
2f10: 74 65 73 74 20 33 2e 31 30 2e 31 30 20 7b 20 53  test 3.10.10 { S
2f20: 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29 20 46  ELECT count(*) F
2f30: 52 4f 4d 20 75 75 20 57 48 45 52 45 20 61 20 3c  ROM uu WHERE a <
2f40: 20 31 30 31 20 7d 20 7b 33 30 30 7d 0a 0a 0a 23   101 } {300}...#
2f50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2f60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2f70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2f80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2f90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 0a 64 6f 5f 65  ---------.#.do_e
2fa0: 78 65 63 73 71 6c 5f 74 65 73 74 20 34 2e 30 20  xecsql_test 4.0 
2fb0: 7b 0a 20 20 43 52 45 41 54 45 20 54 41 42 4c 45  {.  CREATE TABLE
2fc0: 20 73 31 28 6b 20 49 4e 54 45 47 45 52 20 50 52   s1(k INTEGER PR
2fd0: 49 4d 41 52 59 20 4b 45 59 2c 20 76 29 3b 0a 20  IMARY KEY, v);. 
2fe0: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 73 31 20   INSERT INTO s1 
2ff0: 56 41 4c 55 45 53 28 24 53 2c 20 27 6f 6e 65 27  VALUES($S, 'one'
3000: 29 3b 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f  );.  INSERT INTO
3010: 20 73 31 20 56 41 4c 55 45 53 28 24 53 2b 31 2c   s1 VALUES($S+1,
3020: 20 27 74 77 6f 27 29 3b 0a 20 20 49 4e 53 45 52   'two');.  INSER
3030: 54 20 49 4e 54 4f 20 73 31 20 56 41 4c 55 45 53  T INTO s1 VALUES
3040: 28 24 53 2b 32 2c 20 27 74 68 72 65 65 27 29 3b  ($S+2, 'three');
3050: 0a 0a 20 20 43 52 45 41 54 45 20 54 41 42 4c 45  ..  CREATE TABLE
3060: 20 6c 31 28 6b 20 49 4e 54 45 47 45 52 20 50 52   l1(k INTEGER PR
3070: 49 4d 41 52 59 20 4b 45 59 2c 20 76 29 3b 0a 20  IMARY KEY, v);. 
3080: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 6c 31 20   INSERT INTO l1 
3090: 56 41 4c 55 45 53 28 24 4c 2c 20 27 73 69 78 27  VALUES($L, 'six'
30a0: 29 3b 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f  );.  INSERT INTO
30b0: 20 6c 31 20 56 41 4c 55 45 53 28 24 4c 2d 31 2c   l1 VALUES($L-1,
30c0: 20 27 66 69 76 65 27 29 3b 0a 20 20 49 4e 53 45   'five');.  INSE
30d0: 52 54 20 49 4e 54 4f 20 6c 31 20 56 41 4c 55 45  RT INTO l1 VALUE
30e0: 53 28 24 4c 2d 32 2c 20 27 66 6f 75 72 27 29 3b  S($L-2, 'four');
30f0: 0a 0a 20 20 43 52 45 41 54 45 20 56 49 52 54 55  ..  CREATE VIRTU
3100: 41 4c 20 54 41 42 4c 45 20 74 65 6d 70 2e 73 6c  AL TABLE temp.sl
3110: 20 55 53 49 4e 47 20 75 6e 69 6f 6e 76 74 61 62   USING unionvtab
3120: 28 0a 20 20 20 20 22 53 45 4c 45 43 54 20 4e 55  (.    "SELECT NU
3130: 4c 4c 2c 20 27 6c 31 27 2c 20 30 2c 20 39 32 32  LL, 'l1', 0, 922
3140: 33 33 37 32 30 33 36 38 35 34 37 37 35 38 30 37  3372036854775807
3150: 0a 20 20 20 20 20 55 4e 49 4f 4e 20 41 4c 4c 0a  .     UNION ALL.
3160: 20 20 20 20 20 53 45 4c 45 43 54 20 4e 55 4c 4c       SELECT NULL
3170: 2c 20 27 73 31 27 2c 20 2d 39 32 32 33 33 37 32  , 's1', -9223372
3180: 30 33 36 38 35 34 37 37 35 38 30 38 2c 20 2d 31  036854775808, -1
3190: 22 0a 20 20 29 3b 0a 7d 0a 0a 64 6f 5f 65 78 65  ".  );.}..do_exe
31a0: 63 73 71 6c 5f 74 65 73 74 20 34 2e 31 20 7b 0a  csql_test 4.1 {.
31b0: 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20    SELECT * FROM 
31c0: 73 6c 3b 0a 7d 20 7b 0a 20 20 2d 39 32 32 33 33  sl;.} {.  -92233
31d0: 37 32 30 33 36 38 35 34 37 37 35 38 30 38 20 6f  72036854775808 o
31e0: 6e 65 20 2d 39 32 32 33 33 37 32 30 33 36 38 35  ne -922337203685
31f0: 34 37 37 35 38 30 37 20 74 77 6f 20 2d 39 32 32  4775807 two -922
3200: 33 33 37 32 30 33 36 38 35 34 37 37 35 38 30 36  3372036854775806
3210: 20 74 68 72 65 65 0a 20 20 20 39 32 32 33 33 37   three.   922337
3220: 32 30 33 36 38 35 34 37 37 35 38 30 35 20 66 6f  2036854775805 fo
3230: 75 72 20 39 32 32 33 33 37 32 30 33 36 38 35 34  ur 9223372036854
3240: 37 37 35 38 30 36 20 66 69 76 65 20 39 32 32 33  775806 five 9223
3250: 33 37 32 30 33 36 38 35 34 37 37 35 38 30 37 20  372036854775807 
3260: 73 69 78 0a 7d 0a 0a 66 6f 72 65 61 63 68 20 7b  six.}..foreach {
3270: 6b 20 76 7d 20 7b 0a 20 20 2d 39 32 32 33 33 37  k v} {.  -922337
3280: 32 30 33 36 38 35 34 37 37 35 38 30 38 20 6f 6e  2036854775808 on
3290: 65 20 2d 39 32 32 33 33 37 32 30 33 36 38 35 34  e -9223372036854
32a0: 37 37 35 38 30 37 20 74 77 6f 20 2d 39 32 32 33  775807 two -9223
32b0: 33 37 32 30 33 36 38 35 34 37 37 35 38 30 36 20  372036854775806 
32c0: 74 68 72 65 65 0a 20 20 20 39 32 32 33 33 37 32  three.   9223372
32d0: 30 33 36 38 35 34 37 37 35 38 30 35 20 66 6f 75  036854775805 fou
32e0: 72 20 39 32 32 33 33 37 32 30 33 36 38 35 34 37  r 92233720368547
32f0: 37 35 38 30 36 20 66 69 76 65 20 39 32 32 33 33  75806 five 92233
3300: 37 32 30 33 36 38 35 34 37 37 35 38 30 37 20 73  72036854775807 s
3310: 69 78 0a 7d 20 7b 0a 20 20 64 6f 5f 65 78 65 63  ix.} {.  do_exec
3320: 73 71 6c 5f 74 65 73 74 20 34 2e 32 2e 24 76 20  sql_test 4.2.$v 
3330: 7b 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  { SELECT * FROM 
3340: 73 6c 20 57 48 45 52 45 20 72 6f 77 69 64 3d 24  sl WHERE rowid=$
3350: 6b 20 7d 20 5b 6c 69 73 74 20 24 6b 20 24 76 5d  k } [list $k $v]
3360: 0a 7d 0a 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74  .}..do_execsql_t
3370: 65 73 74 20 34 2e 33 2e 31 20 7b 0a 20 20 53 45  est 4.3.1 {.  SE
3380: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 73 6c 20 57  LECT * FROM sl W
3390: 48 45 52 45 20 72 6f 77 69 64 3e 2d 39 32 32 33  HERE rowid>-9223
33a0: 33 37 32 30 33 36 38 35 34 37 37 35 38 30 38 0a  372036854775808.
33b0: 7d 20 7b 0a 20 20 2d 39 32 32 33 33 37 32 30 33  } {.  -922337203
33c0: 36 38 35 34 37 37 35 38 30 37 20 74 77 6f 20 2d  6854775807 two -
33d0: 39 32 32 33 33 37 32 30 33 36 38 35 34 37 37 35  9223372036854775
33e0: 38 30 36 20 74 68 72 65 65 0a 20 20 20 39 32 32  806 three.   922
33f0: 33 33 37 32 30 33 36 38 35 34 37 37 35 38 30 35  3372036854775805
3400: 20 66 6f 75 72 20 39 32 32 33 33 37 32 30 33 36   four 9223372036
3410: 38 35 34 37 37 35 38 30 36 20 66 69 76 65 20 39  854775806 five 9
3420: 32 32 33 33 37 32 30 33 36 38 35 34 37 37 35 38  2233720368547758
3430: 30 37 20 73 69 78 0a 7d 0a 64 6f 5f 65 78 65 63  07 six.}.do_exec
3440: 73 71 6c 5f 74 65 73 74 20 34 2e 33 2e 32 20 7b  sql_test 4.3.2 {
3450: 0a 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  .  SELECT * FROM
3460: 20 73 6c 20 57 48 45 52 45 20 72 6f 77 69 64 3e   sl WHERE rowid>
3470: 3d 2d 39 32 32 33 33 37 32 30 33 36 38 35 34 37  =-92233720368547
3480: 37 35 38 30 38 0a 7d 20 7b 0a 20 20 2d 39 32 32  75808.} {.  -922
3490: 33 33 37 32 30 33 36 38 35 34 37 37 35 38 30 38  3372036854775808
34a0: 20 6f 6e 65 20 2d 39 32 32 33 33 37 32 30 33 36   one -9223372036
34b0: 38 35 34 37 37 35 38 30 37 20 74 77 6f 20 2d 39  854775807 two -9
34c0: 32 32 33 33 37 32 30 33 36 38 35 34 37 37 35 38  2233720368547758
34d0: 30 36 20 74 68 72 65 65 0a 20 20 20 39 32 32 33  06 three.   9223
34e0: 33 37 32 30 33 36 38 35 34 37 37 35 38 30 35 20  372036854775805 
34f0: 66 6f 75 72 20 39 32 32 33 33 37 32 30 33 36 38  four 92233720368
3500: 35 34 37 37 35 38 30 36 20 66 69 76 65 20 39 32  54775806 five 92
3510: 32 33 33 37 32 30 33 36 38 35 34 37 37 35 38 30  2337203685477580
3520: 37 20 73 69 78 0a 7d 0a 64 6f 5f 65 78 65 63 73  7 six.}.do_execs
3530: 71 6c 5f 74 65 73 74 20 34 2e 33 2e 33 20 7b 0a  ql_test 4.3.3 {.
3540: 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20    SELECT * FROM 
3550: 73 6c 20 57 48 45 52 45 20 72 6f 77 69 64 3c 3d  sl WHERE rowid<=
3560: 2d 39 32 32 33 33 37 32 30 33 36 38 35 34 37 37  -922337203685477
3570: 35 38 30 38 0a 7d 20 7b 0a 20 20 2d 39 32 32 33  5808.} {.  -9223
3580: 33 37 32 30 33 36 38 35 34 37 37 35 38 30 38 20  372036854775808 
3590: 6f 6e 65 0a 7d 0a 64 6f 5f 65 78 65 63 73 71 6c  one.}.do_execsql
35a0: 5f 74 65 73 74 20 34 2e 33 2e 34 20 7b 0a 20 20  _test 4.3.4 {.  
35b0: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 73 6c  SELECT * FROM sl
35c0: 20 57 48 45 52 45 20 72 6f 77 69 64 3c 2d 39 32   WHERE rowid<-92
35d0: 32 33 33 37 32 30 33 36 38 35 34 37 37 35 38 30  2337203685477580
35e0: 38 0a 7d 20 7b 7d 0a 0a 64 6f 5f 65 78 65 63 73  8.} {}..do_execs
35f0: 71 6c 5f 74 65 73 74 20 34 2e 34 2e 31 20 7b 0a  ql_test 4.4.1 {.
3600: 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20    SELECT * FROM 
3610: 73 6c 20 57 48 45 52 45 20 72 6f 77 69 64 3c 39  sl WHERE rowid<9
3620: 32 32 33 33 37 32 30 33 36 38 35 34 37 37 35 38  2233720368547758
3630: 30 37 0a 7d 20 7b 0a 20 20 2d 39 32 32 33 33 37  07.} {.  -922337
3640: 32 30 33 36 38 35 34 37 37 35 38 30 38 20 6f 6e  2036854775808 on
3650: 65 20 2d 39 32 32 33 33 37 32 30 33 36 38 35 34  e -9223372036854
3660: 37 37 35 38 30 37 20 74 77 6f 20 2d 39 32 32 33  775807 two -9223
3670: 33 37 32 30 33 36 38 35 34 37 37 35 38 30 36 20  372036854775806 
3680: 74 68 72 65 65 0a 20 20 20 39 32 32 33 33 37 32  three.   9223372
3690: 30 33 36 38 35 34 37 37 35 38 30 35 20 66 6f 75  036854775805 fou
36a0: 72 20 39 32 32 33 33 37 32 30 33 36 38 35 34 37  r 92233720368547
36b0: 37 35 38 30 36 20 66 69 76 65 0a 7d 0a 64 6f 5f  75806 five.}.do_
36c0: 65 78 65 63 73 71 6c 5f 74 65 73 74 20 34 2e 34  execsql_test 4.4
36d0: 2e 32 20 7b 0a 20 20 53 45 4c 45 43 54 20 2a 20  .2 {.  SELECT * 
36e0: 46 52 4f 4d 20 73 6c 20 57 48 45 52 45 20 72 6f  FROM sl WHERE ro
36f0: 77 69 64 3c 3d 39 32 32 33 33 37 32 30 33 36 38  wid<=92233720368
3700: 35 34 37 37 35 38 30 37 0a 7d 20 7b 0a 20 20 2d  54775807.} {.  -
3710: 39 32 32 33 33 37 32 30 33 36 38 35 34 37 37 35  9223372036854775
3720: 38 30 38 20 6f 6e 65 20 2d 39 32 32 33 33 37 32  808 one -9223372
3730: 30 33 36 38 35 34 37 37 35 38 30 37 20 74 77 6f  036854775807 two
3740: 20 2d 39 32 32 33 33 37 32 30 33 36 38 35 34 37   -92233720368547
3750: 37 35 38 30 36 20 74 68 72 65 65 0a 20 20 20 39  75806 three.   9
3760: 32 32 33 33 37 32 30 33 36 38 35 34 37 37 35 38  2233720368547758
3770: 30 35 20 66 6f 75 72 20 39 32 32 33 33 37 32 30  05 four 92233720
3780: 33 36 38 35 34 37 37 35 38 30 36 20 66 69 76 65  36854775806 five
3790: 20 39 32 32 33 33 37 32 30 33 36 38 35 34 37 37   922337203685477
37a0: 35 38 30 37 20 73 69 78 0a 7d 0a 64 6f 5f 65 78  5807 six.}.do_ex
37b0: 65 63 73 71 6c 5f 74 65 73 74 20 34 2e 34 2e 33  ecsql_test 4.4.3
37c0: 20 7b 0a 20 20 53 45 4c 45 43 54 20 2a 20 46 52   {.  SELECT * FR
37d0: 4f 4d 20 73 6c 20 57 48 45 52 45 20 72 6f 77 69  OM sl WHERE rowi
37e0: 64 3e 3d 39 32 32 33 33 37 32 30 33 36 38 35 34  d>=9223372036854
37f0: 37 37 35 38 30 37 0a 7d 20 7b 0a 20 20 39 32 32  775807.} {.  922
3800: 33 33 37 32 30 33 36 38 35 34 37 37 35 38 30 37  3372036854775807
3810: 20 73 69 78 0a 7d 0a 64 6f 5f 65 78 65 63 73 71   six.}.do_execsq
3820: 6c 5f 74 65 73 74 20 34 2e 34 2e 34 20 7b 0a 20  l_test 4.4.4 {. 
3830: 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 73   SELECT * FROM s
3840: 6c 20 57 48 45 52 45 20 72 6f 77 69 64 3e 39 32  l WHERE rowid>92
3850: 32 33 33 37 32 30 33 36 38 35 34 37 37 35 38 30  2337203685477580
3860: 37 0a 7d 20 7b 7d 0a 0a 23 2d 2d 2d 2d 2d 2d 2d  7.} {}..#-------
3870: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3880: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3890: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
38a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
38b0: 2d 2d 0a 23 20 4d 6f 72 65 20 74 68 61 6e 20 38  --.# More than 8
38c0: 20 73 6f 75 72 63 65 20 74 61 62 6c 65 73 2e 0a   source tables..
38d0: 23 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73  #.do_execsql_tes
38e0: 74 20 35 2e 30 20 7b 0a 20 20 43 52 45 41 54 45  t 5.0 {.  CREATE
38f0: 20 54 41 42 4c 45 20 63 30 28 6f 6e 65 2c 20 74   TABLE c0(one, t
3900: 77 6f 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41  wo INTEGER PRIMA
3910: 52 59 20 4b 45 59 29 3b 0a 20 20 43 52 45 41 54  RY KEY);.  CREAT
3920: 45 20 54 41 42 4c 45 20 63 31 28 6f 6e 65 2c 20  E TABLE c1(one, 
3930: 74 77 6f 20 49 4e 54 45 47 45 52 20 50 52 49 4d  two INTEGER PRIM
3940: 41 52 59 20 4b 45 59 29 3b 0a 20 20 43 52 45 41  ARY KEY);.  CREA
3950: 54 45 20 54 41 42 4c 45 20 63 32 28 6f 6e 65 2c  TE TABLE c2(one,
3960: 20 74 77 6f 20 49 4e 54 45 47 45 52 20 50 52 49   two INTEGER PRI
3970: 4d 41 52 59 20 4b 45 59 29 3b 0a 20 20 43 52 45  MARY KEY);.  CRE
3980: 41 54 45 20 54 41 42 4c 45 20 63 33 28 6f 6e 65  ATE TABLE c3(one
3990: 2c 20 74 77 6f 20 49 4e 54 45 47 45 52 20 50 52  , two INTEGER PR
39a0: 49 4d 41 52 59 20 4b 45 59 29 3b 0a 20 20 43 52  IMARY KEY);.  CR
39b0: 45 41 54 45 20 54 41 42 4c 45 20 63 34 28 6f 6e  EATE TABLE c4(on
39c0: 65 2c 20 74 77 6f 20 49 4e 54 45 47 45 52 20 50  e, two INTEGER P
39d0: 52 49 4d 41 52 59 20 4b 45 59 29 3b 0a 20 20 43  RIMARY KEY);.  C
39e0: 52 45 41 54 45 20 54 41 42 4c 45 20 63 35 28 6f  REATE TABLE c5(o
39f0: 6e 65 2c 20 74 77 6f 20 49 4e 54 45 47 45 52 20  ne, two INTEGER 
3a00: 50 52 49 4d 41 52 59 20 4b 45 59 29 3b 0a 20 20  PRIMARY KEY);.  
3a10: 43 52 45 41 54 45 20 54 41 42 4c 45 20 63 36 28  CREATE TABLE c6(
3a20: 6f 6e 65 2c 20 74 77 6f 20 49 4e 54 45 47 45 52  one, two INTEGER
3a30: 20 50 52 49 4d 41 52 59 20 4b 45 59 29 3b 0a 20   PRIMARY KEY);. 
3a40: 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 63 37   CREATE TABLE c7
3a50: 28 6f 6e 65 2c 20 74 77 6f 20 49 4e 54 45 47 45  (one, two INTEGE
3a60: 52 20 50 52 49 4d 41 52 59 20 4b 45 59 29 3b 0a  R PRIMARY KEY);.
3a70: 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 63    CREATE TABLE c
3a80: 38 28 6f 6e 65 2c 20 74 77 6f 20 49 4e 54 45 47  8(one, two INTEG
3a90: 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 29 3b  ER PRIMARY KEY);
3aa0: 0a 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20  .  CREATE TABLE 
3ab0: 63 39 28 6f 6e 65 2c 20 74 77 6f 20 49 4e 54 45  c9(one, two INTE
3ac0: 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 29  GER PRIMARY KEY)
3ad0: 3b 0a 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f  ;..  INSERT INTO
3ae0: 20 63 30 20 56 41 4c 55 45 53 28 27 7a 65 72 6f   c0 VALUES('zero
3af0: 27 2c 20 30 29 3b 0a 20 20 49 4e 53 45 52 54 20  ', 0);.  INSERT 
3b00: 49 4e 54 4f 20 63 31 20 56 41 4c 55 45 53 28 27  INTO c1 VALUES('
3b10: 6f 6e 65 27 2c 20 31 29 3b 0a 20 20 49 4e 53 45  one', 1);.  INSE
3b20: 52 54 20 49 4e 54 4f 20 63 32 20 56 41 4c 55 45  RT INTO c2 VALUE
3b30: 53 28 27 74 77 6f 27 2c 20 32 29 3b 0a 20 20 49  S('two', 2);.  I
3b40: 4e 53 45 52 54 20 49 4e 54 4f 20 63 33 20 56 41  NSERT INTO c3 VA
3b50: 4c 55 45 53 28 27 74 68 72 65 65 27 2c 20 33 29  LUES('three', 3)
3b60: 3b 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20  ;.  INSERT INTO 
3b70: 63 34 20 56 41 4c 55 45 53 28 27 66 6f 75 72 27  c4 VALUES('four'
3b80: 2c 20 34 29 3b 0a 20 20 49 4e 53 45 52 54 20 49  , 4);.  INSERT I
3b90: 4e 54 4f 20 63 35 20 56 41 4c 55 45 53 28 27 66  NTO c5 VALUES('f
3ba0: 69 76 65 27 2c 20 35 29 3b 0a 20 20 49 4e 53 45  ive', 5);.  INSE
3bb0: 52 54 20 49 4e 54 4f 20 63 36 20 56 41 4c 55 45  RT INTO c6 VALUE
3bc0: 53 28 27 73 69 78 27 2c 20 36 29 3b 0a 20 20 49  S('six', 6);.  I
3bd0: 4e 53 45 52 54 20 49 4e 54 4f 20 63 37 20 56 41  NSERT INTO c7 VA
3be0: 4c 55 45 53 28 27 73 65 76 65 6e 27 2c 20 37 29  LUES('seven', 7)
3bf0: 3b 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20  ;.  INSERT INTO 
3c00: 63 38 20 56 41 4c 55 45 53 28 27 65 69 67 68 74  c8 VALUES('eight
3c10: 27 2c 20 38 29 3b 0a 20 20 49 4e 53 45 52 54 20  ', 8);.  INSERT 
3c20: 49 4e 54 4f 20 63 39 20 56 41 4c 55 45 53 28 27  INTO c9 VALUES('
3c30: 6e 69 6e 65 27 2c 20 39 29 3b 0a 0a 20 20 43 52  nine', 9);..  CR
3c40: 45 41 54 45 20 56 49 52 54 55 41 4c 20 54 41 42  EATE VIRTUAL TAB
3c50: 4c 45 20 74 65 6d 70 2e 63 63 20 55 53 49 4e 47  LE temp.cc USING
3c60: 20 75 6e 69 6f 6e 76 74 61 62 28 5b 0a 20 20 20   unionvtab([.   
3c70: 20 53 45 4c 45 43 54 20 27 6d 61 69 6e 27 2c 20   SELECT 'main', 
3c80: 27 63 39 27 2c 20 39 2c 20 39 20 55 4e 49 4f 4e  'c9', 9, 9 UNION
3c90: 20 41 4c 4c 0a 20 20 20 20 53 45 4c 45 43 54 20   ALL.    SELECT 
3ca0: 27 6d 61 69 6e 27 2c 20 27 63 38 27 2c 20 38 2c  'main', 'c8', 8,
3cb0: 20 38 20 55 4e 49 4f 4e 20 41 4c 4c 0a 20 20 20   8 UNION ALL.   
3cc0: 20 53 45 4c 45 43 54 20 27 6d 61 69 6e 27 2c 20   SELECT 'main', 
3cd0: 27 63 37 27 2c 20 37 2c 20 37 20 55 4e 49 4f 4e  'c7', 7, 7 UNION
3ce0: 20 41 4c 4c 0a 20 20 20 20 53 45 4c 45 43 54 20   ALL.    SELECT 
3cf0: 27 6d 61 69 6e 27 2c 20 27 63 36 27 2c 20 36 2c  'main', 'c6', 6,
3d00: 20 36 20 55 4e 49 4f 4e 20 41 4c 4c 0a 20 20 20   6 UNION ALL.   
3d10: 20 53 45 4c 45 43 54 20 27 6d 61 69 6e 27 2c 20   SELECT 'main', 
3d20: 27 63 35 27 2c 20 35 2c 20 35 20 55 4e 49 4f 4e  'c5', 5, 5 UNION
3d30: 20 41 4c 4c 0a 20 20 20 20 53 45 4c 45 43 54 20   ALL.    SELECT 
3d40: 27 6d 61 69 6e 27 2c 20 27 63 34 27 2c 20 34 2c  'main', 'c4', 4,
3d50: 20 34 20 55 4e 49 4f 4e 20 41 4c 4c 0a 20 20 20   4 UNION ALL.   
3d60: 20 53 45 4c 45 43 54 20 27 6d 61 69 6e 27 2c 20   SELECT 'main', 
3d70: 27 63 33 27 2c 20 33 2c 20 33 20 55 4e 49 4f 4e  'c3', 3, 3 UNION
3d80: 20 41 4c 4c 0a 20 20 20 20 53 45 4c 45 43 54 20   ALL.    SELECT 
3d90: 27 6d 61 69 6e 27 2c 20 27 63 32 27 2c 20 32 2c  'main', 'c2', 2,
3da0: 20 32 20 55 4e 49 4f 4e 20 41 4c 4c 0a 20 20 20   2 UNION ALL.   
3db0: 20 53 45 4c 45 43 54 20 27 6d 61 69 6e 27 2c 20   SELECT 'main', 
3dc0: 27 63 31 27 2c 20 31 2c 20 31 20 55 4e 49 4f 4e  'c1', 1, 1 UNION
3dd0: 20 41 4c 4c 0a 20 20 20 20 53 45 4c 45 43 54 20   ALL.    SELECT 
3de0: 27 6d 61 69 6e 27 2c 20 27 63 30 27 2c 20 30 2c  'main', 'c0', 0,
3df0: 20 30 0a 20 20 5d 29 3b 0a 0a 20 20 53 45 4c 45   0.  ]);..  SELE
3e00: 43 54 20 73 75 6d 28 74 77 6f 29 20 46 52 4f 4d  CT sum(two) FROM
3e10: 20 63 63 3b 0a 7d 20 7b 34 35 7d 0a 0a 64 6f 5f   cc;.} {45}..do_
3e20: 65 78 65 63 73 71 6c 5f 74 65 73 74 20 35 2e 31  execsql_test 5.1
3e30: 20 7b 0a 20 20 53 45 4c 45 43 54 20 6f 6e 65 20   {.  SELECT one 
3e40: 46 52 4f 4d 20 63 63 20 57 48 45 52 45 20 6f 6e  FROM cc WHERE on
3e50: 65 3e 3d 27 73 65 76 65 6e 27 0a 7d 20 7b 7a 65  e>='seven'.} {ze
3e60: 72 6f 20 74 77 6f 20 74 68 72 65 65 20 73 69 78  ro two three six
3e70: 20 73 65 76 65 6e 7d 0a 0a 64 6f 5f 65 78 65 63   seven}..do_exec
3e80: 73 71 6c 5f 74 65 73 74 20 35 2e 32 20 7b 0a 20  sql_test 5.2 {. 
3e90: 20 53 45 4c 45 43 54 20 79 2e 6f 6e 65 20 46 52   SELECT y.one FR
3ea0: 4f 4d 20 63 63 20 41 53 20 78 2c 20 63 63 20 41  OM cc AS x, cc A
3eb0: 53 20 79 20 57 48 45 52 45 20 78 2e 6f 6e 65 3d  S y WHERE x.one=
3ec0: 79 2e 6f 6e 65 20 41 4e 44 20 78 2e 72 6f 77 69  y.one AND x.rowi
3ed0: 64 3e 35 0a 7d 20 7b 73 69 78 20 73 65 76 65 6e  d>5.} {six seven
3ee0: 20 65 69 67 68 74 20 6e 69 6e 65 7d 0a 0a 64 6f   eight nine}..do
3ef0: 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 35 2e  _execsql_test 5.
3f00: 33 20 7b 0a 20 20 53 45 4c 45 43 54 20 63 63 2e  3 {.  SELECT cc.
3f10: 6f 6e 65 20 46 52 4f 4d 20 63 34 2c 20 63 63 20  one FROM c4, cc 
3f20: 57 48 45 52 45 20 63 63 2e 72 6f 77 69 64 3e 63  WHERE cc.rowid>c
3f30: 34 2e 72 6f 77 69 64 0a 7d 20 7b 66 69 76 65 20  4.rowid.} {five 
3f40: 73 69 78 20 73 65 76 65 6e 20 65 69 67 68 74 20  six seven eight 
3f50: 6e 69 6e 65 7d 0a 0a 64 6f 5f 65 78 65 63 73 71  nine}..do_execsq
3f60: 6c 5f 74 65 73 74 20 35 2e 34 20 7b 0a 20 20 53  l_test 5.4 {.  S
3f70: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 63 63 20  ELECT * FROM cc 
3f80: 57 48 45 52 45 20 74 77 6f 20 4c 49 4b 45 20 27  WHERE two LIKE '
3f90: 36 27 0a 7d 20 7b 73 69 78 20 36 7d 0a 0a 66 69  6'.} {six 6}..fi
3fa0: 6e 69 73 68 5f 74 65 73 74 0a                    nish_test.