/ Hex Artifact Content
Login

Artifact af4fd826c4784ec5c93b444de07adea0254d0d30:


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 0a 23 0a 23 20 54 68 69 73 20 66  rary..#.# This f
01b0: 69 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74  ile implements t
01c0: 65 73 74 73 20 66 6f 72 20 74 68 65 20 73 70 65  ests for the spe
01d0: 63 69 61 6c 20 70 72 6f 63 65 73 73 69 6e 67 20  cial processing 
01e0: 61 73 73 6f 63 69 61 74 65 64 0a 23 20 77 69 74  associated.# wit
01f0: 68 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52  h INTEGER PRIMAR
0200: 59 20 4b 45 59 20 63 6f 6c 75 6d 6e 73 2e 0a 23  Y KEY columns..#
0210: 0a 23 20 24 49 64 3a 20 69 6e 74 70 6b 65 79 2e  .# $Id: intpkey.
0220: 74 65 73 74 2c 76 20 31 2e 32 33 20 32 30 30 35  test,v 1.23 2005
0230: 2f 30 37 2f 32 31 20 30 33 3a 34 38 3a 32 30 20  /07/21 03:48:20 
0240: 64 72 68 20 45 78 70 20 24 0a 0a 73 65 74 20 74  drh Exp $..set t
0250: 65 73 74 64 69 72 20 5b 66 69 6c 65 20 64 69 72  estdir [file dir
0260: 6e 61 6d 65 20 24 61 72 67 76 30 5d 0a 73 6f 75  name $argv0].sou
0270: 72 63 65 20 24 74 65 73 74 64 69 72 2f 74 65 73  rce $testdir/tes
0280: 74 65 72 2e 74 63 6c 0a 0a 23 20 43 72 65 61 74  ter.tcl..# Creat
0290: 65 20 61 20 74 61 62 6c 65 20 77 69 74 68 20 61  e a table with a
02a0: 20 70 72 69 6d 61 72 79 20 6b 65 79 20 61 6e 64   primary key and
02b0: 20 61 20 64 61 74 61 74 79 70 65 20 6f 74 68 65   a datatype othe
02c0: 72 20 74 68 61 6e 0a 23 20 69 6e 74 65 67 65 72  r than.# integer
02d0: 0a 23 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70 6b  .#.do_test intpk
02e0: 65 79 2d 31 2e 30 20 7b 0a 20 20 65 78 65 63 73  ey-1.0 {.  execs
02f0: 71 6c 20 7b 0a 20 20 20 20 43 52 45 41 54 45 20  ql {.    CREATE 
0300: 54 41 42 4c 45 20 74 31 28 61 20 54 45 58 54 20  TABLE t1(a TEXT 
0310: 50 52 49 4d 41 52 59 20 4b 45 59 2c 20 62 2c 20  PRIMARY KEY, b, 
0320: 63 29 3b 0a 20 20 7d 0a 7d 20 7b 7d 0a 0a 23 20  c);.  }.} {}..# 
0330: 54 68 65 72 65 20 73 68 6f 75 6c 64 20 62 65 20  There should be 
0340: 61 6e 20 69 6e 64 65 78 20 61 73 73 6f 63 69 61  an index associa
0350: 74 65 64 20 77 69 74 68 20 74 68 65 20 70 72 69  ted with the pri
0360: 6d 61 72 79 20 6b 65 79 0a 23 0a 64 6f 5f 74 65  mary key.#.do_te
0370: 73 74 20 69 6e 74 70 6b 65 79 2d 31 2e 31 20 7b  st intpkey-1.1 {
0380: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
0390: 20 53 45 4c 45 43 54 20 6e 61 6d 65 20 46 52 4f   SELECT name FRO
03a0: 4d 20 73 71 6c 69 74 65 5f 6d 61 73 74 65 72 0a  M sqlite_master.
03b0: 20 20 20 20 57 48 45 52 45 20 74 79 70 65 3d 27      WHERE type='
03c0: 69 6e 64 65 78 27 20 41 4e 44 20 74 62 6c 5f 6e  index' AND tbl_n
03d0: 61 6d 65 3d 27 74 31 27 3b 0a 20 20 7d 0a 7d 20  ame='t1';.  }.} 
03e0: 7b 73 71 6c 69 74 65 5f 61 75 74 6f 69 6e 64 65  {sqlite_autoinde
03f0: 78 5f 74 31 5f 31 7d 0a 0a 23 20 4e 6f 77 20 63  x_t1_1}..# Now c
0400: 72 65 61 74 65 20 61 20 74 61 62 6c 65 20 77 69  reate a table wi
0410: 74 68 20 61 6e 20 69 6e 74 65 67 65 72 20 70 72  th an integer pr
0420: 69 6d 61 72 79 20 6b 65 79 20 61 6e 64 20 76 65  imary key and ve
0430: 72 69 66 79 20 74 68 61 74 0a 23 20 74 68 65 72  rify that.# ther
0440: 65 20 69 73 20 6e 6f 20 61 73 73 6f 63 69 61 74  e is no associat
0450: 65 64 20 69 6e 64 65 78 2e 0a 23 0a 64 6f 5f 74  ed index..#.do_t
0460: 65 73 74 20 69 6e 74 70 6b 65 79 2d 31 2e 32 20  est intpkey-1.2 
0470: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
0480: 20 20 44 52 4f 50 20 54 41 42 4c 45 20 74 31 3b    DROP TABLE t1;
0490: 0a 20 20 20 20 43 52 45 41 54 45 20 54 41 42 4c  .    CREATE TABL
04a0: 45 20 74 31 28 61 20 49 4e 54 45 47 45 52 20 50  E t1(a INTEGER P
04b0: 52 49 4d 41 52 59 20 4b 45 59 2c 20 62 2c 20 63  RIMARY KEY, b, c
04c0: 29 3b 0a 20 20 20 20 53 45 4c 45 43 54 20 6e 61  );.    SELECT na
04d0: 6d 65 20 46 52 4f 4d 20 73 71 6c 69 74 65 5f 6d  me FROM sqlite_m
04e0: 61 73 74 65 72 0a 20 20 20 20 20 20 57 48 45 52  aster.      WHER
04f0: 45 20 74 79 70 65 3d 27 69 6e 64 65 78 27 20 41  E type='index' A
0500: 4e 44 20 74 62 6c 5f 6e 61 6d 65 3d 27 74 31 27  ND tbl_name='t1'
0510: 3b 0a 20 20 7d 0a 7d 20 7b 7d 0a 0a 23 20 49 6e  ;.  }.} {}..# In
0520: 73 65 72 74 20 73 6f 6d 65 20 72 65 63 6f 72 64  sert some record
0530: 73 20 69 6e 74 6f 20 74 68 65 20 6e 65 77 20 74  s into the new t
0540: 61 62 6c 65 2e 20 20 53 70 65 63 69 66 79 20 74  able.  Specify t
0550: 68 65 20 70 72 69 6d 61 72 79 20 6b 65 79 0a 23  he primary key.#
0560: 20 61 6e 64 20 76 65 72 69 66 79 20 74 68 61 74   and verify that
0570: 20 74 68 65 20 6b 65 79 20 69 73 20 75 73 65 64   the key is used
0580: 20 61 73 20 74 68 65 20 72 65 63 6f 72 64 20 6e   as the record n
0590: 75 6d 62 65 72 2e 0a 23 0a 64 6f 5f 74 65 73 74  umber..#.do_test
05a0: 20 69 6e 74 70 6b 65 79 2d 31 2e 33 20 7b 0a 20   intpkey-1.3 {. 
05b0: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 49   execsql {.    I
05c0: 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41  NSERT INTO t1 VA
05d0: 4c 55 45 53 28 35 2c 27 68 65 6c 6c 6f 27 2c 27  LUES(5,'hello','
05e0: 77 6f 72 6c 64 27 29 3b 0a 20 20 7d 0a 20 20 64  world');.  }.  d
05f0: 62 20 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f  b last_insert_ro
0600: 77 69 64 0a 7d 20 7b 35 7d 0a 64 6f 5f 74 65 73  wid.} {5}.do_tes
0610: 74 20 69 6e 74 70 6b 65 79 2d 31 2e 34 20 7b 0a  t intpkey-1.4 {.
0620: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
0630: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31  SELECT * FROM t1
0640: 3b 0a 20 20 7d 0a 7d 20 7b 35 20 68 65 6c 6c 6f  ;.  }.} {5 hello
0650: 20 77 6f 72 6c 64 7d 0a 64 6f 5f 74 65 73 74 20   world}.do_test 
0660: 69 6e 74 70 6b 65 79 2d 31 2e 35 20 7b 0a 20 20  intpkey-1.5 {.  
0670: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45  execsql {.    SE
0680: 4c 45 43 54 20 72 6f 77 69 64 2c 20 2a 20 46 52  LECT rowid, * FR
0690: 4f 4d 20 74 31 3b 0a 20 20 7d 0a 7d 20 7b 35 20  OM t1;.  }.} {5 
06a0: 35 20 68 65 6c 6c 6f 20 77 6f 72 6c 64 7d 0a 0a  5 hello world}..
06b0: 23 20 41 74 74 65 6d 70 74 69 6e 67 20 74 6f 20  # Attempting to 
06c0: 69 6e 73 65 72 74 20 61 20 64 75 70 6c 69 63 61  insert a duplica
06d0: 74 65 20 70 72 69 6d 61 72 79 20 6b 65 79 20 73  te primary key s
06e0: 68 6f 75 6c 64 20 67 69 76 65 20 61 20 63 6f 6e  hould give a con
06f0: 73 74 72 61 69 6e 74 0a 23 20 66 61 69 6c 75 72  straint.# failur
0700: 65 2e 0a 23 0a 64 6f 5f 74 65 73 74 20 69 6e 74  e..#.do_test int
0710: 70 6b 65 79 2d 31 2e 36 20 7b 0a 20 20 73 65 74  pkey-1.6 {.  set
0720: 20 72 20 5b 63 61 74 63 68 20 7b 65 78 65 63 73   r [catch {execs
0730: 71 6c 20 7b 0a 20 20 20 20 20 49 4e 53 45 52 54  ql {.     INSERT
0740: 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28   INTO t1 VALUES(
0750: 35 2c 27 73 65 63 6f 6e 64 27 2c 27 65 6e 74 72  5,'second','entr
0760: 79 27 29 3b 0a 20 20 7d 7d 20 6d 73 67 5d 0a 20  y');.  }} msg]. 
0770: 20 6c 61 70 70 65 6e 64 20 72 20 24 6d 73 67 0a   lappend r $msg.
0780: 7d 20 7b 31 20 7b 50 52 49 4d 41 52 59 20 4b 45  } {1 {PRIMARY KE
0790: 59 20 6d 75 73 74 20 62 65 20 75 6e 69 71 75 65  Y must be unique
07a0: 7d 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70 6b  }}.do_test intpk
07b0: 65 79 2d 31 2e 37 20 7b 0a 20 20 65 78 65 63 73  ey-1.7 {.  execs
07c0: 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  ql {.    SELECT 
07d0: 72 6f 77 69 64 2c 20 2a 20 46 52 4f 4d 20 74 31  rowid, * FROM t1
07e0: 3b 0a 20 20 7d 0a 7d 20 7b 35 20 35 20 68 65 6c  ;.  }.} {5 5 hel
07f0: 6c 6f 20 77 6f 72 6c 64 7d 0a 64 6f 5f 74 65 73  lo world}.do_tes
0800: 74 20 69 6e 74 70 6b 65 79 2d 31 2e 38 20 7b 0a  t intpkey-1.8 {.
0810: 20 20 73 65 74 20 72 20 5b 63 61 74 63 68 20 7b    set r [catch {
0820: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 20 49  execsql {.     I
0830: 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41  NSERT INTO t1 VA
0840: 4c 55 45 53 28 36 2c 27 73 65 63 6f 6e 64 27 2c  LUES(6,'second',
0850: 27 65 6e 74 72 79 27 29 3b 0a 20 20 7d 7d 20 6d  'entry');.  }} m
0860: 73 67 5d 0a 20 20 6c 61 70 70 65 6e 64 20 72 20  sg].  lappend r 
0870: 24 6d 73 67 0a 7d 20 7b 30 20 7b 7d 7d 0a 64 6f  $msg.} {0 {}}.do
0880: 5f 74 65 73 74 20 69 6e 74 70 6b 65 79 2d 31 2e  _test intpkey-1.
0890: 38 2e 31 20 7b 0a 20 20 64 62 20 6c 61 73 74 5f  8.1 {.  db last_
08a0: 69 6e 73 65 72 74 5f 72 6f 77 69 64 0a 7d 20 7b  insert_rowid.} {
08b0: 36 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70 6b  6}.do_test intpk
08c0: 65 79 2d 31 2e 39 20 7b 0a 20 20 65 78 65 63 73  ey-1.9 {.  execs
08d0: 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  ql {.    SELECT 
08e0: 72 6f 77 69 64 2c 20 2a 20 46 52 4f 4d 20 74 31  rowid, * FROM t1
08f0: 3b 0a 20 20 7d 0a 7d 20 7b 35 20 35 20 68 65 6c  ;.  }.} {5 5 hel
0900: 6c 6f 20 77 6f 72 6c 64 20 36 20 36 20 73 65 63  lo world 6 6 sec
0910: 6f 6e 64 20 65 6e 74 72 79 7d 0a 0a 23 20 41 20  ond entry}..# A 
0920: 52 4f 57 49 44 20 69 73 20 61 75 74 6f 6d 61 74  ROWID is automat
0930: 69 63 61 6c 6c 79 20 67 65 6e 65 72 61 74 65 64  ically generated
0940: 20 66 6f 72 20 6e 65 77 20 72 65 63 6f 72 64 73   for new records
0950: 20 74 68 61 74 20 64 6f 20 6e 6f 74 20 73 70 65   that do not spe
0960: 63 69 66 79 0a 23 20 74 68 65 20 69 6e 74 65 67  cify.# the integ
0970: 65 72 20 70 72 69 6d 61 72 79 20 6b 65 79 2e 0a  er primary key..
0980: 23 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70 6b 65  #.do_test intpke
0990: 79 2d 31 2e 31 30 20 7b 0a 20 20 65 78 65 63 73  y-1.10 {.  execs
09a0: 71 6c 20 7b 0a 20 20 20 20 49 4e 53 45 52 54 20  ql {.    INSERT 
09b0: 49 4e 54 4f 20 74 31 28 62 2c 63 29 20 56 41 4c  INTO t1(b,c) VAL
09c0: 55 45 53 28 27 6f 6e 65 27 2c 27 74 77 6f 27 29  UES('one','two')
09d0: 3b 0a 20 20 20 20 53 45 4c 45 43 54 20 62 20 46  ;.    SELECT b F
09e0: 52 4f 4d 20 74 31 20 4f 52 44 45 52 20 42 59 20  ROM t1 ORDER BY 
09f0: 62 3b 0a 20 20 7d 0a 7d 20 7b 68 65 6c 6c 6f 20  b;.  }.} {hello 
0a00: 6f 6e 65 20 73 65 63 6f 6e 64 7d 0a 0a 23 20 54  one second}..# T
0a10: 72 79 20 74 6f 20 63 68 61 6e 67 65 20 74 68 65  ry to change the
0a20: 20 52 4f 57 49 44 20 66 6f 72 20 74 68 65 20 6e   ROWID for the n
0a30: 65 77 20 65 6e 74 72 79 2e 0a 23 0a 64 6f 5f 74  ew entry..#.do_t
0a40: 65 73 74 20 69 6e 74 70 6b 65 79 2d 31 2e 31 31  est intpkey-1.11
0a50: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
0a60: 20 20 20 55 50 44 41 54 45 20 74 31 20 53 45 54     UPDATE t1 SET
0a70: 20 61 3d 34 20 57 48 45 52 45 20 62 3d 27 6f 6e   a=4 WHERE b='on
0a80: 65 27 3b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a  e';.    SELECT *
0a90: 20 46 52 4f 4d 20 74 31 3b 0a 20 20 7d 0a 7d 20   FROM t1;.  }.} 
0aa0: 7b 34 20 6f 6e 65 20 74 77 6f 20 35 20 68 65 6c  {4 one two 5 hel
0ab0: 6c 6f 20 77 6f 72 6c 64 20 36 20 73 65 63 6f 6e  lo world 6 secon
0ac0: 64 20 65 6e 74 72 79 7d 0a 0a 23 20 4d 61 6b 65  d entry}..# Make
0ad0: 20 73 75 72 65 20 53 45 4c 45 43 54 20 73 74 61   sure SELECT sta
0ae0: 74 65 6d 65 6e 74 73 20 61 72 65 20 61 62 6c 65  tements are able
0af0: 20 74 6f 20 75 73 65 20 74 68 65 20 70 72 69 6d   to use the prim
0b00: 61 72 79 20 6b 65 79 20 63 6f 6c 75 6d 6e 0a 23  ary key column.#
0b10: 20 61 73 20 61 6e 20 69 6e 64 65 78 2e 0a 23 0a   as an index..#.
0b20: 64 6f 5f 74 65 73 74 20 69 6e 74 70 6b 65 79 2d  do_test intpkey-
0b30: 31 2e 31 32 2e 31 20 7b 0a 20 20 65 78 65 63 73  1.12.1 {.  execs
0b40: 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  ql {.    SELECT 
0b50: 2a 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20  * FROM t1 WHERE 
0b60: 61 3d 3d 34 3b 0a 20 20 7d 0a 7d 20 7b 34 20 6f  a==4;.  }.} {4 o
0b70: 6e 65 20 74 77 6f 7d 0a 64 6f 5f 74 65 73 74 20  ne two}.do_test 
0b80: 69 6e 74 70 6b 65 79 2d 31 2e 31 32 2e 32 20 7b  intpkey-1.12.2 {
0b90: 0a 20 20 73 65 74 20 73 71 6c 69 74 65 5f 71 75  .  set sqlite_qu
0ba0: 65 72 79 5f 70 6c 61 6e 0a 7d 20 7b 74 31 20 2a  ery_plan.} {t1 *
0bb0: 7d 0a 0a 23 20 54 72 79 20 74 6f 20 69 6e 73 65  }..# Try to inse
0bc0: 72 74 20 61 20 6e 6f 6e 2d 69 6e 74 65 67 65 72  rt a non-integer
0bd0: 20 76 61 6c 75 65 20 69 6e 74 6f 20 74 68 65 20   value into the 
0be0: 70 72 69 6d 61 72 79 20 6b 65 79 20 66 69 65 6c  primary key fiel
0bf0: 64 2e 20 20 54 68 69 73 0a 23 20 73 68 6f 75 6c  d.  This.# shoul
0c00: 64 20 72 65 73 75 6c 74 20 69 6e 20 61 20 64 61  d result in a da
0c10: 74 61 20 74 79 70 65 20 6d 69 73 6d 61 74 63 68  ta type mismatch
0c20: 2e 0a 23 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70  ..#.do_test intp
0c30: 6b 65 79 2d 31 2e 31 33 2e 31 20 7b 0a 20 20 73  key-1.13.1 {.  s
0c40: 65 74 20 72 20 5b 63 61 74 63 68 20 7b 65 78 65  et r [catch {exe
0c50: 63 73 71 6c 20 7b 0a 20 20 20 20 49 4e 53 45 52  csql {.    INSER
0c60: 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45 53  T INTO t1 VALUES
0c70: 28 27 78 27 2c 27 79 27 2c 27 7a 27 29 3b 0a 20  ('x','y','z');. 
0c80: 20 7d 7d 20 6d 73 67 5d 0a 20 20 6c 61 70 70 65   }} msg].  lappe
0c90: 6e 64 20 72 20 24 6d 73 67 0a 7d 20 7b 31 20 7b  nd r $msg.} {1 {
0ca0: 64 61 74 61 74 79 70 65 20 6d 69 73 6d 61 74 63  datatype mismatc
0cb0: 68 7d 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70  h}}.do_test intp
0cc0: 6b 65 79 2d 31 2e 31 33 2e 32 20 7b 0a 20 20 73  key-1.13.2 {.  s
0cd0: 65 74 20 72 20 5b 63 61 74 63 68 20 7b 65 78 65  et r [catch {exe
0ce0: 63 73 71 6c 20 7b 0a 20 20 20 20 49 4e 53 45 52  csql {.    INSER
0cf0: 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45 53  T INTO t1 VALUES
0d00: 28 27 27 2c 27 79 27 2c 27 7a 27 29 3b 0a 20 20  ('','y','z');.  
0d10: 7d 7d 20 6d 73 67 5d 0a 20 20 6c 61 70 70 65 6e  }} msg].  lappen
0d20: 64 20 72 20 24 6d 73 67 0a 7d 20 7b 31 20 7b 64  d r $msg.} {1 {d
0d30: 61 74 61 74 79 70 65 20 6d 69 73 6d 61 74 63 68  atatype mismatch
0d40: 7d 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70 6b  }}.do_test intpk
0d50: 65 79 2d 31 2e 31 34 20 7b 0a 20 20 73 65 74 20  ey-1.14 {.  set 
0d60: 72 20 5b 63 61 74 63 68 20 7b 65 78 65 63 73 71  r [catch {execsq
0d70: 6c 20 7b 0a 20 20 20 20 49 4e 53 45 52 54 20 49  l {.    INSERT I
0d80: 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28 33 2e  NTO t1 VALUES(3.
0d90: 34 2c 27 79 27 2c 27 7a 27 29 3b 0a 20 20 7d 7d  4,'y','z');.  }}
0da0: 20 6d 73 67 5d 0a 20 20 6c 61 70 70 65 6e 64 20   msg].  lappend 
0db0: 72 20 24 6d 73 67 0a 7d 20 7b 31 20 7b 64 61 74  r $msg.} {1 {dat
0dc0: 61 74 79 70 65 20 6d 69 73 6d 61 74 63 68 7d 7d  atype mismatch}}
0dd0: 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70 6b 65 79  .do_test intpkey
0de0: 2d 31 2e 31 35 20 7b 0a 20 20 73 65 74 20 72 20  -1.15 {.  set r 
0df0: 5b 63 61 74 63 68 20 7b 65 78 65 63 73 71 6c 20  [catch {execsql 
0e00: 7b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54  {.    INSERT INT
0e10: 4f 20 74 31 20 56 41 4c 55 45 53 28 2d 33 2c 27  O t1 VALUES(-3,'
0e20: 79 27 2c 27 7a 27 29 3b 0a 20 20 7d 7d 20 6d 73  y','z');.  }} ms
0e30: 67 5d 0a 20 20 6c 61 70 70 65 6e 64 20 72 20 24  g].  lappend r $
0e40: 6d 73 67 0a 7d 20 7b 30 20 7b 7d 7d 0a 64 6f 5f  msg.} {0 {}}.do_
0e50: 74 65 73 74 20 69 6e 74 70 6b 65 79 2d 31 2e 31  test intpkey-1.1
0e60: 36 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 53  6 {.  execsql {S
0e70: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 7d  ELECT * FROM t1}
0e80: 0a 7d 20 7b 2d 33 20 79 20 7a 20 34 20 6f 6e 65  .} {-3 y z 4 one
0e90: 20 74 77 6f 20 35 20 68 65 6c 6c 6f 20 77 6f 72   two 5 hello wor
0ea0: 6c 64 20 36 20 73 65 63 6f 6e 64 20 65 6e 74 72  ld 6 second entr
0eb0: 79 7d 0a 0a 23 23 23 23 20 49 4e 44 49 43 45 53  y}..#### INDICES
0ec0: 0a 23 20 43 68 65 63 6b 20 74 6f 20 6d 61 6b 65  .# Check to make
0ed0: 20 73 75 72 65 20 69 6e 64 69 63 65 73 20 77 6f   sure indices wo
0ee0: 72 6b 20 63 6f 72 72 65 63 74 6c 79 20 77 69 74  rk correctly wit
0ef0: 68 20 69 6e 74 65 67 65 72 20 70 72 69 6d 61 72  h integer primar
0f00: 79 20 6b 65 79 73 0a 23 0a 64 6f 5f 74 65 73 74  y keys.#.do_test
0f10: 20 69 6e 74 70 6b 65 79 2d 32 2e 31 20 7b 0a 20   intpkey-2.1 {. 
0f20: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 43   execsql {.    C
0f30: 52 45 41 54 45 20 49 4e 44 45 58 20 69 31 20 4f  REATE INDEX i1 O
0f40: 4e 20 74 31 28 62 29 3b 0a 20 20 20 20 53 45 4c  N t1(b);.    SEL
0f50: 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 20 57 48  ECT * FROM t1 WH
0f60: 45 52 45 20 62 3d 3d 27 79 27 0a 20 20 7d 0a 7d  ERE b=='y'.  }.}
0f70: 20 7b 2d 33 20 79 20 7a 7d 0a 64 6f 5f 74 65 73   {-3 y z}.do_tes
0f80: 74 20 69 6e 74 70 6b 65 79 2d 32 2e 31 2e 31 20  t intpkey-2.1.1 
0f90: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
0fa0: 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20    SELECT * FROM 
0fb0: 74 31 20 57 48 45 52 45 20 62 3d 3d 27 79 27 20  t1 WHERE b=='y' 
0fc0: 41 4e 44 20 72 6f 77 69 64 3c 30 0a 20 20 7d 0a  AND rowid<0.  }.
0fd0: 7d 20 7b 2d 33 20 79 20 7a 7d 0a 64 6f 5f 74 65  } {-3 y z}.do_te
0fe0: 73 74 20 69 6e 74 70 6b 65 79 2d 32 2e 31 2e 32  st intpkey-2.1.2
0ff0: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
1000: 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d     SELECT * FROM
1010: 20 74 31 20 57 48 45 52 45 20 62 3d 3d 27 79 27   t1 WHERE b=='y'
1020: 20 41 4e 44 20 72 6f 77 69 64 3c 30 20 41 4e 44   AND rowid<0 AND
1030: 20 72 6f 77 69 64 3e 3d 2d 32 30 0a 20 20 7d 0a   rowid>=-20.  }.
1040: 7d 20 7b 2d 33 20 79 20 7a 7d 0a 64 6f 5f 74 65  } {-3 y z}.do_te
1050: 73 74 20 69 6e 74 70 6b 65 79 2d 32 2e 31 2e 33  st intpkey-2.1.3
1060: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
1070: 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d     SELECT * FROM
1080: 20 74 31 20 57 48 45 52 45 20 62 3e 3d 27 79 27   t1 WHERE b>='y'
1090: 0a 20 20 7d 0a 7d 20 7b 2d 33 20 79 20 7a 7d 0a  .  }.} {-3 y z}.
10a0: 64 6f 5f 74 65 73 74 20 69 6e 74 70 6b 65 79 2d  do_test intpkey-
10b0: 32 2e 31 2e 34 20 7b 0a 20 20 65 78 65 63 73 71  2.1.4 {.  execsq
10c0: 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a  l {.    SELECT *
10d0: 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 62   FROM t1 WHERE b
10e0: 3e 3d 27 79 27 20 41 4e 44 20 72 6f 77 69 64 3c  >='y' AND rowid<
10f0: 31 30 0a 20 20 7d 0a 7d 20 7b 2d 33 20 79 20 7a  10.  }.} {-3 y z
1100: 7d 0a 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70 6b  }..do_test intpk
1110: 65 79 2d 32 2e 32 20 7b 0a 20 20 65 78 65 63 73  ey-2.2 {.  execs
1120: 71 6c 20 7b 0a 20 20 20 20 55 50 44 41 54 45 20  ql {.    UPDATE 
1130: 74 31 20 53 45 54 20 61 3d 38 20 57 48 45 52 45  t1 SET a=8 WHERE
1140: 20 62 3d 3d 27 79 27 3b 0a 20 20 20 20 53 45 4c   b=='y';.    SEL
1150: 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 20 57 48  ECT * FROM t1 WH
1160: 45 52 45 20 62 3d 3d 27 79 27 3b 0a 20 20 7d 0a  ERE b=='y';.  }.
1170: 7d 20 7b 38 20 79 20 7a 7d 0a 64 6f 5f 74 65 73  } {8 y z}.do_tes
1180: 74 20 69 6e 74 70 6b 65 79 2d 32 2e 33 20 7b 0a  t intpkey-2.3 {.
1190: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
11a0: 53 45 4c 45 43 54 20 72 6f 77 69 64 2c 20 2a 20  SELECT rowid, * 
11b0: 46 52 4f 4d 20 74 31 3b 0a 20 20 7d 0a 7d 20 7b  FROM t1;.  }.} {
11c0: 34 20 34 20 6f 6e 65 20 74 77 6f 20 35 20 35 20  4 4 one two 5 5 
11d0: 68 65 6c 6c 6f 20 77 6f 72 6c 64 20 36 20 36 20  hello world 6 6 
11e0: 73 65 63 6f 6e 64 20 65 6e 74 72 79 20 38 20 38  second entry 8 8
11f0: 20 79 20 7a 7d 0a 64 6f 5f 74 65 73 74 20 69 6e   y z}.do_test in
1200: 74 70 6b 65 79 2d 32 2e 34 20 7b 0a 20 20 65 78  tpkey-2.4 {.  ex
1210: 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45  ecsql {.    SELE
1220: 43 54 20 72 6f 77 69 64 2c 20 2a 20 46 52 4f 4d  CT rowid, * FROM
1230: 20 74 31 20 57 48 45 52 45 20 62 3c 27 73 65 63   t1 WHERE b<'sec
1240: 6f 6e 64 27 0a 20 20 7d 0a 7d 20 7b 35 20 35 20  ond'.  }.} {5 5 
1250: 68 65 6c 6c 6f 20 77 6f 72 6c 64 20 34 20 34 20  hello world 4 4 
1260: 6f 6e 65 20 74 77 6f 7d 0a 64 6f 5f 74 65 73 74  one two}.do_test
1270: 20 69 6e 74 70 6b 65 79 2d 32 2e 34 2e 31 20 7b   intpkey-2.4.1 {
1280: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
1290: 20 53 45 4c 45 43 54 20 72 6f 77 69 64 2c 20 2a   SELECT rowid, *
12a0: 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 27   FROM t1 WHERE '
12b0: 73 65 63 6f 6e 64 27 3e 62 0a 20 20 7d 0a 7d 20  second'>b.  }.} 
12c0: 7b 35 20 35 20 68 65 6c 6c 6f 20 77 6f 72 6c 64  {5 5 hello world
12d0: 20 34 20 34 20 6f 6e 65 20 74 77 6f 7d 0a 64 6f   4 4 one two}.do
12e0: 5f 74 65 73 74 20 69 6e 74 70 6b 65 79 2d 32 2e  _test intpkey-2.
12f0: 34 2e 32 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  4.2 {.  execsql 
1300: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 72 6f 77  {.    SELECT row
1310: 69 64 2c 20 2a 20 46 52 4f 4d 20 74 31 20 57 48  id, * FROM t1 WH
1320: 45 52 45 20 38 3e 72 6f 77 69 64 20 41 4e 44 20  ERE 8>rowid AND 
1330: 27 73 65 63 6f 6e 64 27 3e 62 0a 20 20 7d 0a 7d  'second'>b.  }.}
1340: 20 7b 34 20 34 20 6f 6e 65 20 74 77 6f 20 35 20   {4 4 one two 5 
1350: 35 20 68 65 6c 6c 6f 20 77 6f 72 6c 64 7d 0a 64  5 hello world}.d
1360: 6f 5f 74 65 73 74 20 69 6e 74 70 6b 65 79 2d 32  o_test intpkey-2
1370: 2e 34 2e 33 20 7b 0a 20 20 65 78 65 63 73 71 6c  .4.3 {.  execsql
1380: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 72 6f   {.    SELECT ro
1390: 77 69 64 2c 20 2a 20 46 52 4f 4d 20 74 31 20 57  wid, * FROM t1 W
13a0: 48 45 52 45 20 38 3e 72 6f 77 69 64 20 41 4e 44  HERE 8>rowid AND
13b0: 20 27 73 65 63 6f 6e 64 27 3e 62 20 41 4e 44 20   'second'>b AND 
13c0: 30 3c 72 6f 77 69 64 0a 20 20 7d 0a 7d 20 7b 34  0<rowid.  }.} {4
13d0: 20 34 20 6f 6e 65 20 74 77 6f 20 35 20 35 20 68   4 one two 5 5 h
13e0: 65 6c 6c 6f 20 77 6f 72 6c 64 7d 0a 64 6f 5f 74  ello world}.do_t
13f0: 65 73 74 20 69 6e 74 70 6b 65 79 2d 32 2e 35 20  est intpkey-2.5 
1400: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
1410: 20 20 53 45 4c 45 43 54 20 72 6f 77 69 64 2c 20    SELECT rowid, 
1420: 2a 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20  * FROM t1 WHERE 
1430: 62 3e 27 61 27 0a 20 20 7d 0a 7d 20 7b 35 20 35  b>'a'.  }.} {5 5
1440: 20 68 65 6c 6c 6f 20 77 6f 72 6c 64 20 34 20 34   hello world 4 4
1450: 20 6f 6e 65 20 74 77 6f 20 36 20 36 20 73 65 63   one two 6 6 sec
1460: 6f 6e 64 20 65 6e 74 72 79 20 38 20 38 20 79 20  ond entry 8 8 y 
1470: 7a 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70 6b  z}.do_test intpk
1480: 65 79 2d 32 2e 36 20 7b 0a 20 20 65 78 65 63 73  ey-2.6 {.  execs
1490: 71 6c 20 7b 0a 20 20 20 20 44 45 4c 45 54 45 20  ql {.    DELETE 
14a0: 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 72 6f  FROM t1 WHERE ro
14b0: 77 69 64 3d 34 3b 0a 20 20 20 20 53 45 4c 45 43  wid=4;.    SELEC
14c0: 54 20 2a 20 46 52 4f 4d 20 74 31 20 57 48 45 52  T * FROM t1 WHER
14d0: 45 20 62 3e 27 61 27 3b 0a 20 20 7d 0a 7d 20 7b  E b>'a';.  }.} {
14e0: 35 20 68 65 6c 6c 6f 20 77 6f 72 6c 64 20 36 20  5 hello world 6 
14f0: 73 65 63 6f 6e 64 20 65 6e 74 72 79 20 38 20 79  second entry 8 y
1500: 20 7a 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70   z}.do_test intp
1510: 6b 65 79 2d 32 2e 37 20 7b 0a 20 20 65 78 65 63  key-2.7 {.  exec
1520: 73 71 6c 20 7b 0a 20 20 20 20 55 50 44 41 54 45  sql {.    UPDATE
1530: 20 74 31 20 53 45 54 20 61 3d 2d 34 20 57 48 45   t1 SET a=-4 WHE
1540: 52 45 20 72 6f 77 69 64 3d 38 3b 0a 20 20 20 20  RE rowid=8;.    
1550: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31  SELECT * FROM t1
1560: 20 57 48 45 52 45 20 62 3e 27 61 27 3b 0a 20 20   WHERE b>'a';.  
1570: 7d 0a 7d 20 7b 35 20 68 65 6c 6c 6f 20 77 6f 72  }.} {5 hello wor
1580: 6c 64 20 36 20 73 65 63 6f 6e 64 20 65 6e 74 72  ld 6 second entr
1590: 79 20 2d 34 20 79 20 7a 7d 0a 64 6f 5f 74 65 73  y -4 y z}.do_tes
15a0: 74 20 69 6e 74 70 6b 65 79 2d 32 2e 37 20 7b 0a  t intpkey-2.7 {.
15b0: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
15c0: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31  SELECT * FROM t1
15d0: 0a 20 20 7d 0a 7d 20 7b 2d 34 20 79 20 7a 20 35  .  }.} {-4 y z 5
15e0: 20 68 65 6c 6c 6f 20 77 6f 72 6c 64 20 36 20 73   hello world 6 s
15f0: 65 63 6f 6e 64 20 65 6e 74 72 79 7d 0a 0a 23 20  econd entry}..# 
1600: 44 6f 20 61 6e 20 53 51 4c 20 73 74 61 74 65 6d  Do an SQL statem
1610: 65 6e 74 2e 20 20 41 70 70 65 6e 64 20 74 68 65  ent.  Append the
1620: 20 73 65 61 72 63 68 20 63 6f 75 6e 74 20 74 6f   search count to
1630: 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20   the end of the 
1640: 72 65 73 75 6c 74 2e 0a 23 0a 70 72 6f 63 20 63  result..#.proc c
1650: 6f 75 6e 74 20 73 71 6c 20 7b 0a 20 20 73 65 74  ount sql {.  set
1660: 20 3a 3a 73 71 6c 69 74 65 5f 73 65 61 72 63 68   ::sqlite_search
1670: 5f 63 6f 75 6e 74 20 30 0a 20 20 72 65 74 75 72  _count 0.  retur
1680: 6e 20 5b 63 6f 6e 63 61 74 20 5b 65 78 65 63 73  n [concat [execs
1690: 71 6c 20 24 73 71 6c 5d 20 24 3a 3a 73 71 6c 69  ql $sql] $::sqli
16a0: 74 65 5f 73 65 61 72 63 68 5f 63 6f 75 6e 74 5d  te_search_count]
16b0: 0a 7d 0a 0a 23 20 43 72 65 61 74 65 20 69 6e 64  .}..# Create ind
16c0: 69 63 65 73 20 74 68 61 74 20 69 6e 63 6c 75 64  ices that includ
16d0: 65 20 74 68 65 20 69 6e 74 65 67 65 72 20 70 72  e the integer pr
16e0: 69 6d 61 72 79 20 6b 65 79 20 61 73 20 6f 6e 65  imary key as one
16f0: 20 6f 66 20 74 68 65 69 72 0a 23 20 63 6f 6c 75   of their.# colu
1700: 6d 6e 73 2e 0a 23 0a 64 6f 5f 74 65 73 74 20 69  mns..#.do_test i
1710: 6e 74 70 6b 65 79 2d 33 2e 31 20 7b 0a 20 20 65  ntpkey-3.1 {.  e
1720: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 43 52 45  xecsql {.    CRE
1730: 41 54 45 20 49 4e 44 45 58 20 69 32 20 4f 4e 20  ATE INDEX i2 ON 
1740: 74 31 28 61 29 3b 0a 20 20 7d 0a 7d 20 7b 7d 0a  t1(a);.  }.} {}.
1750: 64 6f 5f 74 65 73 74 20 69 6e 74 70 6b 65 79 2d  do_test intpkey-
1760: 33 2e 32 20 7b 0a 20 20 63 6f 75 6e 74 20 7b 0a  3.2 {.  count {.
1770: 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f      SELECT * FRO
1780: 4d 20 74 31 20 57 48 45 52 45 20 61 3d 35 3b 0a  M t1 WHERE a=5;.
1790: 20 20 7d 0a 7d 20 7b 35 20 68 65 6c 6c 6f 20 77    }.} {5 hello w
17a0: 6f 72 6c 64 20 30 7d 0a 64 6f 5f 74 65 73 74 20  orld 0}.do_test 
17b0: 69 6e 74 70 6b 65 79 2d 33 2e 33 20 7b 0a 20 20  intpkey-3.3 {.  
17c0: 63 6f 75 6e 74 20 7b 0a 20 20 20 20 53 45 4c 45  count {.    SELE
17d0: 43 54 20 2a 20 46 52 4f 4d 20 74 31 20 57 48 45  CT * FROM t1 WHE
17e0: 52 45 20 61 3e 34 20 41 4e 44 20 61 3c 36 3b 0a  RE a>4 AND a<6;.
17f0: 20 20 7d 0a 7d 20 7b 35 20 68 65 6c 6c 6f 20 77    }.} {5 hello w
1800: 6f 72 6c 64 20 32 7d 0a 64 6f 5f 74 65 73 74 20  orld 2}.do_test 
1810: 69 6e 74 70 6b 65 79 2d 33 2e 34 20 7b 0a 20 20  intpkey-3.4 {.  
1820: 63 6f 75 6e 74 20 7b 0a 20 20 20 20 53 45 4c 45  count {.    SELE
1830: 43 54 20 2a 20 46 52 4f 4d 20 74 31 20 57 48 45  CT * FROM t1 WHE
1840: 52 45 20 62 3e 3d 27 68 65 6c 6c 6f 27 20 41 4e  RE b>='hello' AN
1850: 44 20 62 3c 27 68 65 6c 6c 6f 32 27 3b 0a 20 20  D b<'hello2';.  
1860: 7d 0a 7d 20 7b 35 20 68 65 6c 6c 6f 20 77 6f 72  }.} {5 hello wor
1870: 6c 64 20 33 7d 0a 64 6f 5f 74 65 73 74 20 69 6e  ld 3}.do_test in
1880: 74 70 6b 65 79 2d 33 2e 35 20 7b 0a 20 20 65 78  tpkey-3.5 {.  ex
1890: 65 63 73 71 6c 20 7b 0a 20 20 20 20 43 52 45 41  ecsql {.    CREA
18a0: 54 45 20 49 4e 44 45 58 20 69 33 20 4f 4e 20 74  TE INDEX i3 ON t
18b0: 31 28 63 2c 61 29 3b 0a 20 20 7d 0a 7d 20 7b 7d  1(c,a);.  }.} {}
18c0: 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70 6b 65 79  .do_test intpkey
18d0: 2d 33 2e 36 20 7b 0a 20 20 63 6f 75 6e 74 20 7b  -3.6 {.  count {
18e0: 0a 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52  .    SELECT * FR
18f0: 4f 4d 20 74 31 20 57 48 45 52 45 20 63 3d 3d 27  OM t1 WHERE c=='
1900: 77 6f 72 6c 64 27 3b 0a 20 20 7d 0a 7d 20 7b 35  world';.  }.} {5
1910: 20 68 65 6c 6c 6f 20 77 6f 72 6c 64 20 33 7d 0a   hello world 3}.
1920: 64 6f 5f 74 65 73 74 20 69 6e 74 70 6b 65 79 2d  do_test intpkey-
1930: 33 2e 37 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  3.7 {.  execsql 
1940: 7b 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20  {INSERT INTO t1 
1950: 56 41 4c 55 45 53 28 31 31 2c 27 68 65 6c 6c 6f  VALUES(11,'hello
1960: 27 2c 27 77 6f 72 6c 64 27 29 7d 0a 20 20 63 6f  ','world')}.  co
1970: 75 6e 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  unt {.    SELECT
1980: 20 2a 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45   * FROM t1 WHERE
1990: 20 63 3d 3d 27 77 6f 72 6c 64 27 3b 0a 20 20 7d   c=='world';.  }
19a0: 0a 7d 20 7b 35 20 68 65 6c 6c 6f 20 77 6f 72 6c  .} {5 hello worl
19b0: 64 20 31 31 20 68 65 6c 6c 6f 20 77 6f 72 6c 64  d 11 hello world
19c0: 20 35 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70   5}.do_test intp
19d0: 6b 65 79 2d 33 2e 38 20 7b 0a 20 20 63 6f 75 6e  key-3.8 {.  coun
19e0: 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a  t {.    SELECT *
19f0: 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 63   FROM t1 WHERE c
1a00: 3d 3d 27 77 6f 72 6c 64 27 20 41 4e 44 20 61 3e  =='world' AND a>
1a10: 37 3b 0a 20 20 7d 0a 7d 20 7b 31 31 20 68 65 6c  7;.  }.} {11 hel
1a20: 6c 6f 20 77 6f 72 6c 64 20 35 7d 0a 64 6f 5f 74  lo world 5}.do_t
1a30: 65 73 74 20 69 6e 74 70 6b 65 79 2d 33 2e 39 20  est intpkey-3.9 
1a40: 7b 0a 20 20 63 6f 75 6e 74 20 7b 0a 20 20 20 20  {.  count {.    
1a50: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31  SELECT * FROM t1
1a60: 20 57 48 45 52 45 20 37 3c 61 3b 0a 20 20 7d 0a   WHERE 7<a;.  }.
1a70: 7d 20 7b 31 31 20 68 65 6c 6c 6f 20 77 6f 72 6c  } {11 hello worl
1a80: 64 20 31 7d 0a 0a 23 20 54 65 73 74 20 69 6e 65  d 1}..# Test ine
1a90: 71 75 61 6c 69 74 79 20 63 6f 6e 73 74 72 61 69  quality constrai
1aa0: 6e 74 73 20 6f 6e 20 69 6e 74 65 67 65 72 20 70  nts on integer p
1ab0: 72 69 6d 61 72 79 20 6b 65 79 73 20 61 6e 64 20  rimary keys and 
1ac0: 72 6f 77 69 64 73 0a 23 0a 64 6f 5f 74 65 73 74  rowids.#.do_test
1ad0: 20 69 6e 74 70 6b 65 79 2d 34 2e 31 20 7b 0a 20   intpkey-4.1 {. 
1ae0: 20 63 6f 75 6e 74 20 7b 0a 20 20 20 20 53 45 4c   count {.    SEL
1af0: 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 20 57 48  ECT * FROM t1 WH
1b00: 45 52 45 20 31 31 3d 72 6f 77 69 64 0a 20 20 7d  ERE 11=rowid.  }
1b10: 0a 7d 20 7b 31 31 20 68 65 6c 6c 6f 20 77 6f 72  .} {11 hello wor
1b20: 6c 64 20 30 7d 0a 64 6f 5f 74 65 73 74 20 69 6e  ld 0}.do_test in
1b30: 74 70 6b 65 79 2d 34 2e 32 20 7b 0a 20 20 63 6f  tpkey-4.2 {.  co
1b40: 75 6e 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  unt {.    SELECT
1b50: 20 2a 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45   * FROM t1 WHERE
1b60: 20 31 31 3d 72 6f 77 69 64 20 41 4e 44 20 62 3d   11=rowid AND b=
1b70: 3d 27 68 65 6c 6c 6f 27 0a 20 20 7d 0a 7d 20 7b  ='hello'.  }.} {
1b80: 31 31 20 68 65 6c 6c 6f 20 77 6f 72 6c 64 20 30  11 hello world 0
1b90: 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70 6b 65  }.do_test intpke
1ba0: 79 2d 34 2e 33 20 7b 0a 20 20 63 6f 75 6e 74 20  y-4.3 {.  count 
1bb0: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46  {.    SELECT * F
1bc0: 52 4f 4d 20 74 31 20 57 48 45 52 45 20 31 31 3d  ROM t1 WHERE 11=
1bd0: 72 6f 77 69 64 20 41 4e 44 20 62 3d 3d 27 68 65  rowid AND b=='he
1be0: 6c 6c 6f 27 20 41 4e 44 20 63 20 49 53 20 4e 4f  llo' AND c IS NO
1bf0: 54 20 4e 55 4c 4c 3b 0a 20 20 7d 0a 7d 20 7b 31  T NULL;.  }.} {1
1c00: 31 20 68 65 6c 6c 6f 20 77 6f 72 6c 64 20 30 7d  1 hello world 0}
1c10: 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70 6b 65 79  .do_test intpkey
1c20: 2d 34 2e 34 20 7b 0a 20 20 63 6f 75 6e 74 20 7b  -4.4 {.  count {
1c30: 0a 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52  .    SELECT * FR
1c40: 4f 4d 20 74 31 20 57 48 45 52 45 20 72 6f 77 69  OM t1 WHERE rowi
1c50: 64 3d 3d 31 31 0a 20 20 7d 0a 7d 20 7b 31 31 20  d==11.  }.} {11 
1c60: 68 65 6c 6c 6f 20 77 6f 72 6c 64 20 30 7d 0a 64  hello world 0}.d
1c70: 6f 5f 74 65 73 74 20 69 6e 74 70 6b 65 79 2d 34  o_test intpkey-4
1c80: 2e 35 20 7b 0a 20 20 63 6f 75 6e 74 20 7b 0a 20  .5 {.  count {. 
1c90: 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d     SELECT * FROM
1ca0: 20 74 31 20 57 48 45 52 45 20 6f 69 64 3d 3d 31   t1 WHERE oid==1
1cb0: 31 20 41 4e 44 20 62 3d 3d 27 68 65 6c 6c 6f 27  1 AND b=='hello'
1cc0: 0a 20 20 7d 0a 7d 20 7b 31 31 20 68 65 6c 6c 6f  .  }.} {11 hello
1cd0: 20 77 6f 72 6c 64 20 30 7d 0a 64 6f 5f 74 65 73   world 0}.do_tes
1ce0: 74 20 69 6e 74 70 6b 65 79 2d 34 2e 36 20 7b 0a  t intpkey-4.6 {.
1cf0: 20 20 63 6f 75 6e 74 20 7b 0a 20 20 20 20 53 45    count {.    SE
1d00: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 20 57  LECT * FROM t1 W
1d10: 48 45 52 45 20 61 3d 3d 31 31 20 41 4e 44 20 62  HERE a==11 AND b
1d20: 3d 3d 27 68 65 6c 6c 6f 27 20 41 4e 44 20 63 20  =='hello' AND c 
1d30: 49 53 20 4e 4f 54 20 4e 55 4c 4c 3b 0a 20 20 7d  IS NOT NULL;.  }
1d40: 0a 7d 20 7b 31 31 20 68 65 6c 6c 6f 20 77 6f 72  .} {11 hello wor
1d50: 6c 64 20 30 7d 0a 0a 64 6f 5f 74 65 73 74 20 69  ld 0}..do_test i
1d60: 6e 74 70 6b 65 79 2d 34 2e 37 20 7b 0a 20 20 63  ntpkey-4.7 {.  c
1d70: 6f 75 6e 74 20 7b 0a 20 20 20 20 53 45 4c 45 43  ount {.    SELEC
1d80: 54 20 2a 20 46 52 4f 4d 20 74 31 20 57 48 45 52  T * FROM t1 WHER
1d90: 45 20 38 3c 72 6f 77 69 64 3b 0a 20 20 7d 0a 7d  E 8<rowid;.  }.}
1da0: 20 7b 31 31 20 68 65 6c 6c 6f 20 77 6f 72 6c 64   {11 hello world
1db0: 20 31 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70   1}.do_test intp
1dc0: 6b 65 79 2d 34 2e 38 20 7b 0a 20 20 63 6f 75 6e  key-4.8 {.  coun
1dd0: 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a  t {.    SELECT *
1de0: 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 38   FROM t1 WHERE 8
1df0: 3c 72 6f 77 69 64 20 41 4e 44 20 31 31 3e 3d 6f  <rowid AND 11>=o
1e00: 69 64 3b 0a 20 20 7d 0a 7d 20 7b 31 31 20 68 65  id;.  }.} {11 he
1e10: 6c 6c 6f 20 77 6f 72 6c 64 20 31 7d 0a 64 6f 5f  llo world 1}.do_
1e20: 74 65 73 74 20 69 6e 74 70 6b 65 79 2d 34 2e 39  test intpkey-4.9
1e30: 20 7b 0a 20 20 63 6f 75 6e 74 20 7b 0a 20 20 20   {.  count {.   
1e40: 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74   SELECT * FROM t
1e50: 31 20 57 48 45 52 45 20 31 31 3c 3d 5f 72 6f 77  1 WHERE 11<=_row
1e60: 69 64 5f 20 41 4e 44 20 31 32 3e 3d 61 3b 0a 20  id_ AND 12>=a;. 
1e70: 20 7d 0a 7d 20 7b 31 31 20 68 65 6c 6c 6f 20 77   }.} {11 hello w
1e80: 6f 72 6c 64 20 31 7d 0a 64 6f 5f 74 65 73 74 20  orld 1}.do_test 
1e90: 69 6e 74 70 6b 65 79 2d 34 2e 31 30 20 7b 0a 20  intpkey-4.10 {. 
1ea0: 20 63 6f 75 6e 74 20 7b 0a 20 20 20 20 53 45 4c   count {.    SEL
1eb0: 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 20 57 48  ECT * FROM t1 WH
1ec0: 45 52 45 20 30 3e 3d 5f 72 6f 77 69 64 5f 3b 0a  ERE 0>=_rowid_;.
1ed0: 20 20 7d 0a 7d 20 7b 2d 34 20 79 20 7a 20 31 7d    }.} {-4 y z 1}
1ee0: 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70 6b 65 79  .do_test intpkey
1ef0: 2d 34 2e 31 31 20 7b 0a 20 20 63 6f 75 6e 74 20  -4.11 {.  count 
1f00: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46  {.    SELECT * F
1f10: 52 4f 4d 20 74 31 20 57 48 45 52 45 20 61 3c 30  ROM t1 WHERE a<0
1f20: 3b 0a 20 20 7d 0a 7d 20 7b 2d 34 20 79 20 7a 20  ;.  }.} {-4 y z 
1f30: 31 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70 6b  1}.do_test intpk
1f40: 65 79 2d 34 2e 31 32 20 7b 0a 20 20 63 6f 75 6e  ey-4.12 {.  coun
1f50: 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a  t {.    SELECT *
1f60: 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 61   FROM t1 WHERE a
1f70: 3c 30 20 41 4e 44 20 61 3e 31 30 3b 0a 20 20 7d  <0 AND a>10;.  }
1f80: 0a 7d 20 7b 31 7d 0a 0a 23 20 4d 61 6b 65 20 73  .} {1}..# Make s
1f90: 75 72 65 20 69 74 20 69 73 20 4f 4b 20 74 6f 20  ure it is OK to 
1fa0: 69 6e 73 65 72 74 20 61 20 72 6f 77 69 64 20 6f  insert a rowid o
1fb0: 66 20 30 0a 23 0a 64 6f 5f 74 65 73 74 20 69 6e  f 0.#.do_test in
1fc0: 74 70 6b 65 79 2d 35 2e 31 20 7b 0a 20 20 65 78  tpkey-5.1 {.  ex
1fd0: 65 63 73 71 6c 20 7b 0a 20 20 20 20 49 4e 53 45  ecsql {.    INSE
1fe0: 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45  RT INTO t1 VALUE
1ff0: 53 28 30 2c 27 7a 65 72 6f 27 2c 27 65 6e 74 72  S(0,'zero','entr
2000: 79 27 29 3b 0a 20 20 7d 0a 20 20 63 6f 75 6e 74  y');.  }.  count
2010: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a 20   {.    SELECT * 
2020: 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 61 3d  FROM t1 WHERE a=
2030: 30 3b 0a 20 20 7d 0a 7d 20 7b 30 20 7a 65 72 6f  0;.  }.} {0 zero
2040: 20 65 6e 74 72 79 20 30 7d 0a 64 6f 5f 74 65 73   entry 0}.do_tes
2050: 74 20 69 6e 74 70 6b 65 79 2d 35 2e 32 20 7b 0a  t intpkey-5.2 {.
2060: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
2070: 53 45 4c 45 43 54 20 72 6f 77 69 64 2c 20 61 20  SELECT rowid, a 
2080: 46 52 4f 4d 20 74 31 0a 20 20 7d 0a 7d 20 7b 2d  FROM t1.  }.} {-
2090: 34 20 2d 34 20 30 20 30 20 35 20 35 20 36 20 36  4 -4 0 0 5 5 6 6
20a0: 20 31 31 20 31 31 7d 0a 0a 23 20 54 65 73 74 20   11 11}..# Test 
20b0: 74 68 65 20 61 62 69 6c 69 74 79 20 6f 66 20 74  the ability of t
20c0: 68 65 20 43 4f 50 59 20 63 6f 6d 6d 61 6e 64 20  he COPY command 
20d0: 74 6f 20 70 75 74 20 64 61 74 61 20 69 6e 74 6f  to put data into
20e0: 20 61 0a 23 20 74 61 62 6c 65 20 74 68 61 74 20   a.# table that 
20f0: 63 6f 6e 74 61 69 6e 73 20 61 6e 20 69 6e 74 65  contains an inte
2100: 67 65 72 20 70 72 69 6d 61 72 79 20 6b 65 79 2e  ger primary key.
2110: 0a 23 0a 23 20 43 4f 50 59 20 63 6f 6d 6d 61 6e  .#.# COPY comman
2120: 64 20 68 61 73 20 62 65 65 6e 20 72 65 6d 6f 76  d has been remov
2130: 65 64 2e 20 20 42 75 74 20 77 65 20 72 65 74 61  ed.  But we reta
2140: 69 6e 20 74 68 65 73 65 20 74 65 73 74 73 20 73  in these tests s
2150: 6f 0a 23 20 74 68 61 74 20 74 68 65 20 74 61 62  o.# that the tab
2160: 6c 65 73 20 77 69 6c 6c 20 63 6f 6e 74 61 69 6e  les will contain
2170: 20 74 68 65 20 72 69 67 68 74 20 64 61 74 61 20   the right data 
2180: 66 6f 72 20 74 65 73 74 73 20 74 68 61 74 20 66  for tests that f
2190: 6f 6c 6c 6f 77 2e 0a 23 0a 64 6f 5f 74 65 73 74  ollow..#.do_test
21a0: 20 69 6e 74 70 6b 65 79 2d 36 2e 31 20 7b 0a 20   intpkey-6.1 {. 
21b0: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 42   execsql {.    B
21c0: 45 47 49 4e 3b 0a 20 20 20 20 49 4e 53 45 52 54  EGIN;.    INSERT
21d0: 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28   INTO t1 VALUES(
21e0: 32 30 2c 27 62 2d 32 30 27 2c 27 63 2d 32 30 27  20,'b-20','c-20'
21f0: 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e  );.    INSERT IN
2200: 54 4f 20 74 31 20 56 41 4c 55 45 53 28 32 31 2c  TO t1 VALUES(21,
2210: 27 62 2d 32 31 27 2c 27 63 2d 32 31 27 29 3b 0a  'b-21','c-21');.
2220: 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20      INSERT INTO 
2230: 74 31 20 56 41 4c 55 45 53 28 32 32 2c 27 62 2d  t1 VALUES(22,'b-
2240: 32 32 27 2c 27 63 2d 32 32 27 29 3b 0a 20 20 20  22','c-22');.   
2250: 20 43 4f 4d 4d 49 54 3b 0a 20 20 20 20 53 45 4c   COMMIT;.    SEL
2260: 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 20 57 48  ECT * FROM t1 WH
2270: 45 52 45 20 61 3e 3d 32 30 3b 0a 20 20 7d 0a 7d  ERE a>=20;.  }.}
2280: 20 7b 32 30 20 62 2d 32 30 20 63 2d 32 30 20 32   {20 b-20 c-20 2
2290: 31 20 62 2d 32 31 20 63 2d 32 31 20 32 32 20 62  1 b-21 c-21 22 b
22a0: 2d 32 32 20 63 2d 32 32 7d 0a 64 6f 5f 74 65 73  -22 c-22}.do_tes
22b0: 74 20 69 6e 74 70 6b 65 79 2d 36 2e 32 20 7b 0a  t intpkey-6.2 {.
22c0: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
22d0: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31  SELECT * FROM t1
22e0: 20 57 48 45 52 45 20 62 3d 3d 27 68 65 6c 6c 6f   WHERE b=='hello
22f0: 27 0a 20 20 7d 0a 7d 20 7b 35 20 68 65 6c 6c 6f  '.  }.} {5 hello
2300: 20 77 6f 72 6c 64 20 31 31 20 68 65 6c 6c 6f 20   world 11 hello 
2310: 77 6f 72 6c 64 7d 0a 64 6f 5f 74 65 73 74 20 69  world}.do_test i
2320: 6e 74 70 6b 65 79 2d 36 2e 33 20 7b 0a 20 20 65  ntpkey-6.3 {.  e
2330: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 44 45 4c  xecsql {.    DEL
2340: 45 54 45 20 46 52 4f 4d 20 74 31 20 57 48 45 52  ETE FROM t1 WHER
2350: 45 20 62 3d 27 62 2d 32 31 27 3b 0a 20 20 20 20  E b='b-21';.    
2360: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31  SELECT * FROM t1
2370: 20 57 48 45 52 45 20 62 3d 3d 27 62 2d 32 31 27   WHERE b=='b-21'
2380: 3b 0a 20 20 7d 0a 7d 20 7b 7d 0a 64 6f 5f 74 65  ;.  }.} {}.do_te
2390: 73 74 20 69 6e 74 70 6b 65 79 2d 36 2e 34 20 7b  st intpkey-6.4 {
23a0: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
23b0: 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74   SELECT * FROM t
23c0: 31 20 57 48 45 52 45 20 61 3e 3d 32 30 0a 20 20  1 WHERE a>=20.  
23d0: 7d 0a 7d 20 7b 32 30 20 62 2d 32 30 20 63 2d 32  }.} {20 b-20 c-2
23e0: 30 20 32 32 20 62 2d 32 32 20 63 2d 32 32 7d 0a  0 22 b-22 c-22}.
23f0: 0a 23 20 44 6f 20 61 6e 20 69 6e 73 65 72 74 20  .# Do an insert 
2400: 6f 66 20 76 61 6c 75 65 73 20 77 69 74 68 20 74  of values with t
2410: 68 65 20 63 6f 6c 75 6d 6e 73 20 73 70 65 63 69  he columns speci
2420: 66 69 65 64 20 6f 75 74 20 6f 66 20 6f 72 64 65  fied out of orde
2430: 72 2e 0a 23 0a 64 6f 5f 74 65 73 74 20 69 6e 74  r..#.do_test int
2440: 70 6b 65 79 2d 37 2e 31 20 7b 0a 20 20 65 78 65  pkey-7.1 {.  exe
2450: 63 73 71 6c 20 7b 0a 20 20 20 20 49 4e 53 45 52  csql {.    INSER
2460: 54 20 49 4e 54 4f 20 74 31 28 63 2c 62 2c 61 29  T INTO t1(c,b,a)
2470: 20 56 41 4c 55 45 53 28 27 72 6f 77 27 2c 27 6e   VALUES('row','n
2480: 65 77 27 2c 33 30 29 3b 0a 20 20 20 20 53 45 4c  ew',30);.    SEL
2490: 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 20 57 48  ECT * FROM t1 WH
24a0: 45 52 45 20 72 6f 77 69 64 3e 3d 33 30 3b 0a 20  ERE rowid>=30;. 
24b0: 20 7d 0a 7d 20 7b 33 30 20 6e 65 77 20 72 6f 77   }.} {30 new row
24c0: 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70 6b 65  }.do_test intpke
24d0: 79 2d 37 2e 32 20 7b 0a 20 20 65 78 65 63 73 71  y-7.2 {.  execsq
24e0: 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a  l {.    SELECT *
24f0: 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 72   FROM t1 WHERE r
2500: 6f 77 69 64 3e 32 30 3b 0a 20 20 7d 0a 7d 20 7b  owid>20;.  }.} {
2510: 32 32 20 62 2d 32 32 20 63 2d 32 32 20 33 30 20  22 b-22 c-22 30 
2520: 6e 65 77 20 72 6f 77 7d 0a 0a 23 20 44 6f 20 61  new row}..# Do a
2530: 6e 20 69 6e 73 65 72 74 20 66 72 6f 6d 20 61 20  n insert from a 
2540: 73 65 6c 65 63 74 20 73 74 61 74 65 6d 65 6e 74  select statement
2550: 2e 0a 23 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70  ..#.do_test intp
2560: 6b 65 79 2d 38 2e 31 20 7b 0a 20 20 65 78 65 63  key-8.1 {.  exec
2570: 73 71 6c 20 7b 0a 20 20 20 20 43 52 45 41 54 45  sql {.    CREATE
2580: 20 54 41 42 4c 45 20 74 32 28 78 20 49 4e 54 45   TABLE t2(x INTE
2590: 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 2c  GER PRIMARY KEY,
25a0: 20 79 2c 20 7a 29 3b 0a 20 20 20 20 49 4e 53 45   y, z);.    INSE
25b0: 52 54 20 49 4e 54 4f 20 74 32 20 53 45 4c 45 43  RT INTO t2 SELEC
25c0: 54 20 2a 20 46 52 4f 4d 20 74 31 3b 0a 20 20 20  T * FROM t1;.   
25d0: 20 53 45 4c 45 43 54 20 72 6f 77 69 64 20 46 52   SELECT rowid FR
25e0: 4f 4d 20 74 32 3b 0a 20 20 7d 0a 7d 20 7b 2d 34  OM t2;.  }.} {-4
25f0: 20 30 20 35 20 36 20 31 31 20 32 30 20 32 32 20   0 5 6 11 20 22 
2600: 33 30 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70  30}.do_test intp
2610: 6b 65 79 2d 38 2e 32 20 7b 0a 20 20 65 78 65 63  key-8.2 {.  exec
2620: 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  sql {.    SELECT
2630: 20 78 20 46 52 4f 4d 20 74 32 3b 0a 20 20 7d 0a   x FROM t2;.  }.
2640: 7d 20 7b 2d 34 20 30 20 35 20 36 20 31 31 20 32  } {-4 0 5 6 11 2
2650: 30 20 32 32 20 33 30 7d 0a 0a 64 6f 5f 74 65 73  0 22 30}..do_tes
2660: 74 20 69 6e 74 70 6b 65 79 2d 39 2e 31 20 7b 0a  t intpkey-9.1 {.
2670: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
2680: 55 50 44 41 54 45 20 74 31 20 53 45 54 20 63 3d  UPDATE t1 SET c=
2690: 27 77 77 77 27 20 57 48 45 52 45 20 63 3d 27 77  'www' WHERE c='w
26a0: 6f 72 6c 64 27 3b 0a 20 20 20 20 53 45 4c 45 43  orld';.    SELEC
26b0: 54 20 72 6f 77 69 64 2c 20 61 2c 20 63 20 46 52  T rowid, a, c FR
26c0: 4f 4d 20 74 31 20 57 48 45 52 45 20 63 3d 3d 27  OM t1 WHERE c=='
26d0: 77 77 77 27 3b 0a 20 20 7d 0a 7d 20 7b 35 20 35  www';.  }.} {5 5
26e0: 20 77 77 77 20 31 31 20 31 31 20 77 77 77 7d 0a   www 11 11 www}.
26f0: 0a 0a 23 20 43 68 65 63 6b 20 69 6e 73 65 72 74  ..# Check insert
2700: 20 6f 66 20 4e 55 4c 4c 20 66 6f 72 20 70 72 69   of NULL for pri
2710: 6d 61 72 79 20 6b 65 79 0a 23 0a 64 6f 5f 74 65  mary key.#.do_te
2720: 73 74 20 69 6e 74 70 6b 65 79 2d 31 30 2e 31 20  st intpkey-10.1 
2730: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
2740: 20 20 44 52 4f 50 20 54 41 42 4c 45 20 74 32 3b    DROP TABLE t2;
2750: 0a 20 20 20 20 43 52 45 41 54 45 20 54 41 42 4c  .    CREATE TABL
2760: 45 20 74 32 28 78 20 49 4e 54 45 47 45 52 20 50  E t2(x INTEGER P
2770: 52 49 4d 41 52 59 20 4b 45 59 2c 20 79 2c 20 7a  RIMARY KEY, y, z
2780: 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e  );.    INSERT IN
2790: 54 4f 20 74 32 20 56 41 4c 55 45 53 28 4e 55 4c  TO t2 VALUES(NUL
27a0: 4c 2c 20 31 2c 20 32 29 3b 0a 20 20 20 20 53 45  L, 1, 2);.    SE
27b0: 4c 45 43 54 20 2a 20 66 72 6f 6d 20 74 32 3b 0a  LECT * from t2;.
27c0: 20 20 7d 0a 7d 20 7b 31 20 31 20 32 7d 0a 64 6f    }.} {1 1 2}.do
27d0: 5f 74 65 73 74 20 69 6e 74 70 6b 65 79 2d 31 30  _test intpkey-10
27e0: 2e 32 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  .2 {.  execsql {
27f0: 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f  .    INSERT INTO
2800: 20 74 32 20 56 41 4c 55 45 53 28 4e 55 4c 4c 2c   t2 VALUES(NULL,
2810: 20 32 2c 20 33 29 3b 0a 20 20 20 20 53 45 4c 45   2, 3);.    SELE
2820: 43 54 20 2a 20 66 72 6f 6d 20 74 32 20 57 48 45  CT * from t2 WHE
2830: 52 45 20 78 3d 32 3b 0a 20 20 7d 0a 7d 20 7b 32  RE x=2;.  }.} {2
2840: 20 32 20 33 7d 0a 64 6f 5f 74 65 73 74 20 69 6e   2 3}.do_test in
2850: 74 70 6b 65 79 2d 31 30 2e 33 20 7b 0a 20 20 65  tpkey-10.3 {.  e
2860: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 49 4e 53  xecsql {.    INS
2870: 45 52 54 20 49 4e 54 4f 20 74 32 20 53 45 4c 45  ERT INTO t2 SELE
2880: 43 54 20 4e 55 4c 4c 2c 20 7a 2c 20 79 20 46 52  CT NULL, z, y FR
2890: 4f 4d 20 74 32 3b 0a 20 20 20 20 53 45 4c 45 43  OM t2;.    SELEC
28a0: 54 20 2a 20 46 52 4f 4d 20 74 32 3b 0a 20 20 7d  T * FROM t2;.  }
28b0: 0a 7d 20 7b 31 20 31 20 32 20 32 20 32 20 33 20  .} {1 1 2 2 2 3 
28c0: 33 20 32 20 31 20 34 20 33 20 32 7d 0a 0a 23 20  3 2 1 4 3 2}..# 
28d0: 54 68 69 73 20 74 65 73 74 73 20 63 68 65 63 6b  This tests check
28e0: 73 20 74 6f 20 73 65 65 20 69 66 20 61 20 66 6c  s to see if a fl
28f0: 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 6e 75 6d  oating point num
2900: 62 65 72 20 63 61 6e 20 62 65 20 75 73 65 64 0a  ber can be used.
2910: 23 20 74 6f 20 72 65 66 65 72 65 6e 63 65 20 61  # to reference a
2920: 6e 20 69 6e 74 65 67 65 72 20 70 72 69 6d 61 72  n integer primar
2930: 79 20 6b 65 79 2e 0a 23 0a 64 6f 5f 74 65 73 74  y key..#.do_test
2940: 20 69 6e 74 70 6b 65 79 2d 31 31 2e 31 20 7b 0a   intpkey-11.1 {.
2950: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
2960: 53 45 4c 45 43 54 20 62 20 46 52 4f 4d 20 74 31  SELECT b FROM t1
2970: 20 57 48 45 52 45 20 61 3d 32 2e 30 2b 33 2e 30   WHERE a=2.0+3.0
2980: 3b 0a 20 20 7d 0a 7d 20 7b 68 65 6c 6c 6f 7d 0a  ;.  }.} {hello}.
2990: 64 6f 5f 74 65 73 74 20 69 6e 74 70 6b 65 79 2d  do_test intpkey-
29a0: 31 31 2e 31 20 7b 0a 20 20 65 78 65 63 73 71 6c  11.1 {.  execsql
29b0: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 62 20   {.    SELECT b 
29c0: 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 61 3d  FROM t1 WHERE a=
29d0: 32 2e 30 2b 33 2e 35 3b 0a 20 20 7d 0a 7d 20 7b  2.0+3.5;.  }.} {
29e0: 7d 0a 0a 69 6e 74 65 67 72 69 74 79 5f 63 68 65  }..integrity_che
29f0: 63 6b 20 69 6e 74 70 6b 65 79 2d 31 32 2e 31 0a  ck intpkey-12.1.
2a00: 0a 23 20 54 72 79 20 74 6f 20 75 73 65 20 61 20  .# Try to use a 
2a10: 73 74 72 69 6e 67 20 74 68 61 74 20 6c 6f 6f 6b  string that look
2a20: 73 20 6c 69 6b 65 20 61 20 66 6c 6f 61 74 69 6e  s like a floatin
2a30: 67 20 70 6f 69 6e 74 20 6e 75 6d 62 65 72 20 61  g point number a
2a40: 73 0a 23 20 61 6e 20 69 6e 74 65 67 65 72 20 70  s.# an integer p
2a50: 72 69 6d 61 72 79 20 6b 65 79 2e 20 20 54 68 69  rimary key.  Thi
2a60: 73 20 73 68 6f 75 6c 64 20 61 63 74 75 61 6c 6c  s should actuall
2a70: 79 20 77 6f 72 6b 20 77 68 65 6e 20 74 68 65 20  y work when the 
2a80: 66 6c 6f 61 74 69 6e 67 0a 23 20 70 6f 69 6e 74  floating.# point
2a90: 20 76 61 6c 75 65 20 63 61 6e 20 62 65 20 72 6f   value can be ro
2aa0: 75 6e 64 65 64 20 74 6f 20 61 6e 20 69 6e 74 65  unded to an inte
2ab0: 67 65 72 20 77 69 74 68 6f 75 74 20 6c 6f 73 73  ger without loss
2ac0: 20 6f 66 20 64 61 74 61 2e 0a 23 0a 64 6f 5f 74   of data..#.do_t
2ad0: 65 73 74 20 69 6e 74 70 6b 65 79 2d 31 33 2e 31  est intpkey-13.1
2ae0: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
2af0: 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d     SELECT * FROM
2b00: 20 74 31 20 57 48 45 52 45 20 61 3d 31 3b 0a 20   t1 WHERE a=1;. 
2b10: 20 7d 0a 7d 20 7b 7d 0a 64 6f 5f 74 65 73 74 20   }.} {}.do_test 
2b20: 69 6e 74 70 6b 65 79 2d 31 33 2e 32 20 7b 0a 20  intpkey-13.2 {. 
2b30: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 49   execsql {.    I
2b40: 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41  NSERT INTO t1 VA
2b50: 4c 55 45 53 28 27 31 2e 30 27 2c 32 2c 33 29 3b  LUES('1.0',2,3);
2b60: 0a 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52  .    SELECT * FR
2b70: 4f 4d 20 74 31 20 57 48 45 52 45 20 61 3d 31 3b  OM t1 WHERE a=1;
2b80: 0a 20 20 7d 0a 7d 20 7b 31 20 32 20 33 7d 0a 64  .  }.} {1 2 3}.d
2b90: 6f 5f 74 65 73 74 20 69 6e 74 70 6b 65 79 2d 31  o_test intpkey-1
2ba0: 33 2e 33 20 7b 0a 20 20 63 61 74 63 68 73 71 6c  3.3 {.  catchsql
2bb0: 20 7b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e   {.    INSERT IN
2bc0: 54 4f 20 74 31 20 56 41 4c 55 45 53 28 27 31 2e  TO t1 VALUES('1.
2bd0: 35 27 2c 33 2c 34 29 3b 0a 20 20 7d 0a 7d 20 7b  5',3,4);.  }.} {
2be0: 31 20 7b 64 61 74 61 74 79 70 65 20 6d 69 73 6d  1 {datatype mism
2bf0: 61 74 63 68 7d 7d 0a 69 66 63 61 70 61 62 6c 65  atch}}.ifcapable
2c00: 20 7b 62 6c 6f 62 6c 69 74 7d 20 7b 0a 20 20 64   {bloblit} {.  d
2c10: 6f 5f 74 65 73 74 20 69 6e 74 70 6b 65 79 2d 31  o_test intpkey-1
2c20: 33 2e 34 20 7b 0a 20 20 20 20 63 61 74 63 68 73  3.4 {.    catchs
2c30: 71 6c 20 7b 0a 20 20 20 20 20 20 49 4e 53 45 52  ql {.      INSER
2c40: 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45 53  T INTO t1 VALUES
2c50: 28 78 27 31 32 33 34 35 36 27 2c 33 2c 34 29 3b  (x'123456',3,4);
2c60: 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 31 20 7b 64  .    }.  } {1 {d
2c70: 61 74 61 74 79 70 65 20 6d 69 73 6d 61 74 63 68  atatype mismatch
2c80: 7d 7d 0a 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 74  }}.}.do_test int
2c90: 70 6b 65 79 2d 31 33 2e 35 20 7b 0a 20 20 63 61  pkey-13.5 {.  ca
2ca0: 74 63 68 73 71 6c 20 7b 0a 20 20 20 20 49 4e 53  tchsql {.    INS
2cb0: 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55  ERT INTO t1 VALU
2cc0: 45 53 28 27 2b 31 32 33 34 35 36 37 38 39 30 27  ES('+1234567890'
2cd0: 2c 33 2c 34 29 3b 0a 20 20 7d 0a 7d 20 7b 30 20  ,3,4);.  }.} {0 
2ce0: 7b 7d 7d 0a 0a 23 20 43 6f 6d 70 61 72 65 20 61  {}}..# Compare a
2cf0: 6e 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52  n INTEGER PRIMAR
2d00: 59 20 4b 45 59 20 61 67 61 69 6e 73 74 20 61 20  Y KEY against a 
2d10: 54 45 58 54 20 65 78 70 72 65 73 73 69 6f 6e 2e  TEXT expression.
2d20: 20 54 68 65 20 49 4e 54 45 47 45 52 0a 23 20 61   The INTEGER.# a
2d30: 66 66 69 6e 69 74 79 20 73 68 6f 75 6c 64 20 62  ffinity should b
2d40: 65 20 61 70 70 6c 69 65 64 20 74 6f 20 74 68 65  e applied to the
2d50: 20 74 65 78 74 20 76 61 6c 75 65 20 62 65 66 6f   text value befo
2d60: 72 65 20 74 68 65 20 63 6f 6d 70 61 72 69 73 6f  re the compariso
2d70: 6e 0a 23 20 74 61 6b 65 73 20 70 6c 61 63 65 2e  n.# takes place.
2d80: 0a 23 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70 6b  .#.do_test intpk
2d90: 65 79 2d 31 34 2e 31 20 7b 0a 20 20 65 78 65 63  ey-14.1 {.  exec
2da0: 73 71 6c 20 7b 0a 20 20 20 20 43 52 45 41 54 45  sql {.    CREATE
2db0: 20 54 41 42 4c 45 20 74 33 28 61 20 49 4e 54 45   TABLE t3(a INTE
2dc0: 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 2c  GER PRIMARY KEY,
2dd0: 20 62 20 49 4e 54 45 47 45 52 2c 20 63 20 54 45   b INTEGER, c TE
2de0: 58 54 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20  XT);.    INSERT 
2df0: 49 4e 54 4f 20 74 33 20 56 41 4c 55 45 53 28 31  INTO t3 VALUES(1
2e00: 2c 20 31 2c 20 27 6f 6e 65 27 29 3b 0a 20 20 20  , 1, 'one');.   
2e10: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 33 20   INSERT INTO t3 
2e20: 56 41 4c 55 45 53 28 32 2c 20 32 2c 20 27 32 27  VALUES(2, 2, '2'
2e30: 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e  );.    INSERT IN
2e40: 54 4f 20 74 33 20 56 41 4c 55 45 53 28 33 2c 20  TO t3 VALUES(3, 
2e50: 33 2c 20 33 29 3b 0a 20 20 7d 0a 7d 20 7b 7d 0a  3, 3);.  }.} {}.
2e60: 64 6f 5f 74 65 73 74 20 69 6e 74 70 6b 65 79 2d  do_test intpkey-
2e70: 31 34 2e 32 20 7b 0a 20 20 65 78 65 63 73 71 6c  14.2 {.  execsql
2e80: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a 20   {.    SELECT * 
2e90: 46 52 4f 4d 20 74 33 20 57 48 45 52 45 20 61 3e  FROM t3 WHERE a>
2ea0: 32 3b 0a 20 20 7d 0a 7d 20 7b 33 20 33 20 33 7d  2;.  }.} {3 3 3}
2eb0: 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70 6b 65 79  .do_test intpkey
2ec0: 2d 31 34 2e 33 20 7b 0a 20 20 65 78 65 63 73 71  -14.3 {.  execsq
2ed0: 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a  l {.    SELECT *
2ee0: 20 46 52 4f 4d 20 74 33 20 57 48 45 52 45 20 61   FROM t3 WHERE a
2ef0: 3e 27 32 27 3b 0a 20 20 7d 0a 7d 20 7b 33 20 33  >'2';.  }.} {3 3
2f00: 20 33 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70   3}.do_test intp
2f10: 6b 65 79 2d 31 34 2e 34 20 7b 0a 20 20 65 78 65  key-14.4 {.  exe
2f20: 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43  csql {.    SELEC
2f30: 54 20 2a 20 46 52 4f 4d 20 74 33 20 57 48 45 52  T * FROM t3 WHER
2f40: 45 20 61 3c 27 32 27 3b 0a 20 20 7d 0a 7d 20 7b  E a<'2';.  }.} {
2f50: 31 20 31 20 6f 6e 65 7d 0a 64 6f 5f 74 65 73 74  1 1 one}.do_test
2f60: 20 69 6e 74 70 6b 65 79 2d 31 34 2e 35 20 7b 0a   intpkey-14.5 {.
2f70: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
2f80: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 33  SELECT * FROM t3
2f90: 20 57 48 45 52 45 20 61 3c 63 3b 0a 20 20 7d 0a   WHERE a<c;.  }.
2fa0: 7d 20 7b 31 20 31 20 6f 6e 65 7d 0a 64 6f 5f 74  } {1 1 one}.do_t
2fb0: 65 73 74 20 69 6e 74 70 6b 65 79 2d 31 34 2e 36  est intpkey-14.6
2fc0: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
2fd0: 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d     SELECT * FROM
2fe0: 20 74 33 20 57 48 45 52 45 20 61 3d 63 3b 0a 20   t3 WHERE a=c;. 
2ff0: 20 7d 0a 7d 20 7b 32 20 32 20 32 20 33 20 33 20   }.} {2 2 2 3 3 
3000: 33 7d 0a 0a 23 20 43 68 65 63 6b 20 66 6f 72 20  3}..# Check for 
3010: 70 72 6f 70 65 72 20 68 61 6e 64 6c 69 6e 67 20  proper handling 
3020: 6f 66 20 70 72 69 6d 61 72 79 20 6b 65 79 73 20  of primary keys 
3030: 67 72 65 61 74 65 72 20 74 68 61 6e 20 32 5e 33  greater than 2^3
3040: 31 2e 0a 23 20 54 69 63 6b 65 74 20 23 31 31 38  1..# Ticket #118
3050: 38 0a 23 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70  8.#.do_test intp
3060: 6b 65 79 2d 31 35 2e 31 20 7b 0a 20 20 65 78 65  key-15.1 {.  exe
3070: 63 73 71 6c 20 7b 0a 20 20 20 20 49 4e 53 45 52  csql {.    INSER
3080: 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45 53  T INTO t1 VALUES
3090: 28 32 31 34 37 34 38 33 36 34 37 2c 20 27 62 69  (2147483647, 'bi
30a0: 67 2d 31 27 2c 20 31 32 33 29 3b 0a 20 20 20 20  g-1', 123);.    
30b0: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31  SELECT * FROM t1
30c0: 20 57 48 45 52 45 20 61 3e 32 31 34 37 34 38 33   WHERE a>2147483
30d0: 36 34 38 3b 0a 20 20 7d 0a 7d 20 7b 7d 0a 64 6f  648;.  }.} {}.do
30e0: 5f 74 65 73 74 20 69 6e 74 70 6b 65 79 2d 31 35  _test intpkey-15
30f0: 2e 32 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  .2 {.  execsql {
3100: 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f  .    INSERT INTO
3110: 20 74 31 20 56 41 4c 55 45 53 28 4e 55 4c 4c 2c   t1 VALUES(NULL,
3120: 20 27 62 69 67 2d 32 27 2c 20 32 33 34 29 3b 0a   'big-2', 234);.
3130: 20 20 20 20 53 45 4c 45 43 54 20 62 20 46 52 4f      SELECT b FRO
3140: 4d 20 74 31 20 57 48 45 52 45 20 61 3e 3d 32 31  M t1 WHERE a>=21
3150: 34 37 34 38 33 36 34 38 3b 0a 20 20 7d 0a 7d 20  47483648;.  }.} 
3160: 7b 62 69 67 2d 32 7d 0a 64 6f 5f 74 65 73 74 20  {big-2}.do_test 
3170: 69 6e 74 70 6b 65 79 2d 31 35 2e 33 20 7b 0a 20  intpkey-15.3 {. 
3180: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53   execsql {.    S
3190: 45 4c 45 43 54 20 62 20 46 52 4f 4d 20 74 31 20  ELECT b FROM t1 
31a0: 57 48 45 52 45 20 61 3e 32 31 34 37 34 38 33 36  WHERE a>21474836
31b0: 34 38 3b 0a 20 20 7d 0a 7d 20 7b 7d 0a 64 6f 5f  48;.  }.} {}.do_
31c0: 74 65 73 74 20 69 6e 74 70 6b 65 79 2d 31 35 2e  test intpkey-15.
31d0: 34 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  4 {.  execsql {.
31e0: 20 20 20 20 53 45 4c 45 43 54 20 62 20 46 52 4f      SELECT b FRO
31f0: 4d 20 74 31 20 57 48 45 52 45 20 61 3e 3d 32 31  M t1 WHERE a>=21
3200: 34 37 34 38 33 36 34 37 3b 0a 20 20 7d 0a 7d 20  47483647;.  }.} 
3210: 7b 62 69 67 2d 31 20 62 69 67 2d 32 7d 0a 64 6f  {big-1 big-2}.do
3220: 5f 74 65 73 74 20 69 6e 74 70 6b 65 79 2d 31 35  _test intpkey-15
3230: 2e 35 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  .5 {.  execsql {
3240: 0a 20 20 20 20 53 45 4c 45 43 54 20 62 20 46 52  .    SELECT b FR
3250: 4f 4d 20 74 31 20 57 48 45 52 45 20 61 3c 32 31  OM t1 WHERE a<21
3260: 34 37 34 38 33 36 34 38 3b 0a 20 20 7d 0a 7d 20  47483648;.  }.} 
3270: 7b 79 20 7a 65 72 6f 20 32 20 68 65 6c 6c 6f 20  {y zero 2 hello 
3280: 73 65 63 6f 6e 64 20 68 65 6c 6c 6f 20 62 2d 32  second hello b-2
3290: 30 20 62 2d 32 32 20 6e 65 77 20 33 20 62 69 67  0 b-22 new 3 big
32a0: 2d 31 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70  -1}.do_test intp
32b0: 6b 65 79 2d 31 35 2e 36 20 7b 0a 20 20 65 78 65  key-15.6 {.  exe
32c0: 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43  csql {.    SELEC
32d0: 54 20 62 20 46 52 4f 4d 20 74 31 20 57 48 45 52  T b FROM t1 WHER
32e0: 45 20 61 3c 31 32 33 34 35 36 37 38 39 30 31 3b  E a<12345678901;
32f0: 0a 20 20 7d 0a 7d 20 7b 79 20 7a 65 72 6f 20 32  .  }.} {y zero 2
3300: 20 68 65 6c 6c 6f 20 73 65 63 6f 6e 64 20 68 65   hello second he
3310: 6c 6c 6f 20 62 2d 32 30 20 62 2d 32 32 20 6e 65  llo b-20 b-22 ne
3320: 77 20 33 20 62 69 67 2d 31 20 62 69 67 2d 32 7d  w 3 big-1 big-2}
3330: 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70 6b 65 79  .do_test intpkey
3340: 2d 31 35 2e 37 20 7b 0a 20 20 65 78 65 63 73 71  -15.7 {.  execsq
3350: 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 62  l {.    SELECT b
3360: 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 61   FROM t1 WHERE a
3370: 3e 31 32 33 34 35 36 37 38 39 30 31 3b 0a 20 20  >12345678901;.  
3380: 7d 0a 7d 20 7b 7d 0a 0a 0a 66 69 6e 69 73 68 5f  }.} {}...finish_
3390: 74 65 73 74 0a                                   test.