/ Hex Artifact Content
Login

Artifact 39f49fd993350f7f3ab255e5cfbf9a09d8f8800e:


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 31 33 20 32 30 30 33  test,v 1.13 2003
0230: 2f 30 33 2f 30 37 20 31 39 3a 35 30 3a 30 38 20  /03/07 19:50:08 
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 7b 28 74 31 20 61 75 74 6f 69 6e 64 65 78 20  {{(t1 autoindex 
03f0: 31 29 7d 7d 0a 0a 23 20 4e 6f 77 20 63 72 65 61  1)}}..# Now crea
0400: 74 65 20 61 20 74 61 62 6c 65 20 77 69 74 68 20  te a table with 
0410: 61 6e 20 69 6e 74 65 67 65 72 20 70 72 69 6d 61  an integer prima
0420: 72 79 20 6b 65 79 20 61 6e 64 20 76 65 72 69 66  ry key and verif
0430: 79 20 74 68 61 74 0a 23 20 74 68 65 72 65 20 69  y that.# there i
0440: 73 20 6e 6f 20 61 73 73 6f 63 69 61 74 65 64 20  s no associated 
0450: 69 6e 64 65 78 2e 0a 23 0a 64 6f 5f 74 65 73 74  index..#.do_test
0460: 20 69 6e 74 70 6b 65 79 2d 31 2e 32 20 7b 0a 20   intpkey-1.2 {. 
0470: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 44   execsql {.    D
0480: 52 4f 50 20 54 41 42 4c 45 20 74 31 3b 0a 20 20  ROP TABLE t1;.  
0490: 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 74    CREATE TABLE t
04a0: 31 28 61 20 49 4e 54 45 47 45 52 20 50 52 49 4d  1(a INTEGER PRIM
04b0: 41 52 59 20 4b 45 59 2c 20 62 2c 20 63 29 3b 0a  ARY KEY, b, c);.
04c0: 20 20 20 20 53 45 4c 45 43 54 20 6e 61 6d 65 20      SELECT name 
04d0: 46 52 4f 4d 20 73 71 6c 69 74 65 5f 6d 61 73 74  FROM sqlite_mast
04e0: 65 72 0a 20 20 20 20 20 20 57 48 45 52 45 20 74  er.      WHERE t
04f0: 79 70 65 3d 27 69 6e 64 65 78 27 20 41 4e 44 20  ype='index' AND 
0500: 74 62 6c 5f 6e 61 6d 65 3d 27 74 31 27 3b 0a 20  tbl_name='t1';. 
0510: 20 7d 0a 7d 20 7b 7d 0a 0a 23 20 49 6e 73 65 72   }.} {}..# Inser
0520: 74 20 73 6f 6d 65 20 72 65 63 6f 72 64 73 20 69  t some records i
0530: 6e 74 6f 20 74 68 65 20 6e 65 77 20 74 61 62 6c  nto the new tabl
0540: 65 2e 20 20 53 70 65 63 69 66 79 20 74 68 65 20  e.  Specify the 
0550: 70 72 69 6d 61 72 79 20 6b 65 79 0a 23 20 61 6e  primary key.# an
0560: 64 20 76 65 72 69 66 79 20 74 68 61 74 20 74 68  d verify that th
0570: 65 20 6b 65 79 20 69 73 20 75 73 65 64 20 61 73  e key is used as
0580: 20 74 68 65 20 72 65 63 6f 72 64 20 6e 75 6d 62   the record numb
0590: 65 72 2e 0a 23 0a 64 6f 5f 74 65 73 74 20 69 6e  er..#.do_test in
05a0: 74 70 6b 65 79 2d 31 2e 33 20 7b 0a 20 20 65 78  tpkey-1.3 {.  ex
05b0: 65 63 73 71 6c 20 7b 0a 20 20 20 20 49 4e 53 45  ecsql {.    INSE
05c0: 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45  RT INTO t1 VALUE
05d0: 53 28 35 2c 27 68 65 6c 6c 6f 27 2c 27 77 6f 72  S(5,'hello','wor
05e0: 6c 64 27 29 3b 0a 20 20 7d 0a 20 20 64 62 20 6c  ld');.  }.  db l
05f0: 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64  ast_insert_rowid
0600: 0a 7d 20 7b 35 7d 0a 64 6f 5f 74 65 73 74 20 69  .} {5}.do_test i
0610: 6e 74 70 6b 65 79 2d 31 2e 34 20 7b 0a 20 20 65  ntpkey-1.4 {.  e
0620: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c  xecsql {.    SEL
0630: 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 3b 0a 20  ECT * FROM t1;. 
0640: 20 7d 0a 7d 20 7b 35 20 68 65 6c 6c 6f 20 77 6f   }.} {5 hello wo
0650: 72 6c 64 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 74  rld}.do_test int
0660: 70 6b 65 79 2d 31 2e 35 20 7b 0a 20 20 65 78 65  pkey-1.5 {.  exe
0670: 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43  csql {.    SELEC
0680: 54 20 72 6f 77 69 64 2c 20 2a 20 46 52 4f 4d 20  T rowid, * FROM 
0690: 74 31 3b 0a 20 20 7d 0a 7d 20 7b 35 20 35 20 68  t1;.  }.} {5 5 h
06a0: 65 6c 6c 6f 20 77 6f 72 6c 64 7d 0a 0a 23 20 41  ello world}..# A
06b0: 74 74 65 6d 70 74 69 6e 67 20 74 6f 20 69 6e 73  ttempting to ins
06c0: 65 72 74 20 61 20 64 75 70 6c 69 63 61 74 65 20  ert a duplicate 
06d0: 70 72 69 6d 61 72 79 20 6b 65 79 20 73 68 6f 75  primary key shou
06e0: 6c 64 20 67 69 76 65 20 61 20 63 6f 6e 73 74 72  ld give a constr
06f0: 61 69 6e 74 0a 23 20 66 61 69 6c 75 72 65 2e 0a  aint.# failure..
0700: 23 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70 6b 65  #.do_test intpke
0710: 79 2d 31 2e 36 20 7b 0a 20 20 73 65 74 20 72 20  y-1.6 {.  set r 
0720: 5b 63 61 74 63 68 20 7b 65 78 65 63 73 71 6c 20  [catch {execsql 
0730: 7b 0a 20 20 20 20 20 49 4e 53 45 52 54 20 49 4e  {.     INSERT IN
0740: 54 4f 20 74 31 20 56 41 4c 55 45 53 28 35 2c 27  TO t1 VALUES(5,'
0750: 73 65 63 6f 6e 64 27 2c 27 65 6e 74 72 79 27 29  second','entry')
0760: 3b 0a 20 20 7d 7d 20 6d 73 67 5d 0a 20 20 6c 61  ;.  }} msg].  la
0770: 70 70 65 6e 64 20 72 20 24 6d 73 67 0a 7d 20 7b  ppend r $msg.} {
0780: 31 20 7b 50 52 49 4d 41 52 59 20 4b 45 59 20 6d  1 {PRIMARY KEY m
0790: 75 73 74 20 62 65 20 75 6e 69 71 75 65 7d 7d 0a  ust be unique}}.
07a0: 64 6f 5f 74 65 73 74 20 69 6e 74 70 6b 65 79 2d  do_test intpkey-
07b0: 31 2e 37 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  1.7 {.  execsql 
07c0: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 72 6f 77  {.    SELECT row
07d0: 69 64 2c 20 2a 20 46 52 4f 4d 20 74 31 3b 0a 20  id, * FROM t1;. 
07e0: 20 7d 0a 7d 20 7b 35 20 35 20 68 65 6c 6c 6f 20   }.} {5 5 hello 
07f0: 77 6f 72 6c 64 7d 0a 64 6f 5f 74 65 73 74 20 69  world}.do_test i
0800: 6e 74 70 6b 65 79 2d 31 2e 38 20 7b 0a 20 20 73  ntpkey-1.8 {.  s
0810: 65 74 20 72 20 5b 63 61 74 63 68 20 7b 65 78 65  et r [catch {exe
0820: 63 73 71 6c 20 7b 0a 20 20 20 20 20 49 4e 53 45  csql {.     INSE
0830: 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45  RT INTO t1 VALUE
0840: 53 28 36 2c 27 73 65 63 6f 6e 64 27 2c 27 65 6e  S(6,'second','en
0850: 74 72 79 27 29 3b 0a 20 20 7d 7d 20 6d 73 67 5d  try');.  }} msg]
0860: 0a 20 20 6c 61 70 70 65 6e 64 20 72 20 24 6d 73  .  lappend r $ms
0870: 67 0a 7d 20 7b 30 20 7b 7d 7d 0a 64 6f 5f 74 65  g.} {0 {}}.do_te
0880: 73 74 20 69 6e 74 70 6b 65 79 2d 31 2e 38 2e 31  st intpkey-1.8.1
0890: 20 7b 0a 20 20 64 62 20 6c 61 73 74 5f 69 6e 73   {.  db last_ins
08a0: 65 72 74 5f 72 6f 77 69 64 0a 7d 20 7b 36 7d 0a  ert_rowid.} {6}.
08b0: 64 6f 5f 74 65 73 74 20 69 6e 74 70 6b 65 79 2d  do_test intpkey-
08c0: 31 2e 39 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  1.9 {.  execsql 
08d0: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 72 6f 77  {.    SELECT row
08e0: 69 64 2c 20 2a 20 46 52 4f 4d 20 74 31 3b 0a 20  id, * FROM t1;. 
08f0: 20 7d 0a 7d 20 7b 35 20 35 20 68 65 6c 6c 6f 20   }.} {5 5 hello 
0900: 77 6f 72 6c 64 20 36 20 36 20 73 65 63 6f 6e 64  world 6 6 second
0910: 20 65 6e 74 72 79 7d 0a 0a 23 20 41 20 52 4f 57   entry}..# A ROW
0920: 49 44 20 69 73 20 61 75 74 6f 6d 61 74 69 63 61  ID is automatica
0930: 6c 6c 79 20 67 65 6e 65 72 61 74 65 64 20 66 6f  lly generated fo
0940: 72 20 6e 65 77 20 72 65 63 6f 72 64 73 20 74 68  r new records th
0950: 61 74 20 64 6f 20 6e 6f 74 20 73 70 65 63 69 66  at do not specif
0960: 79 0a 23 20 74 68 65 20 69 6e 74 65 67 65 72 20  y.# the integer 
0970: 70 72 69 6d 61 72 79 20 6b 65 79 2e 0a 23 0a 64  primary key..#.d
0980: 6f 5f 74 65 73 74 20 69 6e 74 70 6b 65 79 2d 31  o_test intpkey-1
0990: 2e 31 30 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  .10 {.  execsql 
09a0: 7b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54  {.    INSERT INT
09b0: 4f 20 74 31 28 62 2c 63 29 20 56 41 4c 55 45 53  O t1(b,c) VALUES
09c0: 28 27 6f 6e 65 27 2c 27 74 77 6f 27 29 3b 0a 20  ('one','two');. 
09d0: 20 20 20 53 45 4c 45 43 54 20 62 20 46 52 4f 4d     SELECT b FROM
09e0: 20 74 31 20 4f 52 44 45 52 20 42 59 20 62 3b 0a   t1 ORDER BY b;.
09f0: 20 20 7d 0a 7d 20 7b 68 65 6c 6c 6f 20 6f 6e 65    }.} {hello one
0a00: 20 73 65 63 6f 6e 64 7d 0a 0a 23 20 54 72 79 20   second}..# Try 
0a10: 74 6f 20 63 68 61 6e 67 65 20 74 68 65 20 52 4f  to change the RO
0a20: 57 49 44 20 66 6f 72 20 74 68 65 20 6e 65 77 20  WID for the new 
0a30: 65 6e 74 72 79 2e 0a 23 0a 64 6f 5f 74 65 73 74  entry..#.do_test
0a40: 20 69 6e 74 70 6b 65 79 2d 31 2e 31 31 20 7b 0a   intpkey-1.11 {.
0a50: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
0a60: 55 50 44 41 54 45 20 74 31 20 53 45 54 20 61 3d  UPDATE t1 SET a=
0a70: 34 20 57 48 45 52 45 20 62 3d 27 6f 6e 65 27 3b  4 WHERE b='one';
0a80: 0a 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52  .    SELECT * FR
0a90: 4f 4d 20 74 31 3b 0a 20 20 7d 0a 7d 20 7b 34 20  OM t1;.  }.} {4 
0aa0: 6f 6e 65 20 74 77 6f 20 35 20 68 65 6c 6c 6f 20  one two 5 hello 
0ab0: 77 6f 72 6c 64 20 36 20 73 65 63 6f 6e 64 20 65  world 6 second e
0ac0: 6e 74 72 79 7d 0a 0a 23 20 4d 61 6b 65 20 73 75  ntry}..# Make su
0ad0: 72 65 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d  re SELECT statem
0ae0: 65 6e 74 73 20 61 72 65 20 61 62 6c 65 20 74 6f  ents are able to
0af0: 20 75 73 65 20 74 68 65 20 70 72 69 6d 61 72 79   use the primary
0b00: 20 6b 65 79 20 63 6f 6c 75 6d 6e 0a 23 20 61 73   key column.# as
0b10: 20 61 6e 20 69 6e 64 65 78 2e 0a 23 0a 64 6f 5f   an index..#.do_
0b20: 74 65 73 74 20 69 6e 74 70 6b 65 79 2d 31 2e 31  test intpkey-1.1
0b30: 32 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  2 {.  execsql {.
0b40: 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f      SELECT * FRO
0b50: 4d 20 74 31 20 57 48 45 52 45 20 61 3d 3d 34 3b  M t1 WHERE a==4;
0b60: 0a 20 20 7d 0a 7d 20 7b 34 20 6f 6e 65 20 74 77  .  }.} {4 one tw
0b70: 6f 7d 0a 0a 23 20 54 72 79 20 74 6f 20 69 6e 73  o}..# Try to ins
0b80: 65 72 74 20 61 20 6e 6f 6e 2d 69 6e 74 65 67 65  ert a non-intege
0b90: 72 20 76 61 6c 75 65 20 69 6e 74 6f 20 74 68 65  r value into the
0ba0: 20 70 72 69 6d 61 72 79 20 6b 65 79 20 66 69 65   primary key fie
0bb0: 6c 64 2e 20 20 54 68 69 73 0a 23 20 73 68 6f 75  ld.  This.# shou
0bc0: 6c 64 20 72 65 73 75 6c 74 20 69 6e 20 61 20 64  ld result in a d
0bd0: 61 74 61 20 74 79 70 65 20 6d 69 73 6d 61 74 63  ata type mismatc
0be0: 68 2e 0a 23 0a 64 6f 5f 74 65 73 74 20 69 6e 74  h..#.do_test int
0bf0: 70 6b 65 79 2d 31 2e 31 33 2e 31 20 7b 0a 20 20  pkey-1.13.1 {.  
0c00: 73 65 74 20 72 20 5b 63 61 74 63 68 20 7b 65 78  set r [catch {ex
0c10: 65 63 73 71 6c 20 7b 0a 20 20 20 20 49 4e 53 45  ecsql {.    INSE
0c20: 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45  RT INTO t1 VALUE
0c30: 53 28 27 78 27 2c 27 79 27 2c 27 7a 27 29 3b 0a  S('x','y','z');.
0c40: 20 20 7d 7d 20 6d 73 67 5d 0a 20 20 6c 61 70 70    }} msg].  lapp
0c50: 65 6e 64 20 72 20 24 6d 73 67 0a 7d 20 7b 31 20  end r $msg.} {1 
0c60: 7b 64 61 74 61 74 79 70 65 20 6d 69 73 6d 61 74  {datatype mismat
0c70: 63 68 7d 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 74  ch}}.do_test int
0c80: 70 6b 65 79 2d 31 2e 31 33 2e 32 20 7b 0a 20 20  pkey-1.13.2 {.  
0c90: 73 65 74 20 72 20 5b 63 61 74 63 68 20 7b 65 78  set r [catch {ex
0ca0: 65 63 73 71 6c 20 7b 0a 20 20 20 20 49 4e 53 45  ecsql {.    INSE
0cb0: 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45  RT INTO t1 VALUE
0cc0: 53 28 27 27 2c 27 79 27 2c 27 7a 27 29 3b 0a 20  S('','y','z');. 
0cd0: 20 7d 7d 20 6d 73 67 5d 0a 20 20 6c 61 70 70 65   }} msg].  lappe
0ce0: 6e 64 20 72 20 24 6d 73 67 0a 7d 20 7b 31 20 7b  nd r $msg.} {1 {
0cf0: 64 61 74 61 74 79 70 65 20 6d 69 73 6d 61 74 63  datatype mismatc
0d00: 68 7d 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70  h}}.do_test intp
0d10: 6b 65 79 2d 31 2e 31 34 20 7b 0a 20 20 73 65 74  key-1.14 {.  set
0d20: 20 72 20 5b 63 61 74 63 68 20 7b 65 78 65 63 73   r [catch {execs
0d30: 71 6c 20 7b 0a 20 20 20 20 49 4e 53 45 52 54 20  ql {.    INSERT 
0d40: 49 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28 33  INTO t1 VALUES(3
0d50: 2e 34 2c 27 79 27 2c 27 7a 27 29 3b 0a 20 20 7d  .4,'y','z');.  }
0d60: 7d 20 6d 73 67 5d 0a 20 20 6c 61 70 70 65 6e 64  } msg].  lappend
0d70: 20 72 20 24 6d 73 67 0a 7d 20 7b 31 20 7b 64 61   r $msg.} {1 {da
0d80: 74 61 74 79 70 65 20 6d 69 73 6d 61 74 63 68 7d  tatype mismatch}
0d90: 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70 6b 65  }.do_test intpke
0da0: 79 2d 31 2e 31 35 20 7b 0a 20 20 73 65 74 20 72  y-1.15 {.  set r
0db0: 20 5b 63 61 74 63 68 20 7b 65 78 65 63 73 71 6c   [catch {execsql
0dc0: 20 7b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e   {.    INSERT IN
0dd0: 54 4f 20 74 31 20 56 41 4c 55 45 53 28 2d 33 2c  TO t1 VALUES(-3,
0de0: 27 79 27 2c 27 7a 27 29 3b 0a 20 20 7d 7d 20 6d  'y','z');.  }} m
0df0: 73 67 5d 0a 20 20 6c 61 70 70 65 6e 64 20 72 20  sg].  lappend r 
0e00: 24 6d 73 67 0a 7d 20 7b 30 20 7b 7d 7d 0a 64 6f  $msg.} {0 {}}.do
0e10: 5f 74 65 73 74 20 69 6e 74 70 6b 65 79 2d 31 2e  _test intpkey-1.
0e20: 31 36 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  16 {.  execsql {
0e30: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31  SELECT * FROM t1
0e40: 7d 0a 7d 20 7b 2d 33 20 79 20 7a 20 34 20 6f 6e  }.} {-3 y z 4 on
0e50: 65 20 74 77 6f 20 35 20 68 65 6c 6c 6f 20 77 6f  e two 5 hello wo
0e60: 72 6c 64 20 36 20 73 65 63 6f 6e 64 20 65 6e 74  rld 6 second ent
0e70: 72 79 7d 0a 0a 23 23 23 23 20 49 4e 44 49 43 45  ry}..#### INDICE
0e80: 53 0a 23 20 43 68 65 63 6b 20 74 6f 20 6d 61 6b  S.# Check to mak
0e90: 65 20 73 75 72 65 20 69 6e 64 69 63 65 73 20 77  e sure indices w
0ea0: 6f 72 6b 20 63 6f 72 72 65 63 74 6c 79 20 77 69  ork correctly wi
0eb0: 74 68 20 69 6e 74 65 67 65 72 20 70 72 69 6d 61  th integer prima
0ec0: 72 79 20 6b 65 79 73 0a 23 0a 64 6f 5f 74 65 73  ry keys.#.do_tes
0ed0: 74 20 69 6e 74 70 6b 65 79 2d 32 2e 31 20 7b 0a  t intpkey-2.1 {.
0ee0: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
0ef0: 43 52 45 41 54 45 20 49 4e 44 45 58 20 69 31 20  CREATE INDEX i1 
0f00: 4f 4e 20 74 31 28 62 29 3b 0a 20 20 20 20 53 45  ON t1(b);.    SE
0f10: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 20 57  LECT * FROM t1 W
0f20: 48 45 52 45 20 62 3d 3d 27 79 27 0a 20 20 7d 0a  HERE b=='y'.  }.
0f30: 7d 20 7b 2d 33 20 79 20 7a 7d 0a 64 6f 5f 74 65  } {-3 y z}.do_te
0f40: 73 74 20 69 6e 74 70 6b 65 79 2d 32 2e 31 2e 31  st intpkey-2.1.1
0f50: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
0f60: 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d     SELECT * FROM
0f70: 20 74 31 20 57 48 45 52 45 20 62 3d 3d 27 79 27   t1 WHERE b=='y'
0f80: 20 41 4e 44 20 72 6f 77 69 64 3c 30 0a 20 20 7d   AND rowid<0.  }
0f90: 0a 7d 20 7b 2d 33 20 79 20 7a 7d 0a 64 6f 5f 74  .} {-3 y z}.do_t
0fa0: 65 73 74 20 69 6e 74 70 6b 65 79 2d 32 2e 31 2e  est intpkey-2.1.
0fb0: 32 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  2 {.  execsql {.
0fc0: 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f      SELECT * FRO
0fd0: 4d 20 74 31 20 57 48 45 52 45 20 62 3d 3d 27 79  M t1 WHERE b=='y
0fe0: 27 20 41 4e 44 20 72 6f 77 69 64 3c 30 20 41 4e  ' AND rowid<0 AN
0ff0: 44 20 72 6f 77 69 64 3e 3d 2d 32 30 0a 20 20 7d  D rowid>=-20.  }
1000: 0a 7d 20 7b 2d 33 20 79 20 7a 7d 0a 64 6f 5f 74  .} {-3 y z}.do_t
1010: 65 73 74 20 69 6e 74 70 6b 65 79 2d 32 2e 31 2e  est intpkey-2.1.
1020: 33 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  3 {.  execsql {.
1030: 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f      SELECT * FRO
1040: 4d 20 74 31 20 57 48 45 52 45 20 62 3e 3d 27 79  M t1 WHERE b>='y
1050: 27 0a 20 20 7d 0a 7d 20 7b 2d 33 20 79 20 7a 7d  '.  }.} {-3 y z}
1060: 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70 6b 65 79  .do_test intpkey
1070: 2d 32 2e 31 2e 34 20 7b 0a 20 20 65 78 65 63 73  -2.1.4 {.  execs
1080: 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  ql {.    SELECT 
1090: 2a 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20  * FROM t1 WHERE 
10a0: 62 3e 3d 27 79 27 20 41 4e 44 20 72 6f 77 69 64  b>='y' AND rowid
10b0: 3c 31 30 0a 20 20 7d 0a 7d 20 7b 2d 33 20 79 20  <10.  }.} {-3 y 
10c0: 7a 7d 0a 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70  z}..do_test intp
10d0: 6b 65 79 2d 32 2e 32 20 7b 0a 20 20 65 78 65 63  key-2.2 {.  exec
10e0: 73 71 6c 20 7b 0a 20 20 20 20 55 50 44 41 54 45  sql {.    UPDATE
10f0: 20 74 31 20 53 45 54 20 61 3d 38 20 57 48 45 52   t1 SET a=8 WHER
1100: 45 20 62 3d 3d 27 79 27 3b 0a 20 20 20 20 53 45  E b=='y';.    SE
1110: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 20 57  LECT * FROM t1 W
1120: 48 45 52 45 20 62 3d 3d 27 79 27 3b 0a 20 20 7d  HERE b=='y';.  }
1130: 0a 7d 20 7b 38 20 79 20 7a 7d 0a 64 6f 5f 74 65  .} {8 y z}.do_te
1140: 73 74 20 69 6e 74 70 6b 65 79 2d 32 2e 33 20 7b  st intpkey-2.3 {
1150: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
1160: 20 53 45 4c 45 43 54 20 72 6f 77 69 64 2c 20 2a   SELECT rowid, *
1170: 20 46 52 4f 4d 20 74 31 3b 0a 20 20 7d 0a 7d 20   FROM t1;.  }.} 
1180: 7b 34 20 34 20 6f 6e 65 20 74 77 6f 20 35 20 35  {4 4 one two 5 5
1190: 20 68 65 6c 6c 6f 20 77 6f 72 6c 64 20 36 20 36   hello world 6 6
11a0: 20 73 65 63 6f 6e 64 20 65 6e 74 72 79 20 38 20   second entry 8 
11b0: 38 20 79 20 7a 7d 0a 64 6f 5f 74 65 73 74 20 69  8 y z}.do_test i
11c0: 6e 74 70 6b 65 79 2d 32 2e 34 20 7b 0a 20 20 65  ntpkey-2.4 {.  e
11d0: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c  xecsql {.    SEL
11e0: 45 43 54 20 72 6f 77 69 64 2c 20 2a 20 46 52 4f  ECT rowid, * FRO
11f0: 4d 20 74 31 20 57 48 45 52 45 20 62 3c 27 73 65  M t1 WHERE b<'se
1200: 63 6f 6e 64 27 0a 20 20 7d 0a 7d 20 7b 35 20 35  cond'.  }.} {5 5
1210: 20 68 65 6c 6c 6f 20 77 6f 72 6c 64 20 34 20 34   hello world 4 4
1220: 20 6f 6e 65 20 74 77 6f 7d 0a 64 6f 5f 74 65 73   one two}.do_tes
1230: 74 20 69 6e 74 70 6b 65 79 2d 32 2e 34 2e 31 20  t intpkey-2.4.1 
1240: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
1250: 20 20 53 45 4c 45 43 54 20 72 6f 77 69 64 2c 20    SELECT rowid, 
1260: 2a 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20  * FROM t1 WHERE 
1270: 27 73 65 63 6f 6e 64 27 3e 62 0a 20 20 7d 0a 7d  'second'>b.  }.}
1280: 20 7b 35 20 35 20 68 65 6c 6c 6f 20 77 6f 72 6c   {5 5 hello worl
1290: 64 20 34 20 34 20 6f 6e 65 20 74 77 6f 7d 0a 64  d 4 4 one two}.d
12a0: 6f 5f 74 65 73 74 20 69 6e 74 70 6b 65 79 2d 32  o_test intpkey-2
12b0: 2e 34 2e 32 20 7b 0a 20 20 65 78 65 63 73 71 6c  .4.2 {.  execsql
12c0: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 72 6f   {.    SELECT ro
12d0: 77 69 64 2c 20 2a 20 46 52 4f 4d 20 74 31 20 57  wid, * FROM t1 W
12e0: 48 45 52 45 20 38 3e 72 6f 77 69 64 20 41 4e 44  HERE 8>rowid AND
12f0: 20 27 73 65 63 6f 6e 64 27 3e 62 0a 20 20 7d 0a   'second'>b.  }.
1300: 7d 20 7b 34 20 34 20 6f 6e 65 20 74 77 6f 20 35  } {4 4 one two 5
1310: 20 35 20 68 65 6c 6c 6f 20 77 6f 72 6c 64 7d 0a   5 hello world}.
1320: 64 6f 5f 74 65 73 74 20 69 6e 74 70 6b 65 79 2d  do_test intpkey-
1330: 32 2e 34 2e 33 20 7b 0a 20 20 65 78 65 63 73 71  2.4.3 {.  execsq
1340: 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 72  l {.    SELECT r
1350: 6f 77 69 64 2c 20 2a 20 46 52 4f 4d 20 74 31 20  owid, * FROM t1 
1360: 57 48 45 52 45 20 38 3e 72 6f 77 69 64 20 41 4e  WHERE 8>rowid AN
1370: 44 20 27 73 65 63 6f 6e 64 27 3e 62 20 41 4e 44  D 'second'>b AND
1380: 20 30 3c 72 6f 77 69 64 0a 20 20 7d 0a 7d 20 7b   0<rowid.  }.} {
1390: 34 20 34 20 6f 6e 65 20 74 77 6f 20 35 20 35 20  4 4 one two 5 5 
13a0: 68 65 6c 6c 6f 20 77 6f 72 6c 64 7d 0a 64 6f 5f  hello world}.do_
13b0: 74 65 73 74 20 69 6e 74 70 6b 65 79 2d 32 2e 35  test intpkey-2.5
13c0: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
13d0: 20 20 20 53 45 4c 45 43 54 20 72 6f 77 69 64 2c     SELECT rowid,
13e0: 20 2a 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45   * FROM t1 WHERE
13f0: 20 62 3e 27 61 27 0a 20 20 7d 0a 7d 20 7b 35 20   b>'a'.  }.} {5 
1400: 35 20 68 65 6c 6c 6f 20 77 6f 72 6c 64 20 34 20  5 hello world 4 
1410: 34 20 6f 6e 65 20 74 77 6f 20 36 20 36 20 73 65  4 one two 6 6 se
1420: 63 6f 6e 64 20 65 6e 74 72 79 20 38 20 38 20 79  cond entry 8 8 y
1430: 20 7a 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70   z}.do_test intp
1440: 6b 65 79 2d 32 2e 36 20 7b 0a 20 20 65 78 65 63  key-2.6 {.  exec
1450: 73 71 6c 20 7b 0a 20 20 20 20 44 45 4c 45 54 45  sql {.    DELETE
1460: 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 72   FROM t1 WHERE r
1470: 6f 77 69 64 3d 34 3b 0a 20 20 20 20 53 45 4c 45  owid=4;.    SELE
1480: 43 54 20 2a 20 46 52 4f 4d 20 74 31 20 57 48 45  CT * FROM t1 WHE
1490: 52 45 20 62 3e 27 61 27 3b 0a 20 20 7d 0a 7d 20  RE b>'a';.  }.} 
14a0: 7b 35 20 68 65 6c 6c 6f 20 77 6f 72 6c 64 20 36  {5 hello world 6
14b0: 20 73 65 63 6f 6e 64 20 65 6e 74 72 79 20 38 20   second entry 8 
14c0: 79 20 7a 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 74  y z}.do_test int
14d0: 70 6b 65 79 2d 32 2e 37 20 7b 0a 20 20 65 78 65  pkey-2.7 {.  exe
14e0: 63 73 71 6c 20 7b 0a 20 20 20 20 55 50 44 41 54  csql {.    UPDAT
14f0: 45 20 74 31 20 53 45 54 20 61 3d 2d 34 20 57 48  E t1 SET a=-4 WH
1500: 45 52 45 20 72 6f 77 69 64 3d 38 3b 0a 20 20 20  ERE rowid=8;.   
1510: 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74   SELECT * FROM t
1520: 31 20 57 48 45 52 45 20 62 3e 27 61 27 3b 0a 20  1 WHERE b>'a';. 
1530: 20 7d 0a 7d 20 7b 35 20 68 65 6c 6c 6f 20 77 6f   }.} {5 hello wo
1540: 72 6c 64 20 36 20 73 65 63 6f 6e 64 20 65 6e 74  rld 6 second ent
1550: 72 79 20 2d 34 20 79 20 7a 7d 0a 64 6f 5f 74 65  ry -4 y z}.do_te
1560: 73 74 20 69 6e 74 70 6b 65 79 2d 32 2e 37 20 7b  st intpkey-2.7 {
1570: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
1580: 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74   SELECT * FROM t
1590: 31 0a 20 20 7d 0a 7d 20 7b 2d 34 20 79 20 7a 20  1.  }.} {-4 y z 
15a0: 35 20 68 65 6c 6c 6f 20 77 6f 72 6c 64 20 36 20  5 hello world 6 
15b0: 73 65 63 6f 6e 64 20 65 6e 74 72 79 7d 0a 0a 23  second entry}..#
15c0: 20 44 6f 20 61 6e 20 53 51 4c 20 73 74 61 74 65   Do an SQL state
15d0: 6d 65 6e 74 2e 20 20 41 70 70 65 6e 64 20 74 68  ment.  Append th
15e0: 65 20 73 65 61 72 63 68 20 63 6f 75 6e 74 20 74  e search count t
15f0: 6f 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65  o the end of the
1600: 20 72 65 73 75 6c 74 2e 0a 23 0a 70 72 6f 63 20   result..#.proc 
1610: 63 6f 75 6e 74 20 73 71 6c 20 7b 0a 20 20 73 65  count sql {.  se
1620: 74 20 3a 3a 73 71 6c 69 74 65 5f 73 65 61 72 63  t ::sqlite_searc
1630: 68 5f 63 6f 75 6e 74 20 30 0a 20 20 72 65 74 75  h_count 0.  retu
1640: 72 6e 20 5b 63 6f 6e 63 61 74 20 5b 65 78 65 63  rn [concat [exec
1650: 73 71 6c 20 24 73 71 6c 5d 20 24 3a 3a 73 71 6c  sql $sql] $::sql
1660: 69 74 65 5f 73 65 61 72 63 68 5f 63 6f 75 6e 74  ite_search_count
1670: 5d 0a 7d 0a 0a 23 20 43 72 65 61 74 65 20 69 6e  ].}..# Create in
1680: 64 69 63 65 73 20 74 68 61 74 20 69 6e 63 6c 75  dices that inclu
1690: 64 65 20 74 68 65 20 69 6e 74 65 67 65 72 20 70  de the integer p
16a0: 72 69 6d 61 72 79 20 6b 65 79 20 61 73 20 6f 6e  rimary key as on
16b0: 65 20 6f 66 20 74 68 65 69 72 0a 23 20 63 6f 6c  e of their.# col
16c0: 75 6d 6e 73 2e 0a 23 0a 64 6f 5f 74 65 73 74 20  umns..#.do_test 
16d0: 69 6e 74 70 6b 65 79 2d 33 2e 31 20 7b 0a 20 20  intpkey-3.1 {.  
16e0: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 43 52  execsql {.    CR
16f0: 45 41 54 45 20 49 4e 44 45 58 20 69 32 20 4f 4e  EATE INDEX i2 ON
1700: 20 74 31 28 61 29 3b 0a 20 20 7d 0a 7d 20 7b 7d   t1(a);.  }.} {}
1710: 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70 6b 65 79  .do_test intpkey
1720: 2d 33 2e 32 20 7b 0a 20 20 63 6f 75 6e 74 20 7b  -3.2 {.  count {
1730: 0a 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52  .    SELECT * FR
1740: 4f 4d 20 74 31 20 57 48 45 52 45 20 61 3d 35 3b  OM t1 WHERE a=5;
1750: 0a 20 20 7d 0a 7d 20 7b 35 20 68 65 6c 6c 6f 20  .  }.} {5 hello 
1760: 77 6f 72 6c 64 20 30 7d 0a 64 6f 5f 74 65 73 74  world 0}.do_test
1770: 20 69 6e 74 70 6b 65 79 2d 33 2e 33 20 7b 0a 20   intpkey-3.3 {. 
1780: 20 63 6f 75 6e 74 20 7b 0a 20 20 20 20 53 45 4c   count {.    SEL
1790: 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 20 57 48  ECT * FROM t1 WH
17a0: 45 52 45 20 61 3e 34 20 41 4e 44 20 61 3c 36 3b  ERE a>4 AND a<6;
17b0: 0a 20 20 7d 0a 7d 20 7b 35 20 68 65 6c 6c 6f 20  .  }.} {5 hello 
17c0: 77 6f 72 6c 64 20 32 7d 0a 64 6f 5f 74 65 73 74  world 2}.do_test
17d0: 20 69 6e 74 70 6b 65 79 2d 33 2e 34 20 7b 0a 20   intpkey-3.4 {. 
17e0: 20 63 6f 75 6e 74 20 7b 0a 20 20 20 20 53 45 4c   count {.    SEL
17f0: 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 20 57 48  ECT * FROM t1 WH
1800: 45 52 45 20 62 3e 3d 27 68 65 6c 6c 6f 27 20 41  ERE b>='hello' A
1810: 4e 44 20 62 3c 27 68 65 6c 6c 6f 32 27 3b 0a 20  ND b<'hello2';. 
1820: 20 7d 0a 7d 20 7b 35 20 68 65 6c 6c 6f 20 77 6f   }.} {5 hello wo
1830: 72 6c 64 20 33 7d 0a 64 6f 5f 74 65 73 74 20 69  rld 3}.do_test i
1840: 6e 74 70 6b 65 79 2d 33 2e 35 20 7b 0a 20 20 65  ntpkey-3.5 {.  e
1850: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 43 52 45  xecsql {.    CRE
1860: 41 54 45 20 49 4e 44 45 58 20 69 33 20 4f 4e 20  ATE INDEX i3 ON 
1870: 74 31 28 63 2c 61 29 3b 0a 20 20 7d 0a 7d 20 7b  t1(c,a);.  }.} {
1880: 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70 6b 65  }.do_test intpke
1890: 79 2d 33 2e 36 20 7b 0a 20 20 63 6f 75 6e 74 20  y-3.6 {.  count 
18a0: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46  {.    SELECT * F
18b0: 52 4f 4d 20 74 31 20 57 48 45 52 45 20 63 3d 3d  ROM t1 WHERE c==
18c0: 27 77 6f 72 6c 64 27 3b 0a 20 20 7d 0a 7d 20 7b  'world';.  }.} {
18d0: 35 20 68 65 6c 6c 6f 20 77 6f 72 6c 64 20 33 7d  5 hello world 3}
18e0: 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70 6b 65 79  .do_test intpkey
18f0: 2d 33 2e 37 20 7b 0a 20 20 65 78 65 63 73 71 6c  -3.7 {.  execsql
1900: 20 7b 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31   {INSERT INTO t1
1910: 20 56 41 4c 55 45 53 28 31 31 2c 27 68 65 6c 6c   VALUES(11,'hell
1920: 6f 27 2c 27 77 6f 72 6c 64 27 29 7d 0a 20 20 63  o','world')}.  c
1930: 6f 75 6e 74 20 7b 0a 20 20 20 20 53 45 4c 45 43  ount {.    SELEC
1940: 54 20 2a 20 46 52 4f 4d 20 74 31 20 57 48 45 52  T * FROM t1 WHER
1950: 45 20 63 3d 3d 27 77 6f 72 6c 64 27 3b 0a 20 20  E c=='world';.  
1960: 7d 0a 7d 20 7b 35 20 68 65 6c 6c 6f 20 77 6f 72  }.} {5 hello wor
1970: 6c 64 20 31 31 20 68 65 6c 6c 6f 20 77 6f 72 6c  ld 11 hello worl
1980: 64 20 35 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 74  d 5}.do_test int
1990: 70 6b 65 79 2d 33 2e 38 20 7b 0a 20 20 63 6f 75  pkey-3.8 {.  cou
19a0: 6e 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  nt {.    SELECT 
19b0: 2a 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20  * FROM t1 WHERE 
19c0: 63 3d 3d 27 77 6f 72 6c 64 27 20 41 4e 44 20 61  c=='world' AND a
19d0: 3e 37 3b 0a 20 20 7d 0a 7d 20 7b 31 31 20 68 65  >7;.  }.} {11 he
19e0: 6c 6c 6f 20 77 6f 72 6c 64 20 35 7d 0a 64 6f 5f  llo world 5}.do_
19f0: 74 65 73 74 20 69 6e 74 70 6b 65 79 2d 33 2e 39  test intpkey-3.9
1a00: 20 7b 0a 20 20 63 6f 75 6e 74 20 7b 0a 20 20 20   {.  count {.   
1a10: 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74   SELECT * FROM t
1a20: 31 20 57 48 45 52 45 20 37 3c 61 3b 0a 20 20 7d  1 WHERE 7<a;.  }
1a30: 0a 7d 20 7b 31 31 20 68 65 6c 6c 6f 20 77 6f 72  .} {11 hello wor
1a40: 6c 64 20 31 7d 0a 0a 23 20 54 65 73 74 20 69 6e  ld 1}..# Test in
1a50: 65 71 75 61 6c 69 74 79 20 63 6f 6e 73 74 72 61  equality constra
1a60: 69 6e 74 73 20 6f 6e 20 69 6e 74 65 67 65 72 20  ints on integer 
1a70: 70 72 69 6d 61 72 79 20 6b 65 79 73 20 61 6e 64  primary keys and
1a80: 20 72 6f 77 69 64 73 0a 23 0a 64 6f 5f 74 65 73   rowids.#.do_tes
1a90: 74 20 69 6e 74 70 6b 65 79 2d 34 2e 31 20 7b 0a  t intpkey-4.1 {.
1aa0: 20 20 63 6f 75 6e 74 20 7b 0a 20 20 20 20 53 45    count {.    SE
1ab0: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 20 57  LECT * FROM t1 W
1ac0: 48 45 52 45 20 31 31 3d 72 6f 77 69 64 0a 20 20  HERE 11=rowid.  
1ad0: 7d 0a 7d 20 7b 31 31 20 68 65 6c 6c 6f 20 77 6f  }.} {11 hello wo
1ae0: 72 6c 64 20 30 7d 0a 64 6f 5f 74 65 73 74 20 69  rld 0}.do_test i
1af0: 6e 74 70 6b 65 79 2d 34 2e 32 20 7b 0a 20 20 63  ntpkey-4.2 {.  c
1b00: 6f 75 6e 74 20 7b 0a 20 20 20 20 53 45 4c 45 43  ount {.    SELEC
1b10: 54 20 2a 20 46 52 4f 4d 20 74 31 20 57 48 45 52  T * FROM t1 WHER
1b20: 45 20 31 31 3d 72 6f 77 69 64 20 41 4e 44 20 62  E 11=rowid AND b
1b30: 3d 3d 27 68 65 6c 6c 6f 27 0a 20 20 7d 0a 7d 20  =='hello'.  }.} 
1b40: 7b 31 31 20 68 65 6c 6c 6f 20 77 6f 72 6c 64 20  {11 hello world 
1b50: 30 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70 6b  0}.do_test intpk
1b60: 65 79 2d 34 2e 33 20 7b 0a 20 20 63 6f 75 6e 74  ey-4.3 {.  count
1b70: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a 20   {.    SELECT * 
1b80: 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 31 31  FROM t1 WHERE 11
1b90: 3d 72 6f 77 69 64 20 41 4e 44 20 62 3d 3d 27 68  =rowid AND b=='h
1ba0: 65 6c 6c 6f 27 20 41 4e 44 20 63 20 49 53 20 4e  ello' AND c IS N
1bb0: 4f 54 20 4e 55 4c 4c 3b 0a 20 20 7d 0a 7d 20 7b  OT NULL;.  }.} {
1bc0: 31 31 20 68 65 6c 6c 6f 20 77 6f 72 6c 64 20 30  11 hello world 0
1bd0: 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70 6b 65  }.do_test intpke
1be0: 79 2d 34 2e 34 20 7b 0a 20 20 63 6f 75 6e 74 20  y-4.4 {.  count 
1bf0: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46  {.    SELECT * F
1c00: 52 4f 4d 20 74 31 20 57 48 45 52 45 20 72 6f 77  ROM t1 WHERE row
1c10: 69 64 3d 3d 31 31 0a 20 20 7d 0a 7d 20 7b 31 31  id==11.  }.} {11
1c20: 20 68 65 6c 6c 6f 20 77 6f 72 6c 64 20 30 7d 0a   hello world 0}.
1c30: 64 6f 5f 74 65 73 74 20 69 6e 74 70 6b 65 79 2d  do_test intpkey-
1c40: 34 2e 35 20 7b 0a 20 20 63 6f 75 6e 74 20 7b 0a  4.5 {.  count {.
1c50: 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f      SELECT * FRO
1c60: 4d 20 74 31 20 57 48 45 52 45 20 6f 69 64 3d 3d  M t1 WHERE oid==
1c70: 31 31 20 41 4e 44 20 62 3d 3d 27 68 65 6c 6c 6f  11 AND b=='hello
1c80: 27 0a 20 20 7d 0a 7d 20 7b 31 31 20 68 65 6c 6c  '.  }.} {11 hell
1c90: 6f 20 77 6f 72 6c 64 20 30 7d 0a 64 6f 5f 74 65  o world 0}.do_te
1ca0: 73 74 20 69 6e 74 70 6b 65 79 2d 34 2e 36 20 7b  st intpkey-4.6 {
1cb0: 0a 20 20 63 6f 75 6e 74 20 7b 0a 20 20 20 20 53  .  count {.    S
1cc0: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 20  ELECT * FROM t1 
1cd0: 57 48 45 52 45 20 61 3d 3d 31 31 20 41 4e 44 20  WHERE a==11 AND 
1ce0: 62 3d 3d 27 68 65 6c 6c 6f 27 20 41 4e 44 20 63  b=='hello' AND c
1cf0: 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 3b 0a 20 20   IS NOT NULL;.  
1d00: 7d 0a 7d 20 7b 31 31 20 68 65 6c 6c 6f 20 77 6f  }.} {11 hello wo
1d10: 72 6c 64 20 30 7d 0a 0a 64 6f 5f 74 65 73 74 20  rld 0}..do_test 
1d20: 69 6e 74 70 6b 65 79 2d 34 2e 37 20 7b 0a 20 20  intpkey-4.7 {.  
1d30: 63 6f 75 6e 74 20 7b 0a 20 20 20 20 53 45 4c 45  count {.    SELE
1d40: 43 54 20 2a 20 46 52 4f 4d 20 74 31 20 57 48 45  CT * FROM t1 WHE
1d50: 52 45 20 38 3c 72 6f 77 69 64 3b 0a 20 20 7d 0a  RE 8<rowid;.  }.
1d60: 7d 20 7b 31 31 20 68 65 6c 6c 6f 20 77 6f 72 6c  } {11 hello worl
1d70: 64 20 31 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 74  d 1}.do_test int
1d80: 70 6b 65 79 2d 34 2e 38 20 7b 0a 20 20 63 6f 75  pkey-4.8 {.  cou
1d90: 6e 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  nt {.    SELECT 
1da0: 2a 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20  * FROM t1 WHERE 
1db0: 38 3c 72 6f 77 69 64 20 41 4e 44 20 31 31 3e 3d  8<rowid AND 11>=
1dc0: 6f 69 64 3b 0a 20 20 7d 0a 7d 20 7b 31 31 20 68  oid;.  }.} {11 h
1dd0: 65 6c 6c 6f 20 77 6f 72 6c 64 20 31 7d 0a 64 6f  ello world 1}.do
1de0: 5f 74 65 73 74 20 69 6e 74 70 6b 65 79 2d 34 2e  _test intpkey-4.
1df0: 39 20 7b 0a 20 20 63 6f 75 6e 74 20 7b 0a 20 20  9 {.  count {.  
1e00: 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20    SELECT * FROM 
1e10: 74 31 20 57 48 45 52 45 20 31 31 3c 3d 5f 72 6f  t1 WHERE 11<=_ro
1e20: 77 69 64 5f 20 41 4e 44 20 31 32 3e 3d 61 3b 0a  wid_ AND 12>=a;.
1e30: 20 20 7d 0a 7d 20 7b 31 31 20 68 65 6c 6c 6f 20    }.} {11 hello 
1e40: 77 6f 72 6c 64 20 31 7d 0a 64 6f 5f 74 65 73 74  world 1}.do_test
1e50: 20 69 6e 74 70 6b 65 79 2d 34 2e 31 30 20 7b 0a   intpkey-4.10 {.
1e60: 20 20 63 6f 75 6e 74 20 7b 0a 20 20 20 20 53 45    count {.    SE
1e70: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 20 57  LECT * FROM t1 W
1e80: 48 45 52 45 20 30 3e 3d 5f 72 6f 77 69 64 5f 3b  HERE 0>=_rowid_;
1e90: 0a 20 20 7d 0a 7d 20 7b 2d 34 20 79 20 7a 20 31  .  }.} {-4 y z 1
1ea0: 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70 6b 65  }.do_test intpke
1eb0: 79 2d 34 2e 31 31 20 7b 0a 20 20 63 6f 75 6e 74  y-4.11 {.  count
1ec0: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a 20   {.    SELECT * 
1ed0: 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 61 3c  FROM t1 WHERE a<
1ee0: 30 3b 0a 20 20 7d 0a 7d 20 7b 2d 34 20 79 20 7a  0;.  }.} {-4 y z
1ef0: 20 31 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70   1}.do_test intp
1f00: 6b 65 79 2d 34 2e 31 32 20 7b 0a 20 20 63 6f 75  key-4.12 {.  cou
1f10: 6e 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  nt {.    SELECT 
1f20: 2a 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20  * FROM t1 WHERE 
1f30: 61 3c 30 20 41 4e 44 20 61 3e 31 30 3b 0a 20 20  a<0 AND a>10;.  
1f40: 7d 0a 7d 20 7b 31 7d 0a 0a 23 20 4d 61 6b 65 20  }.} {1}..# Make 
1f50: 73 75 72 65 20 69 74 20 69 73 20 4f 4b 20 74 6f  sure it is OK to
1f60: 20 69 6e 73 65 72 74 20 61 20 72 6f 77 69 64 20   insert a rowid 
1f70: 6f 66 20 30 0a 23 0a 64 6f 5f 74 65 73 74 20 69  of 0.#.do_test i
1f80: 6e 74 70 6b 65 79 2d 35 2e 31 20 7b 0a 20 20 65  ntpkey-5.1 {.  e
1f90: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 49 4e 53  xecsql {.    INS
1fa0: 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55  ERT INTO t1 VALU
1fb0: 45 53 28 30 2c 27 7a 65 72 6f 27 2c 27 65 6e 74  ES(0,'zero','ent
1fc0: 72 79 27 29 3b 0a 20 20 7d 0a 20 20 63 6f 75 6e  ry');.  }.  coun
1fd0: 74 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a  t {.    SELECT *
1fe0: 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 61   FROM t1 WHERE a
1ff0: 3d 30 3b 0a 20 20 7d 0a 7d 20 7b 30 20 7a 65 72  =0;.  }.} {0 zer
2000: 6f 20 65 6e 74 72 79 20 30 7d 0a 64 6f 5f 74 65  o entry 0}.do_te
2010: 73 74 20 69 6e 74 70 6b 65 79 3d 35 2e 32 20 7b  st intpkey=5.2 {
2020: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
2030: 20 53 45 4c 45 43 54 20 72 6f 77 69 64 2c 20 61   SELECT rowid, a
2040: 20 46 52 4f 4d 20 74 31 0a 20 20 7d 0a 7d 20 7b   FROM t1.  }.} {
2050: 2d 34 20 2d 34 20 30 20 30 20 35 20 35 20 36 20  -4 -4 0 0 5 5 6 
2060: 36 20 31 31 20 31 31 7d 0a 0a 23 20 54 65 73 74  6 11 11}..# Test
2070: 20 74 68 65 20 61 62 69 6c 69 74 79 20 6f 66 20   the ability of 
2080: 74 68 65 20 43 4f 50 59 20 63 6f 6d 6d 61 6e 64  the COPY command
2090: 20 74 6f 20 70 75 74 20 64 61 74 61 20 69 6e 74   to put data int
20a0: 6f 20 61 0a 23 20 74 61 62 6c 65 20 74 68 61 74  o a.# table that
20b0: 20 63 6f 6e 74 61 69 6e 73 20 61 6e 20 69 6e 74   contains an int
20c0: 65 67 65 72 20 70 72 69 6d 61 72 79 20 6b 65 79  eger primary key
20d0: 2e 0a 23 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70  ..#.do_test intp
20e0: 6b 65 79 2d 36 2e 31 20 7b 0a 20 20 73 65 74 20  key-6.1 {.  set 
20f0: 66 20 5b 6f 70 65 6e 20 2e 2f 64 61 74 61 31 2e  f [open ./data1.
2100: 74 78 74 20 77 5d 0a 20 20 70 75 74 73 20 24 66  txt w].  puts $f
2110: 20 22 32 30 5c 74 62 2d 32 30 5c 74 63 2d 32 30   "20\tb-20\tc-20
2120: 22 0a 20 20 70 75 74 73 20 24 66 20 22 32 31 5c  ".  puts $f "21\
2130: 74 62 2d 32 31 5c 74 63 2d 32 31 22 0a 20 20 70  tb-21\tc-21".  p
2140: 75 74 73 20 24 66 20 22 32 32 5c 74 62 2d 32 32  uts $f "22\tb-22
2150: 5c 74 63 2d 32 32 22 0a 20 20 63 6c 6f 73 65 20  \tc-22".  close 
2160: 24 66 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20  $f.  execsql {. 
2170: 20 20 20 43 4f 50 59 20 74 31 20 46 52 4f 4d 20     COPY t1 FROM 
2180: 27 64 61 74 61 31 2e 74 78 74 27 3b 0a 20 20 20  'data1.txt';.   
2190: 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74   SELECT * FROM t
21a0: 31 20 57 48 45 52 45 20 61 3e 3d 32 30 3b 0a 20  1 WHERE a>=20;. 
21b0: 20 7d 0a 7d 20 7b 32 30 20 62 2d 32 30 20 63 2d   }.} {20 b-20 c-
21c0: 32 30 20 32 31 20 62 2d 32 31 20 63 2d 32 31 20  20 21 b-21 c-21 
21d0: 32 32 20 62 2d 32 32 20 63 2d 32 32 7d 0a 64 6f  22 b-22 c-22}.do
21e0: 5f 74 65 73 74 20 69 6e 74 70 6b 65 79 2d 36 2e  _test intpkey-6.
21f0: 32 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  2 {.  execsql {.
2200: 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f      SELECT * FRO
2210: 4d 20 74 31 20 57 48 45 52 45 20 62 3d 3d 27 68  M t1 WHERE b=='h
2220: 65 6c 6c 6f 27 0a 20 20 7d 0a 7d 20 7b 35 20 68  ello'.  }.} {5 h
2230: 65 6c 6c 6f 20 77 6f 72 6c 64 20 31 31 20 68 65  ello world 11 he
2240: 6c 6c 6f 20 77 6f 72 6c 64 7d 0a 64 6f 5f 74 65  llo world}.do_te
2250: 73 74 20 69 6e 74 70 6b 65 79 2d 36 2e 33 20 7b  st intpkey-6.3 {
2260: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
2270: 20 44 45 4c 45 54 45 20 46 52 4f 4d 20 74 31 20   DELETE FROM t1 
2280: 57 48 45 52 45 20 62 3d 27 62 2d 32 31 27 3b 0a  WHERE b='b-21';.
2290: 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f      SELECT * FRO
22a0: 4d 20 74 31 20 57 48 45 52 45 20 62 3d 3d 27 62  M t1 WHERE b=='b
22b0: 2d 32 31 27 3b 0a 20 20 7d 0a 7d 20 7b 7d 0a 64  -21';.  }.} {}.d
22c0: 6f 5f 74 65 73 74 20 69 6e 74 70 6b 65 79 2d 36  o_test intpkey-6
22d0: 2e 34 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  .4 {.  execsql {
22e0: 0a 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52  .    SELECT * FR
22f0: 4f 4d 20 74 31 20 57 48 45 52 45 20 61 3e 3d 32  OM t1 WHERE a>=2
2300: 30 0a 20 20 7d 0a 7d 20 7b 32 30 20 62 2d 32 30  0.  }.} {20 b-20
2310: 20 63 2d 32 30 20 32 32 20 62 2d 32 32 20 63 2d   c-20 22 b-22 c-
2320: 32 32 7d 0a 0a 23 20 44 6f 20 61 6e 20 69 6e 73  22}..# Do an ins
2330: 65 72 74 20 6f 66 20 76 61 6c 75 65 73 20 77 69  ert of values wi
2340: 74 68 20 74 68 65 20 63 6f 6c 75 6d 6e 73 20 73  th the columns s
2350: 70 65 63 69 66 69 65 64 20 6f 75 74 20 6f 66 20  pecified out of 
2360: 6f 72 64 65 72 2e 0a 23 0a 64 6f 5f 74 65 73 74  order..#.do_test
2370: 20 69 6e 74 70 6b 65 79 2d 37 2e 31 20 7b 0a 20   intpkey-7.1 {. 
2380: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 49   execsql {.    I
2390: 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 28 63 2c  NSERT INTO t1(c,
23a0: 62 2c 61 29 20 56 41 4c 55 45 53 28 27 72 6f 77  b,a) VALUES('row
23b0: 27 2c 27 6e 65 77 27 2c 33 30 29 3b 0a 20 20 20  ','new',30);.   
23c0: 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74   SELECT * FROM t
23d0: 31 20 57 48 45 52 45 20 72 6f 77 69 64 3e 3d 33  1 WHERE rowid>=3
23e0: 30 3b 0a 20 20 7d 0a 7d 20 7b 33 30 20 6e 65 77  0;.  }.} {30 new
23f0: 20 72 6f 77 7d 0a 64 6f 5f 74 65 73 74 20 69 6e   row}.do_test in
2400: 74 70 6b 65 79 2d 37 2e 32 20 7b 0a 20 20 65 78  tpkey-7.2 {.  ex
2410: 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45  ecsql {.    SELE
2420: 43 54 20 2a 20 46 52 4f 4d 20 74 31 20 57 48 45  CT * FROM t1 WHE
2430: 52 45 20 72 6f 77 69 64 3e 32 30 3b 0a 20 20 7d  RE rowid>20;.  }
2440: 0a 7d 20 7b 32 32 20 62 2d 32 32 20 63 2d 32 32  .} {22 b-22 c-22
2450: 20 33 30 20 6e 65 77 20 72 6f 77 7d 0a 0a 23 20   30 new row}..# 
2460: 44 6f 20 61 6e 20 69 6e 73 65 72 74 20 66 72 6f  Do an insert fro
2470: 6d 20 61 20 73 65 6c 65 63 74 20 73 74 61 74 65  m a select state
2480: 6d 65 6e 74 2e 0a 23 0a 64 6f 5f 74 65 73 74 20  ment..#.do_test 
2490: 69 6e 74 70 6b 65 79 2d 38 2e 31 20 7b 0a 20 20  intpkey-8.1 {.  
24a0: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 43 52  execsql {.    CR
24b0: 45 41 54 45 20 54 41 42 4c 45 20 74 32 28 78 20  EATE TABLE t2(x 
24c0: 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20  INTEGER PRIMARY 
24d0: 4b 45 59 2c 20 79 2c 20 7a 29 3b 0a 20 20 20 20  KEY, y, z);.    
24e0: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 32 20 53  INSERT INTO t2 S
24f0: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 3b  ELECT * FROM t1;
2500: 0a 20 20 20 20 53 45 4c 45 43 54 20 72 6f 77 69  .    SELECT rowi
2510: 64 20 46 52 4f 4d 20 74 32 3b 0a 20 20 7d 0a 7d  d FROM t2;.  }.}
2520: 20 7b 2d 34 20 30 20 35 20 36 20 31 31 20 32 30   {-4 0 5 6 11 20
2530: 20 32 32 20 33 30 7d 0a 64 6f 5f 74 65 73 74 20   22 30}.do_test 
2540: 69 6e 74 70 6b 65 79 2d 38 2e 32 20 7b 0a 20 20  intpkey-8.2 {.  
2550: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45  execsql {.    SE
2560: 4c 45 43 54 20 78 20 46 52 4f 4d 20 74 32 3b 0a  LECT x FROM t2;.
2570: 20 20 7d 0a 7d 20 7b 2d 34 20 30 20 35 20 36 20    }.} {-4 0 5 6 
2580: 31 31 20 32 30 20 32 32 20 33 30 7d 0a 0a 64 6f  11 20 22 30}..do
2590: 5f 74 65 73 74 20 69 6e 74 70 6b 65 79 2d 39 2e  _test intpkey-9.
25a0: 31 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  1 {.  execsql {.
25b0: 20 20 20 20 55 50 44 41 54 45 20 74 31 20 53 45      UPDATE t1 SE
25c0: 54 20 63 3d 27 77 77 77 27 20 57 48 45 52 45 20  T c='www' WHERE 
25d0: 63 3d 27 77 6f 72 6c 64 27 3b 0a 20 20 20 20 53  c='world';.    S
25e0: 45 4c 45 43 54 20 72 6f 77 69 64 2c 20 61 2c 20  ELECT rowid, a, 
25f0: 63 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20  c FROM t1 WHERE 
2600: 63 3d 3d 27 77 77 77 27 3b 0a 20 20 7d 0a 7d 20  c=='www';.  }.} 
2610: 7b 35 20 35 20 77 77 77 20 31 31 20 31 31 20 77  {5 5 www 11 11 w
2620: 77 77 7d 0a 0a 0a 23 20 43 68 65 63 6b 20 69 6e  ww}...# Check in
2630: 73 65 72 74 20 6f 66 20 4e 55 4c 4c 20 66 6f 72  sert of NULL for
2640: 20 70 72 69 6d 61 72 79 20 6b 65 79 0a 23 0a 64   primary key.#.d
2650: 6f 5f 74 65 73 74 20 69 6e 74 70 6b 65 79 2d 31  o_test intpkey-1
2660: 30 2e 31 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  0.1 {.  execsql 
2670: 7b 0a 20 20 20 20 44 52 4f 50 20 54 41 42 4c 45  {.    DROP TABLE
2680: 20 74 32 3b 0a 20 20 20 20 43 52 45 41 54 45 20   t2;.    CREATE 
2690: 54 41 42 4c 45 20 74 32 28 78 20 49 4e 54 45 47  TABLE t2(x INTEG
26a0: 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 2c 20  ER PRIMARY KEY, 
26b0: 79 2c 20 7a 29 3b 0a 20 20 20 20 49 4e 53 45 52  y, z);.    INSER
26c0: 54 20 49 4e 54 4f 20 74 32 20 56 41 4c 55 45 53  T INTO t2 VALUES
26d0: 28 4e 55 4c 4c 2c 20 31 2c 20 32 29 3b 0a 20 20  (NULL, 1, 2);.  
26e0: 20 20 53 45 4c 45 43 54 20 2a 20 66 72 6f 6d 20    SELECT * from 
26f0: 74 32 3b 0a 20 20 7d 0a 7d 20 7b 31 20 31 20 32  t2;.  }.} {1 1 2
2700: 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70 6b 65  }.do_test intpke
2710: 79 2d 31 30 2e 32 20 7b 0a 20 20 65 78 65 63 73  y-10.2 {.  execs
2720: 71 6c 20 7b 0a 20 20 20 20 49 4e 53 45 52 54 20  ql {.    INSERT 
2730: 49 4e 54 4f 20 74 32 20 56 41 4c 55 45 53 28 4e  INTO t2 VALUES(N
2740: 55 4c 4c 2c 20 32 2c 20 33 29 3b 0a 20 20 20 20  ULL, 2, 3);.    
2750: 53 45 4c 45 43 54 20 2a 20 66 72 6f 6d 20 74 32  SELECT * from t2
2760: 20 57 48 45 52 45 20 78 3d 32 3b 0a 20 20 7d 0a   WHERE x=2;.  }.
2770: 7d 20 7b 32 20 32 20 33 7d 0a 64 6f 5f 74 65 73  } {2 2 3}.do_tes
2780: 74 20 69 6e 74 70 6b 65 79 2d 31 30 2e 33 20 7b  t intpkey-10.3 {
2790: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
27a0: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 32 20   INSERT INTO t2 
27b0: 53 45 4c 45 43 54 20 4e 55 4c 4c 2c 20 7a 2c 20  SELECT NULL, z, 
27c0: 79 20 46 52 4f 4d 20 74 32 3b 0a 20 20 20 20 53  y FROM t2;.    S
27d0: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 32 3b  ELECT * FROM t2;
27e0: 0a 20 20 7d 0a 7d 20 7b 31 20 31 20 32 20 32 20  .  }.} {1 1 2 2 
27f0: 32 20 33 20 33 20 32 20 31 20 34 20 33 20 32 7d  2 3 3 2 1 4 3 2}
2800: 0a 0a 23 20 54 68 69 73 20 74 65 73 74 73 20 63  ..# This tests c
2810: 68 65 63 6b 73 20 74 6f 20 73 65 65 20 69 66 20  hecks to see if 
2820: 61 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74  a floating point
2830: 20 6e 75 6d 62 65 72 20 63 61 6e 20 62 65 20 75   number can be u
2840: 73 65 64 0a 23 20 74 6f 20 72 65 66 65 72 65 6e  sed.# to referen
2850: 63 65 20 61 6e 20 69 6e 74 65 67 65 72 20 70 72  ce an integer pr
2860: 69 6d 61 72 79 20 6b 65 79 2e 0a 23 0a 64 6f 5f  imary key..#.do_
2870: 74 65 73 74 20 69 6e 74 70 6b 65 79 2d 31 31 2e  test intpkey-11.
2880: 31 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  1 {.  execsql {.
2890: 20 20 20 20 53 45 4c 45 43 54 20 62 20 46 52 4f      SELECT b FRO
28a0: 4d 20 74 31 20 57 48 45 52 45 20 61 3d 32 2e 30  M t1 WHERE a=2.0
28b0: 2b 33 2e 30 3b 0a 20 20 7d 0a 7d 20 7b 68 65 6c  +3.0;.  }.} {hel
28c0: 6c 6f 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 74 70  lo}.do_test intp
28d0: 6b 65 79 2d 31 31 2e 31 20 7b 0a 20 20 65 78 65  key-11.1 {.  exe
28e0: 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43  csql {.    SELEC
28f0: 54 20 62 20 46 52 4f 4d 20 74 31 20 57 48 45 52  T b FROM t1 WHER
2900: 45 20 61 3d 32 2e 30 2b 33 2e 35 3b 0a 20 20 7d  E a=2.0+3.5;.  }
2910: 0a 7d 20 7b 7d 0a 0a 66 69 6e 69 73 68 5f 74 65  .} {}..finish_te
2920: 73 74 0a                                         st.