/ Hex Artifact Content
Login

Artifact 3c80421a889e1d106df16e5800fa787f0d2914a6:


0000: 23 20 32 30 30 31 20 53 65 70 74 65 6d 62 65 72  # 2001 September
0010: 20 31 35 0a 23 0a 23 20 54 68 65 20 61 75 74 68   15.#.# The auth
0020: 6f 72 20 64 69 73 63 6c 61 69 6d 73 20 63 6f 70  or disclaims cop
0030: 79 72 69 67 68 74 20 74 6f 20 74 68 69 73 20 73  yright to this s
0040: 6f 75 72 63 65 20 63 6f 64 65 2e 20 20 49 6e 20  ource code.  In 
0050: 70 6c 61 63 65 20 6f 66 0a 23 20 61 20 6c 65 67  place of.# a leg
0060: 61 6c 20 6e 6f 74 69 63 65 2c 20 68 65 72 65 20  al notice, here 
0070: 69 73 20 61 20 62 6c 65 73 73 69 6e 67 3a 0a 23  is a blessing:.#
0080: 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20 64 6f  .#    May you do
0090: 20 67 6f 6f 64 20 61 6e 64 20 6e 6f 74 20 65 76   good and not ev
00a0: 69 6c 2e 0a 23 20 20 20 20 4d 61 79 20 79 6f 75  il..#    May you
00b0: 20 66 69 6e 64 20 66 6f 72 67 69 76 65 6e 65 73   find forgivenes
00c0: 73 20 66 6f 72 20 79 6f 75 72 73 65 6c 66 20 61  s for yourself a
00d0: 6e 64 20 66 6f 72 67 69 76 65 20 6f 74 68 65 72  nd forgive other
00e0: 73 2e 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20  s..#    May you 
00f0: 73 68 61 72 65 20 66 72 65 65 6c 79 2c 20 6e 65  share freely, ne
0100: 76 65 72 20 74 61 6b 69 6e 67 20 6d 6f 72 65 20  ver taking more 
0110: 74 68 61 6e 20 79 6f 75 20 67 69 76 65 2e 0a 23  than you give..#
0120: 0a 23 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 2a 2a 2a 0a 23 20 54 68 69 73  *********.# This
0170: 20 66 69 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 73   file implements
0180: 20 72 65 67 72 65 73 73 69 6f 6e 20 74 65 73 74   regression test
0190: 73 20 66 6f 72 20 53 51 4c 69 74 65 20 6c 69 62  s for SQLite lib
01a0: 72 61 72 79 2e 20 20 54 68 65 0a 23 20 66 6f 63  rary.  The.# foc
01b0: 75 73 20 6f 66 20 74 68 69 73 20 66 69 6c 65 20  us of this file 
01c0: 69 73 20 74 65 73 74 69 6e 67 20 74 68 65 20 73  is testing the s
01d0: 71 6c 69 74 65 5f 65 78 65 63 5f 70 72 69 6e 74  qlite_exec_print
01e0: 66 28 29 20 61 6e 64 0a 23 20 73 71 6c 69 74 65  f() and.# sqlite
01f0: 5f 67 65 74 5f 74 61 62 6c 65 5f 70 72 69 6e 74  _get_table_print
0200: 66 28 29 20 41 50 49 73 2e 0a 23 0a 23 20 24 49  f() APIs..#.# $I
0210: 64 3a 20 74 61 62 6c 65 61 70 69 2e 74 65 73 74  d: tableapi.test
0220: 2c 76 20 31 2e 35 20 32 30 30 32 2f 30 33 2f 32  ,v 1.5 2002/03/2
0230: 33 20 30 30 3a 35 32 3a 30 31 20 64 72 68 20 45  3 00:52:01 drh E
0240: 78 70 20 24 0a 0a 73 65 74 20 74 65 73 74 64 69  xp $..set testdi
0250: 72 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20  r [file dirname 
0260: 24 61 72 67 76 30 5d 0a 73 6f 75 72 63 65 20 24  $argv0].source $
0270: 74 65 73 74 64 69 72 2f 74 65 73 74 65 72 2e 74  testdir/tester.t
0280: 63 6c 0a 0a 64 6f 5f 74 65 73 74 20 74 61 62 6c  cl..do_test tabl
0290: 65 61 70 69 2d 31 2e 30 20 7b 0a 20 20 73 65 74  eapi-1.0 {.  set
02a0: 20 3a 3a 64 62 78 20 5b 73 71 6c 69 74 65 5f 6f   ::dbx [sqlite_o
02b0: 70 65 6e 20 74 65 73 74 64 62 5d 0a 20 20 63 61  pen testdb].  ca
02c0: 74 63 68 20 7b 73 71 6c 69 74 65 5f 65 78 65 63  tch {sqlite_exec
02d0: 5f 70 72 69 6e 74 66 20 24 3a 3a 64 62 78 20 7b  _printf $::dbx {
02e0: 44 52 4f 50 20 54 41 42 4c 45 20 78 79 7a 7d 20  DROP TABLE xyz} 
02f0: 7b 7d 7d 0a 20 20 73 71 6c 69 74 65 5f 65 78 65  {}}.  sqlite_exe
0300: 63 5f 70 72 69 6e 74 66 20 24 3a 3a 64 62 78 20  c_printf $::dbx 
0310: 7b 43 52 45 41 54 45 20 54 41 42 4c 45 20 25 73  {CREATE TABLE %s
0320: 28 61 20 69 6e 74 2c 20 62 20 74 65 78 74 29 7d  (a int, b text)}
0330: 20 78 79 7a 0a 7d 20 7b 30 20 7b 7d 7d 0a 64 6f   xyz.} {0 {}}.do
0340: 5f 74 65 73 74 20 74 61 62 6c 65 61 70 69 2d 31  _test tableapi-1
0350: 2e 31 20 7b 0a 20 20 73 71 6c 69 74 65 5f 65 78  .1 {.  sqlite_ex
0360: 65 63 5f 70 72 69 6e 74 66 20 24 3a 3a 64 62 78  ec_printf $::dbx
0370: 20 7b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e   {.    INSERT IN
0380: 54 4f 20 78 79 7a 20 56 41 4c 55 45 53 28 31 2c  TO xyz VALUES(1,
0390: 27 25 71 27 29 0a 20 20 7d 20 7b 48 69 20 59 27  '%q').  } {Hi Y'
03a0: 61 6c 6c 7d 0a 7d 20 7b 30 20 7b 7d 7d 0a 64 6f  all}.} {0 {}}.do
03b0: 5f 74 65 73 74 20 74 61 62 6c 65 61 70 69 2d 31  _test tableapi-1
03c0: 2e 32 20 7b 0a 20 20 73 71 6c 69 74 65 5f 65 78  .2 {.  sqlite_ex
03d0: 65 63 5f 70 72 69 6e 74 66 20 24 3a 3a 64 62 78  ec_printf $::dbx
03e0: 20 7b 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20   {SELECT * FROM 
03f0: 78 79 7a 7d 20 7b 7d 0a 7d 20 7b 30 20 7b 61 20  xyz} {}.} {0 {a 
0400: 62 20 31 20 7b 48 69 20 59 27 61 6c 6c 7d 7d 7d  b 1 {Hi Y'all}}}
0410: 0a 0a 64 6f 5f 74 65 73 74 20 74 61 62 6c 65 61  ..do_test tablea
0420: 70 69 2d 32 2e 31 20 7b 0a 20 20 73 71 6c 69 74  pi-2.1 {.  sqlit
0430: 65 5f 67 65 74 5f 74 61 62 6c 65 5f 70 72 69 6e  e_get_table_prin
0440: 74 66 20 24 3a 3a 64 62 78 20 7b 0a 20 20 20 20  tf $::dbx {.    
0450: 42 45 47 49 4e 20 54 52 41 4e 53 41 43 54 49 4f  BEGIN TRANSACTIO
0460: 4e 3b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a 20  N;.    SELECT * 
0470: 46 52 4f 4d 20 78 79 7a 20 57 48 45 52 45 20 62  FROM xyz WHERE b
0480: 3d 27 25 71 27 0a 20 20 7d 20 7b 48 69 20 59 27  ='%q'.  } {Hi Y'
0490: 61 6c 6c 7d 0a 7d 20 7b 30 20 31 20 32 20 61 20  all}.} {0 1 2 a 
04a0: 62 20 31 20 7b 48 69 20 59 27 61 6c 6c 7d 7d 0a  b 1 {Hi Y'all}}.
04b0: 64 6f 5f 74 65 73 74 20 74 61 62 6c 65 61 70 69  do_test tableapi
04c0: 2d 32 2e 32 20 7b 0a 20 20 73 71 6c 69 74 65 5f  -2.2 {.  sqlite_
04d0: 67 65 74 5f 74 61 62 6c 65 5f 70 72 69 6e 74 66  get_table_printf
04e0: 20 24 3a 3a 64 62 78 20 7b 0a 20 20 20 20 53 45   $::dbx {.    SE
04f0: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 78 79 7a 0a  LECT * FROM xyz.
0500: 20 20 7d 20 7b 7d 0a 7d 20 7b 30 20 31 20 32 20    } {}.} {0 1 2 
0510: 61 20 62 20 31 20 7b 48 69 20 59 27 61 6c 6c 7d  a b 1 {Hi Y'all}
0520: 7d 0a 64 6f 5f 74 65 73 74 20 74 61 62 6c 65 61  }.do_test tablea
0530: 70 69 2d 32 2e 33 20 7b 0a 20 20 66 6f 72 20 7b  pi-2.3 {.  for {
0540: 73 65 74 20 69 20 32 7d 20 7b 24 69 3c 3d 35 30  set i 2} {$i<=50
0550: 7d 20 7b 69 6e 63 72 20 69 7d 20 7b 0a 20 20 20  } {incr i} {.   
0560: 20 73 71 6c 69 74 65 5f 67 65 74 5f 74 61 62 6c   sqlite_get_tabl
0570: 65 5f 70 72 69 6e 74 66 20 24 3a 3a 64 62 78 20  e_printf $::dbx 
0580: 5c 0a 20 20 20 20 20 20 20 22 49 4e 53 45 52 54  \.       "INSERT
0590: 20 49 4e 54 4f 20 78 79 7a 20 56 41 4c 55 45 53   INTO xyz VALUES
05a0: 28 24 69 2c 27 28 25 73 29 27 29 22 20 24 69 0a  ($i,'(%s)')" $i.
05b0: 20 20 7d 0a 20 20 73 71 6c 69 74 65 5f 67 65 74    }.  sqlite_get
05c0: 5f 74 61 62 6c 65 5f 70 72 69 6e 74 66 20 24 3a  _table_printf $:
05d0: 3a 64 62 78 20 7b 0a 20 20 20 20 53 45 4c 45 43  :dbx {.    SELEC
05e0: 54 20 2a 20 46 52 4f 4d 20 78 79 7a 20 4f 52 44  T * FROM xyz ORD
05f0: 45 52 20 42 59 20 61 0a 20 20 7d 20 7b 7d 0a 7d  ER BY a.  } {}.}
0600: 20 7b 30 20 35 30 20 32 20 61 20 62 20 31 20 7b   {0 50 2 a b 1 {
0610: 48 69 20 59 27 61 6c 6c 7d 20 32 20 28 32 29 20  Hi Y'all} 2 (2) 
0620: 33 20 28 33 29 20 34 20 28 34 29 20 35 20 28 35  3 (3) 4 (4) 5 (5
0630: 29 20 36 20 28 36 29 20 37 20 28 37 29 20 38 20  ) 6 (6) 7 (7) 8 
0640: 28 38 29 20 39 20 28 39 29 20 31 30 20 28 31 30  (8) 9 (9) 10 (10
0650: 29 20 31 31 20 28 31 31 29 20 31 32 20 28 31 32  ) 11 (11) 12 (12
0660: 29 20 31 33 20 28 31 33 29 20 31 34 20 28 31 34  ) 13 (13) 14 (14
0670: 29 20 31 35 20 28 31 35 29 20 31 36 20 28 31 36  ) 15 (15) 16 (16
0680: 29 20 31 37 20 28 31 37 29 20 31 38 20 28 31 38  ) 17 (17) 18 (18
0690: 29 20 31 39 20 28 31 39 29 20 32 30 20 28 32 30  ) 19 (19) 20 (20
06a0: 29 20 32 31 20 28 32 31 29 20 32 32 20 28 32 32  ) 21 (21) 22 (22
06b0: 29 20 32 33 20 28 32 33 29 20 32 34 20 28 32 34  ) 23 (23) 24 (24
06c0: 29 20 32 35 20 28 32 35 29 20 32 36 20 28 32 36  ) 25 (25) 26 (26
06d0: 29 20 32 37 20 28 32 37 29 20 32 38 20 28 32 38  ) 27 (27) 28 (28
06e0: 29 20 32 39 20 28 32 39 29 20 33 30 20 28 33 30  ) 29 (29) 30 (30
06f0: 29 20 33 31 20 28 33 31 29 20 33 32 20 28 33 32  ) 31 (31) 32 (32
0700: 29 20 33 33 20 28 33 33 29 20 33 34 20 28 33 34  ) 33 (33) 34 (34
0710: 29 20 33 35 20 28 33 35 29 20 33 36 20 28 33 36  ) 35 (35) 36 (36
0720: 29 20 33 37 20 28 33 37 29 20 33 38 20 28 33 38  ) 37 (37) 38 (38
0730: 29 20 33 39 20 28 33 39 29 20 34 30 20 28 34 30  ) 39 (39) 40 (40
0740: 29 20 34 31 20 28 34 31 29 20 34 32 20 28 34 32  ) 41 (41) 42 (42
0750: 29 20 34 33 20 28 34 33 29 20 34 34 20 28 34 34  ) 43 (43) 44 (44
0760: 29 20 34 35 20 28 34 35 29 20 34 36 20 28 34 36  ) 45 (45) 46 (46
0770: 29 20 34 37 20 28 34 37 29 20 34 38 20 28 34 38  ) 47 (47) 48 (48
0780: 29 20 34 39 20 28 34 39 29 20 35 30 20 28 35 30  ) 49 (49) 50 (50
0790: 29 7d 0a 64 6f 5f 74 65 73 74 20 74 61 62 6c 65  )}.do_test table
07a0: 61 70 69 2d 32 2e 33 2e 31 20 7b 0a 20 20 73 71  api-2.3.1 {.  sq
07b0: 6c 69 74 65 5f 67 65 74 5f 74 61 62 6c 65 5f 70  lite_get_table_p
07c0: 72 69 6e 74 66 20 24 3a 3a 64 62 78 20 7b 0a 20  rintf $::dbx {. 
07d0: 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d     SELECT * FROM
07e0: 20 78 79 7a 20 20 57 48 45 52 45 20 61 3e 34 39   xyz  WHERE a>49
07f0: 20 4f 52 44 45 52 20 42 59 20 61 0a 20 20 7d 20   ORDER BY a.  } 
0800: 7b 7d 0a 7d 20 7b 30 20 31 20 32 20 61 20 62 20  {}.} {0 1 2 a b 
0810: 35 30 20 28 35 30 29 7d 0a 64 6f 5f 74 65 73 74  50 (50)}.do_test
0820: 20 74 61 62 6c 65 61 70 69 2d 32 2e 33 2e 32 20   tableapi-2.3.2 
0830: 7b 0a 20 20 73 71 6c 69 74 65 5f 67 65 74 5f 74  {.  sqlite_get_t
0840: 61 62 6c 65 5f 70 72 69 6e 74 66 20 24 3a 3a 64  able_printf $::d
0850: 62 78 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  bx {.    SELECT 
0860: 2a 20 46 52 4f 4d 20 78 79 7a 20 57 48 45 52 45  * FROM xyz WHERE
0870: 20 61 3e 34 37 20 4f 52 44 45 52 20 42 59 20 61   a>47 ORDER BY a
0880: 0a 20 20 7d 20 7b 7d 0a 7d 20 7b 30 20 33 20 32  .  } {}.} {0 3 2
0890: 20 61 20 62 20 34 38 20 28 34 38 29 20 34 39 20   a b 48 (48) 49 
08a0: 28 34 39 29 20 35 30 20 28 35 30 29 7d 0a 64 6f  (49) 50 (50)}.do
08b0: 5f 74 65 73 74 20 74 61 62 6c 65 61 70 69 2d 32  _test tableapi-2
08c0: 2e 34 20 7b 0a 20 20 73 65 74 20 3a 3a 62 69 67  .4 {.  set ::big
08d0: 5f 73 74 72 20 5b 73 71 6c 69 74 65 5f 6d 70 72  _str [sqlite_mpr
08e0: 69 6e 74 66 5f 73 74 72 20 7b 25 35 30 30 27 2a  intf_str {%500'*
08f0: 20 48 65 6c 6c 6f 20 25 35 30 30 27 2a 7d 20 30   Hello %500'*} 0
0900: 20 30 20 7b 7d 5d 0a 20 20 73 71 6c 69 74 65 5f   0 {}].  sqlite_
0910: 67 65 74 5f 74 61 62 6c 65 5f 70 72 69 6e 74 66  get_table_printf
0920: 20 24 3a 3a 64 62 78 20 7b 0a 20 20 20 20 49 4e   $::dbx {.    IN
0930: 53 45 52 54 20 49 4e 54 4f 20 78 79 7a 20 56 41  SERT INTO xyz VA
0940: 4c 55 45 53 28 35 31 2c 27 25 71 27 29 0a 20 20  LUES(51,'%q').  
0950: 7d 20 24 3a 3a 62 69 67 5f 73 74 72 0a 7d 20 7b  } $::big_str.} {
0960: 30 20 30 20 30 7d 0a 64 6f 5f 74 65 73 74 20 74  0 0 0}.do_test t
0970: 61 62 6c 65 61 70 69 2d 32 2e 35 20 7b 0a 20 20  ableapi-2.5 {.  
0980: 73 71 6c 69 74 65 5f 67 65 74 5f 74 61 62 6c 65  sqlite_get_table
0990: 5f 70 72 69 6e 74 66 20 24 3a 3a 64 62 78 20 7b  _printf $::dbx {
09a0: 0a 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52  .    SELECT * FR
09b0: 4f 4d 20 78 79 7a 20 57 48 45 52 45 20 61 3e 34  OM xyz WHERE a>4
09c0: 39 20 4f 52 44 45 52 20 42 59 20 61 3b 0a 20 20  9 ORDER BY a;.  
09d0: 7d 20 7b 7d 0a 7d 20 22 30 20 32 20 32 20 61 20  } {}.} "0 2 2 a 
09e0: 62 20 35 30 20 28 35 30 29 20 35 31 20 5c 31 37  b 50 (50) 51 \17
09f0: 33 24 3a 3a 62 69 67 5f 73 74 72 5c 31 37 35 22  3$::big_str\175"
0a00: 0a 64 6f 5f 74 65 73 74 20 74 61 62 6c 65 61 70  .do_test tableap
0a10: 69 2d 32 2e 36 20 7b 0a 20 20 73 71 6c 69 74 65  i-2.6 {.  sqlite
0a20: 5f 67 65 74 5f 74 61 62 6c 65 5f 70 72 69 6e 74  _get_table_print
0a30: 66 20 24 3a 3a 64 62 78 20 7b 0a 20 20 20 20 49  f $::dbx {.    I
0a40: 4e 53 45 52 54 20 49 4e 54 4f 20 78 79 7a 20 56  NSERT INTO xyz V
0a50: 41 4c 55 45 53 28 35 32 2c 4e 55 4c 4c 29 0a 20  ALUES(52,NULL). 
0a60: 20 7d 20 7b 7d 0a 20 20 73 71 6c 69 74 65 5f 67   } {}.  sqlite_g
0a70: 65 74 5f 74 61 62 6c 65 5f 70 72 69 6e 74 66 20  et_table_printf 
0a80: 24 3a 3a 64 62 78 20 7b 0a 20 20 20 20 53 45 4c  $::dbx {.    SEL
0a90: 45 43 54 20 2a 20 46 52 4f 4d 20 78 79 7a 20 57  ECT * FROM xyz W
0aa0: 48 45 52 45 20 61 20 49 4e 20 28 34 32 2c 35 30  HERE a IN (42,50
0ab0: 2c 35 32 29 20 4f 52 44 45 52 20 42 59 20 61 20  ,52) ORDER BY a 
0ac0: 44 45 53 43 0a 20 20 7d 20 7b 7d 0a 7d 20 7b 30  DESC.  } {}.} {0
0ad0: 20 33 20 32 20 61 20 62 20 35 32 20 4e 55 4c 4c   3 2 a b 52 NULL
0ae0: 20 35 30 20 28 35 30 29 20 34 32 20 28 34 32 29   50 (50) 42 (42)
0af0: 7d 0a 64 6f 5f 74 65 73 74 20 74 61 62 6c 65 61  }.do_test tablea
0b00: 70 69 2d 32 2e 37 20 7b 0a 20 20 73 71 6c 69 74  pi-2.7 {.  sqlit
0b10: 65 5f 67 65 74 5f 74 61 62 6c 65 5f 70 72 69 6e  e_get_table_prin
0b20: 74 66 20 24 3a 3a 64 62 78 20 7b 0a 20 20 20 20  tf $::dbx {.    
0b30: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 78 79  SELECT * FROM xy
0b40: 7a 20 57 48 45 52 45 20 61 3e 31 30 30 30 0a 20  z WHERE a>1000. 
0b50: 20 7d 20 7b 7d 0a 7d 20 7b 30 20 30 20 30 7d 0a   } {}.} {0 0 0}.
0b60: 0a 23 20 52 65 70 65 61 74 20 61 6c 6c 20 74 65  .# Repeat all te
0b70: 73 74 73 20 77 69 74 68 20 74 68 65 20 65 6d 70  sts with the emp
0b80: 74 79 5f 72 65 73 75 6c 74 5f 63 61 6c 6c 62 61  ty_result_callba
0b90: 63 6b 73 20 70 72 61 67 6d 61 20 74 75 72 6e 65  cks pragma turne
0ba0: 64 20 6f 6e 0a 23 0a 64 6f 5f 74 65 73 74 20 74  d on.#.do_test t
0bb0: 61 62 6c 65 61 70 69 2d 33 2e 31 20 7b 0a 20 20  ableapi-3.1 {.  
0bc0: 73 71 6c 69 74 65 5f 67 65 74 5f 74 61 62 6c 65  sqlite_get_table
0bd0: 5f 70 72 69 6e 74 66 20 24 3a 3a 64 62 78 20 7b  _printf $::dbx {
0be0: 0a 20 20 20 20 52 4f 4c 4c 42 41 43 4b 3b 0a 20  .    ROLLBACK;. 
0bf0: 20 20 20 50 52 41 47 4d 41 20 65 6d 70 74 79 5f     PRAGMA empty_
0c00: 72 65 73 75 6c 74 5f 63 61 6c 6c 62 61 63 6b 73  result_callbacks
0c10: 20 3d 20 4f 4e 3b 0a 20 20 20 20 53 45 4c 45 43   = ON;.    SELEC
0c20: 54 20 2a 20 46 52 4f 4d 20 78 79 7a 20 57 48 45  T * FROM xyz WHE
0c30: 52 45 20 62 3d 27 25 71 27 0a 20 20 7d 20 7b 48  RE b='%q'.  } {H
0c40: 69 20 59 27 61 6c 6c 7d 0a 7d 20 7b 30 20 31 20  i Y'all}.} {0 1 
0c50: 32 20 61 20 62 20 31 20 7b 48 69 20 59 27 61 6c  2 a b 1 {Hi Y'al
0c60: 6c 7d 7d 0a 64 6f 5f 74 65 73 74 20 74 61 62 6c  l}}.do_test tabl
0c70: 65 61 70 69 2d 33 2e 32 20 7b 0a 20 20 73 71 6c  eapi-3.2 {.  sql
0c80: 69 74 65 5f 67 65 74 5f 74 61 62 6c 65 5f 70 72  ite_get_table_pr
0c90: 69 6e 74 66 20 24 3a 3a 64 62 78 20 7b 0a 20 20  intf $::dbx {.  
0ca0: 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20    SELECT * FROM 
0cb0: 78 79 7a 0a 20 20 7d 20 7b 7d 0a 7d 20 7b 30 20  xyz.  } {}.} {0 
0cc0: 31 20 32 20 61 20 62 20 31 20 7b 48 69 20 59 27  1 2 a b 1 {Hi Y'
0cd0: 61 6c 6c 7d 7d 0a 64 6f 5f 74 65 73 74 20 74 61  all}}.do_test ta
0ce0: 62 6c 65 61 70 69 2d 33 2e 33 20 7b 0a 20 20 66  bleapi-3.3 {.  f
0cf0: 6f 72 20 7b 73 65 74 20 69 20 32 7d 20 7b 24 69  or {set i 2} {$i
0d00: 3c 3d 35 30 7d 20 7b 69 6e 63 72 20 69 7d 20 7b  <=50} {incr i} {
0d10: 0a 20 20 20 20 73 71 6c 69 74 65 5f 67 65 74 5f  .    sqlite_get_
0d20: 74 61 62 6c 65 5f 70 72 69 6e 74 66 20 24 3a 3a  table_printf $::
0d30: 64 62 78 20 5c 0a 20 20 20 20 20 20 20 22 49 4e  dbx \.       "IN
0d40: 53 45 52 54 20 49 4e 54 4f 20 78 79 7a 20 56 41  SERT INTO xyz VA
0d50: 4c 55 45 53 28 24 69 2c 27 28 25 73 29 27 29 22  LUES($i,'(%s)')"
0d60: 20 24 69 0a 20 20 7d 0a 20 20 73 71 6c 69 74 65   $i.  }.  sqlite
0d70: 5f 67 65 74 5f 74 61 62 6c 65 5f 70 72 69 6e 74  _get_table_print
0d80: 66 20 24 3a 3a 64 62 78 20 7b 0a 20 20 20 20 53  f $::dbx {.    S
0d90: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 78 79 7a  ELECT * FROM xyz
0da0: 20 4f 52 44 45 52 20 42 59 20 61 0a 20 20 7d 20   ORDER BY a.  } 
0db0: 7b 7d 0a 7d 20 7b 30 20 35 30 20 32 20 61 20 62  {}.} {0 50 2 a b
0dc0: 20 31 20 7b 48 69 20 59 27 61 6c 6c 7d 20 32 20   1 {Hi Y'all} 2 
0dd0: 28 32 29 20 33 20 28 33 29 20 34 20 28 34 29 20  (2) 3 (3) 4 (4) 
0de0: 35 20 28 35 29 20 36 20 28 36 29 20 37 20 28 37  5 (5) 6 (6) 7 (7
0df0: 29 20 38 20 28 38 29 20 39 20 28 39 29 20 31 30  ) 8 (8) 9 (9) 10
0e00: 20 28 31 30 29 20 31 31 20 28 31 31 29 20 31 32   (10) 11 (11) 12
0e10: 20 28 31 32 29 20 31 33 20 28 31 33 29 20 31 34   (12) 13 (13) 14
0e20: 20 28 31 34 29 20 31 35 20 28 31 35 29 20 31 36   (14) 15 (15) 16
0e30: 20 28 31 36 29 20 31 37 20 28 31 37 29 20 31 38   (16) 17 (17) 18
0e40: 20 28 31 38 29 20 31 39 20 28 31 39 29 20 32 30   (18) 19 (19) 20
0e50: 20 28 32 30 29 20 32 31 20 28 32 31 29 20 32 32   (20) 21 (21) 22
0e60: 20 28 32 32 29 20 32 33 20 28 32 33 29 20 32 34   (22) 23 (23) 24
0e70: 20 28 32 34 29 20 32 35 20 28 32 35 29 20 32 36   (24) 25 (25) 26
0e80: 20 28 32 36 29 20 32 37 20 28 32 37 29 20 32 38   (26) 27 (27) 28
0e90: 20 28 32 38 29 20 32 39 20 28 32 39 29 20 33 30   (28) 29 (29) 30
0ea0: 20 28 33 30 29 20 33 31 20 28 33 31 29 20 33 32   (30) 31 (31) 32
0eb0: 20 28 33 32 29 20 33 33 20 28 33 33 29 20 33 34   (32) 33 (33) 34
0ec0: 20 28 33 34 29 20 33 35 20 28 33 35 29 20 33 36   (34) 35 (35) 36
0ed0: 20 28 33 36 29 20 33 37 20 28 33 37 29 20 33 38   (36) 37 (37) 38
0ee0: 20 28 33 38 29 20 33 39 20 28 33 39 29 20 34 30   (38) 39 (39) 40
0ef0: 20 28 34 30 29 20 34 31 20 28 34 31 29 20 34 32   (40) 41 (41) 42
0f00: 20 28 34 32 29 20 34 33 20 28 34 33 29 20 34 34   (42) 43 (43) 44
0f10: 20 28 34 34 29 20 34 35 20 28 34 35 29 20 34 36   (44) 45 (45) 46
0f20: 20 28 34 36 29 20 34 37 20 28 34 37 29 20 34 38   (46) 47 (47) 48
0f30: 20 28 34 38 29 20 34 39 20 28 34 39 29 20 35 30   (48) 49 (49) 50
0f40: 20 28 35 30 29 7d 0a 64 6f 5f 74 65 73 74 20 74   (50)}.do_test t
0f50: 61 62 6c 65 61 70 69 2d 33 2e 33 2e 31 20 7b 0a  ableapi-3.3.1 {.
0f60: 20 20 73 71 6c 69 74 65 5f 67 65 74 5f 74 61 62    sqlite_get_tab
0f70: 6c 65 5f 70 72 69 6e 74 66 20 24 3a 3a 64 62 78  le_printf $::dbx
0f80: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a 20   {.    SELECT * 
0f90: 46 52 4f 4d 20 78 79 7a 20 20 57 48 45 52 45 20  FROM xyz  WHERE 
0fa0: 61 3e 34 39 20 4f 52 44 45 52 20 42 59 20 61 0a  a>49 ORDER BY a.
0fb0: 20 20 7d 20 7b 7d 0a 7d 20 7b 30 20 31 20 32 20    } {}.} {0 1 2 
0fc0: 61 20 62 20 35 30 20 28 35 30 29 7d 0a 64 6f 5f  a b 50 (50)}.do_
0fd0: 74 65 73 74 20 74 61 62 6c 65 61 70 69 2d 33 2e  test tableapi-3.
0fe0: 33 2e 32 20 7b 0a 20 20 73 71 6c 69 74 65 5f 67  3.2 {.  sqlite_g
0ff0: 65 74 5f 74 61 62 6c 65 5f 70 72 69 6e 74 66 20  et_table_printf 
1000: 24 3a 3a 64 62 78 20 7b 0a 20 20 20 20 53 45 4c  $::dbx {.    SEL
1010: 45 43 54 20 2a 20 46 52 4f 4d 20 78 79 7a 20 57  ECT * FROM xyz W
1020: 48 45 52 45 20 61 3e 34 37 20 4f 52 44 45 52 20  HERE a>47 ORDER 
1030: 42 59 20 61 0a 20 20 7d 20 7b 7d 0a 7d 20 7b 30  BY a.  } {}.} {0
1040: 20 33 20 32 20 61 20 62 20 34 38 20 28 34 38 29   3 2 a b 48 (48)
1050: 20 34 39 20 28 34 39 29 20 35 30 20 28 35 30 29   49 (49) 50 (50)
1060: 7d 0a 64 6f 5f 74 65 73 74 20 74 61 62 6c 65 61  }.do_test tablea
1070: 70 69 2d 33 2e 34 20 7b 0a 20 20 73 65 74 20 3a  pi-3.4 {.  set :
1080: 3a 62 69 67 5f 73 74 72 20 5b 73 71 6c 69 74 65  :big_str [sqlite
1090: 5f 6d 70 72 69 6e 74 66 5f 73 74 72 20 7b 25 35  _mprintf_str {%5
10a0: 30 30 27 2a 20 48 65 6c 6c 6f 20 25 35 30 30 27  00'* Hello %500'
10b0: 2a 7d 20 30 20 30 20 7b 7d 5d 0a 20 20 73 71 6c  *} 0 0 {}].  sql
10c0: 69 74 65 5f 67 65 74 5f 74 61 62 6c 65 5f 70 72  ite_get_table_pr
10d0: 69 6e 74 66 20 24 3a 3a 64 62 78 20 7b 0a 20 20  intf $::dbx {.  
10e0: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 78 79    INSERT INTO xy
10f0: 7a 20 56 41 4c 55 45 53 28 35 31 2c 27 25 71 27  z VALUES(51,'%q'
1100: 29 0a 20 20 7d 20 24 3a 3a 62 69 67 5f 73 74 72  ).  } $::big_str
1110: 0a 7d 20 7b 30 20 30 20 30 7d 0a 64 6f 5f 74 65  .} {0 0 0}.do_te
1120: 73 74 20 74 61 62 6c 65 61 70 69 2d 33 2e 35 20  st tableapi-3.5 
1130: 7b 0a 20 20 73 71 6c 69 74 65 5f 67 65 74 5f 74  {.  sqlite_get_t
1140: 61 62 6c 65 5f 70 72 69 6e 74 66 20 24 3a 3a 64  able_printf $::d
1150: 62 78 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  bx {.    SELECT 
1160: 2a 20 46 52 4f 4d 20 78 79 7a 20 57 48 45 52 45  * FROM xyz WHERE
1170: 20 61 3e 34 39 20 4f 52 44 45 52 20 42 59 20 61   a>49 ORDER BY a
1180: 3b 0a 20 20 7d 20 7b 7d 0a 7d 20 22 30 20 32 20  ;.  } {}.} "0 2 
1190: 32 20 61 20 62 20 35 30 20 28 35 30 29 20 35 31  2 a b 50 (50) 51
11a0: 20 5c 31 37 33 24 3a 3a 62 69 67 5f 73 74 72 5c   \173$::big_str\
11b0: 31 37 35 22 0a 64 6f 5f 74 65 73 74 20 74 61 62  175".do_test tab
11c0: 6c 65 61 70 69 2d 33 2e 36 20 7b 0a 20 20 73 71  leapi-3.6 {.  sq
11d0: 6c 69 74 65 5f 67 65 74 5f 74 61 62 6c 65 5f 70  lite_get_table_p
11e0: 72 69 6e 74 66 20 24 3a 3a 64 62 78 20 7b 0a 20  rintf $::dbx {. 
11f0: 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 78     INSERT INTO x
1200: 79 7a 20 56 41 4c 55 45 53 28 35 32 2c 4e 55 4c  yz VALUES(52,NUL
1210: 4c 29 0a 20 20 7d 20 7b 7d 0a 20 20 73 71 6c 69  L).  } {}.  sqli
1220: 74 65 5f 67 65 74 5f 74 61 62 6c 65 5f 70 72 69  te_get_table_pri
1230: 6e 74 66 20 24 3a 3a 64 62 78 20 7b 0a 20 20 20  ntf $::dbx {.   
1240: 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 78   SELECT * FROM x
1250: 79 7a 20 57 48 45 52 45 20 61 20 49 4e 20 28 34  yz WHERE a IN (4
1260: 32 2c 35 30 2c 35 32 29 20 4f 52 44 45 52 20 42  2,50,52) ORDER B
1270: 59 20 61 20 44 45 53 43 0a 20 20 7d 20 7b 7d 0a  Y a DESC.  } {}.
1280: 7d 20 7b 30 20 33 20 32 20 61 20 62 20 35 32 20  } {0 3 2 a b 52 
1290: 4e 55 4c 4c 20 35 30 20 28 35 30 29 20 34 32 20  NULL 50 (50) 42 
12a0: 28 34 32 29 7d 0a 64 6f 5f 74 65 73 74 20 74 61  (42)}.do_test ta
12b0: 62 6c 65 61 70 69 2d 33 2e 37 20 7b 0a 20 20 73  bleapi-3.7 {.  s
12c0: 71 6c 69 74 65 5f 67 65 74 5f 74 61 62 6c 65 5f  qlite_get_table_
12d0: 70 72 69 6e 74 66 20 24 3a 3a 64 62 78 20 7b 0a  printf $::dbx {.
12e0: 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f      SELECT * FRO
12f0: 4d 20 78 79 7a 20 57 48 45 52 45 20 61 3e 31 30  M xyz WHERE a>10
1300: 30 30 0a 20 20 7d 20 7b 7d 0a 7d 20 7b 30 20 30  00.  } {}.} {0 0
1310: 20 32 20 61 20 62 7d 0a 0a 64 6f 5f 74 65 73 74   2 a b}..do_test
1320: 20 74 61 62 6c 65 61 70 69 2d 34 2e 31 20 7b 0a   tableapi-4.1 {.
1330: 20 20 73 65 74 20 72 63 20 5b 63 61 74 63 68 20    set rc [catch 
1340: 7b 0a 20 20 20 20 73 71 6c 69 74 65 5f 67 65 74  {.    sqlite_get
1350: 5f 74 61 62 6c 65 5f 70 72 69 6e 74 66 20 24 3a  _table_printf $:
1360: 3a 64 62 78 20 7b 0a 20 20 20 20 20 20 53 45 4c  :dbx {.      SEL
1370: 45 43 54 20 2a 20 46 52 4f 4d 20 78 79 7a 3b 20  ECT * FROM xyz; 
1380: 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 73   SELECT * FROM s
1390: 71 6c 69 74 65 5f 6d 61 73 74 65 72 0a 20 20 20  qlite_master.   
13a0: 20 7d 20 7b 7d 0a 20 20 7d 20 6d 73 67 5d 0a 20   } {}.  } msg]. 
13b0: 20 63 6f 6e 63 61 74 20 24 72 63 20 24 6d 73 67   concat $rc $msg
13c0: 0a 7d 20 7b 30 20 31 20 7b 73 71 6c 69 74 65 5f  .} {0 1 {sqlite_
13d0: 67 65 74 5f 74 61 62 6c 65 28 29 20 63 61 6c 6c  get_table() call
13e0: 65 64 20 77 69 74 68 20 74 77 6f 20 6f 72 20 6d  ed with two or m
13f0: 6f 72 65 20 69 6e 63 6f 6d 70 61 74 69 62 6c 65  ore incompatible
1400: 20 71 75 65 72 69 65 73 7d 7d 0a 0a 64 6f 5f 74   queries}}..do_t
1410: 65 73 74 20 74 61 62 6c 65 61 70 69 2d 39 39 2e  est tableapi-99.
1420: 30 20 7b 0a 20 20 73 71 6c 69 74 65 5f 63 6c 6f  0 {.  sqlite_clo
1430: 73 65 20 24 3a 3a 64 62 78 0a 7d 20 7b 7d 0a 0a  se $::dbx.} {}..
1440: 66 69 6e 69 73 68 5f 74 65 73 74 0a              finish_test.