/ Hex Artifact Content
Login

Artifact 0555aa5c789520f16d86a39c6c49b87998e01bea:


0000: 23 20 32 30 30 34 20 4e 6f 76 65 6d 62 65 72 20  # 2004 November 
0010: 31 32 0a 23 0a 23 20 54 68 65 20 61 75 74 68 6f  12.#.# The autho
0020: 72 20 64 69 73 63 6c 61 69 6d 73 20 63 6f 70 79  r disclaims copy
0030: 72 69 67 68 74 20 74 6f 20 74 68 69 73 20 73 6f  right to this so
0040: 75 72 63 65 20 63 6f 64 65 2e 20 20 49 6e 20 70  urce code.  In p
0050: 6c 61 63 65 20 6f 66 0a 23 20 61 20 6c 65 67 61  lace of.# a lega
0060: 6c 20 6e 6f 74 69 63 65 2c 20 68 65 72 65 20 69  l notice, here i
0070: 73 20 61 20 62 6c 65 73 73 69 6e 67 3a 0a 23 0a  s a blessing:.#.
0080: 23 20 20 20 20 4d 61 79 20 79 6f 75 20 64 6f 20  #    May you do 
0090: 67 6f 6f 64 20 61 6e 64 20 6e 6f 74 20 65 76 69  good and not evi
00a0: 6c 2e 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20  l..#    May you 
00b0: 66 69 6e 64 20 66 6f 72 67 69 76 65 6e 65 73 73  find forgiveness
00c0: 20 66 6f 72 20 79 6f 75 72 73 65 6c 66 20 61 6e   for yourself an
00d0: 64 20 66 6f 72 67 69 76 65 20 6f 74 68 65 72 73  d forgive others
00e0: 2e 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20 73  ..#    May you s
00f0: 68 61 72 65 20 66 72 65 65 6c 79 2c 20 6e 65 76  hare freely, nev
0100: 65 72 20 74 61 6b 69 6e 67 20 6d 6f 72 65 20 74  er taking more t
0110: 68 61 6e 20 79 6f 75 20 67 69 76 65 2e 0a 23 0a  han you give..#.
0120: 23 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  #***************
0130: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0140: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0150: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0160: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 23 20 54 68 69  **********.# Thi
0170: 73 20 66 69 6c 65 20 69 6d 70 6c 65 6d 65 6e 74  s file implement
0180: 73 20 72 65 67 72 65 73 73 69 6f 6e 20 74 65 73  s regression tes
0190: 74 73 20 66 6f 72 20 53 51 4c 69 74 65 20 6c 69  ts for SQLite li
01a0: 62 72 61 72 79 2e 20 20 54 68 65 0a 23 20 66 6f  brary.  The.# fo
01b0: 63 75 73 20 6f 66 20 74 68 69 73 20 73 63 72 69  cus of this scri
01c0: 70 74 20 69 73 20 74 65 73 74 69 6e 67 20 74 68  pt is testing th
01d0: 65 20 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 20  e AUTOINCREMENT 
01e0: 66 65 61 74 75 72 65 73 2e 0a 23 0a 23 20 24 49  features..#.# $I
01f0: 64 3a 20 61 75 74 6f 69 6e 63 2e 74 65 73 74 2c  d: autoinc.test,
0200: 76 20 31 2e 31 31 20 32 30 30 38 2f 30 31 2f 30  v 1.11 2008/01/0
0210: 34 20 31 39 3a 31 30 3a 32 39 20 64 61 6e 69 65  4 19:10:29 danie
0220: 6c 6b 31 39 37 37 20 45 78 70 20 24 0a 23 0a 0a  lk1977 Exp $.#..
0230: 73 65 74 20 74 65 73 74 64 69 72 20 5b 66 69 6c  set testdir [fil
0240: 65 20 64 69 72 6e 61 6d 65 20 24 61 72 67 76 30  e dirname $argv0
0250: 5d 0a 73 6f 75 72 63 65 20 24 74 65 73 74 64 69  ].source $testdi
0260: 72 2f 74 65 73 74 65 72 2e 74 63 6c 0a 0a 23 20  r/tester.tcl..# 
0270: 49 66 20 74 68 65 20 6c 69 62 72 61 72 79 20 69  If the library i
0280: 73 20 6e 6f 74 20 63 6f 6d 70 69 6c 65 64 20 77  s not compiled w
0290: 69 74 68 20 61 75 74 6f 69 6e 63 72 65 6d 65 6e  ith autoincremen
02a0: 74 20 73 75 70 70 6f 72 74 20 74 68 65 6e 0a 23  t support then.#
02b0: 20 73 6b 69 70 20 61 6c 6c 20 74 65 73 74 73 20   skip all tests 
02c0: 69 6e 20 74 68 69 73 20 66 69 6c 65 2e 0a 23 0a  in this file..#.
02d0: 69 66 63 61 70 61 62 6c 65 20 7b 21 61 75 74 6f  ifcapable {!auto
02e0: 69 6e 63 7d 20 7b 0a 20 20 66 69 6e 69 73 68 5f  inc} {.  finish_
02f0: 74 65 73 74 0a 20 20 72 65 74 75 72 6e 0a 7d 0a  test.  return.}.
0300: 0a 23 20 54 68 65 20 64 61 74 61 62 61 73 65 20  .# The database 
0310: 69 73 20 69 6e 69 74 69 61 6c 6c 79 20 65 6d 70  is initially emp
0320: 74 79 2e 0a 23 0a 64 6f 5f 74 65 73 74 20 61 75  ty..#.do_test au
0330: 74 6f 69 6e 63 2d 31 2e 31 20 7b 0a 20 20 65 78  toinc-1.1 {.  ex
0340: 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45  ecsql {.    SELE
0350: 43 54 20 6e 61 6d 65 20 46 52 4f 4d 20 73 71 6c  CT name FROM sql
0360: 69 74 65 5f 6d 61 73 74 65 72 20 57 48 45 52 45  ite_master WHERE
0370: 20 74 79 70 65 3d 27 74 61 62 6c 65 27 3b 0a 20   type='table';. 
0380: 20 7d 0a 7d 20 7b 7d 0a 0a 23 20 41 64 64 20 61   }.} {}..# Add a
0390: 20 74 61 62 6c 65 20 77 69 74 68 20 74 68 65 20   table with the 
03a0: 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 20 66 65  AUTOINCREMENT fe
03b0: 61 74 75 72 65 2e 20 20 56 65 72 69 66 79 20 74  ature.  Verify t
03c0: 68 61 74 20 74 68 65 0a 23 20 53 51 4c 49 54 45  hat the.# SQLITE
03d0: 5f 53 45 51 55 45 4e 43 45 20 74 61 62 6c 65 20  _SEQUENCE table 
03e0: 67 65 74 73 20 63 72 65 61 74 65 64 2e 0a 23 0a  gets created..#.
03f0: 64 6f 5f 74 65 73 74 20 61 75 74 6f 69 6e 63 2d  do_test autoinc-
0400: 31 2e 32 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  1.2 {.  execsql 
0410: 7b 0a 20 20 20 20 43 52 45 41 54 45 20 54 41 42  {.    CREATE TAB
0420: 4c 45 20 74 31 28 78 20 49 4e 54 45 47 45 52 20  LE t1(x INTEGER 
0430: 50 52 49 4d 41 52 59 20 4b 45 59 20 41 55 54 4f  PRIMARY KEY AUTO
0440: 49 4e 43 52 45 4d 45 4e 54 2c 20 79 29 3b 0a 20  INCREMENT, y);. 
0450: 20 20 20 53 45 4c 45 43 54 20 6e 61 6d 65 20 46     SELECT name F
0460: 52 4f 4d 20 73 71 6c 69 74 65 5f 6d 61 73 74 65  ROM sqlite_maste
0470: 72 20 57 48 45 52 45 20 74 79 70 65 3d 27 74 61  r WHERE type='ta
0480: 62 6c 65 27 3b 0a 20 20 7d 0a 7d 20 7b 74 31 20  ble';.  }.} {t1 
0490: 73 71 6c 69 74 65 5f 73 65 71 75 65 6e 63 65 7d  sqlite_sequence}
04a0: 0a 0a 23 20 54 68 65 20 53 51 4c 49 54 45 5f 53  ..# The SQLITE_S
04b0: 45 51 55 45 4e 43 45 20 74 61 62 6c 65 20 69 73  EQUENCE table is
04c0: 20 69 6e 69 74 69 61 6c 6c 79 20 65 6d 70 74 79   initially empty
04d0: 0a 23 0a 64 6f 5f 74 65 73 74 20 61 75 74 6f 69  .#.do_test autoi
04e0: 6e 63 2d 31 2e 33 20 7b 0a 20 20 65 78 65 63 73  nc-1.3 {.  execs
04f0: 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  ql {.    SELECT 
0500: 2a 20 46 52 4f 4d 20 73 71 6c 69 74 65 5f 73 65  * FROM sqlite_se
0510: 71 75 65 6e 63 65 3b 0a 20 20 7d 0a 7d 20 7b 7d  quence;.  }.} {}
0520: 0a 0a 23 20 43 6c 6f 73 65 20 61 6e 64 20 72 65  ..# Close and re
0530: 6f 70 65 6e 20 74 68 65 20 64 61 74 61 62 61 73  open the databas
0540: 65 2e 20 20 56 65 72 69 66 79 20 74 68 61 74 20  e.  Verify that 
0550: 65 76 65 72 79 74 68 69 6e 67 20 69 73 20 73 74  everything is st
0560: 69 6c 6c 20 74 68 65 72 65 2e 0a 23 0a 64 6f 5f  ill there..#.do_
0570: 74 65 73 74 20 61 75 74 6f 69 6e 63 2d 31 2e 34  test autoinc-1.4
0580: 20 7b 0a 20 20 64 62 20 63 6c 6f 73 65 0a 20 20   {.  db close.  
0590: 73 71 6c 69 74 65 33 20 64 62 20 74 65 73 74 2e  sqlite3 db test.
05a0: 64 62 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20  db.  execsql {. 
05b0: 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d     SELECT * FROM
05c0: 20 73 71 6c 69 74 65 5f 73 65 71 75 65 6e 63 65   sqlite_sequence
05d0: 3b 0a 20 20 7d 0a 7d 20 7b 7d 0a 0a 23 20 57 65  ;.  }.} {}..# We
05e0: 20 61 72 65 20 6e 6f 74 20 61 6c 6c 6f 77 65 64   are not allowed
05f0: 20 74 6f 20 64 72 6f 70 20 74 68 65 20 73 71 6c   to drop the sql
0600: 69 74 65 5f 73 65 71 75 65 6e 63 65 20 74 61 62  ite_sequence tab
0610: 6c 65 2e 0a 23 0a 64 6f 5f 74 65 73 74 20 61 75  le..#.do_test au
0620: 74 6f 69 6e 63 2d 31 2e 35 20 7b 0a 20 20 63 61  toinc-1.5 {.  ca
0630: 74 63 68 73 71 6c 20 7b 44 52 4f 50 20 54 41 42  tchsql {DROP TAB
0640: 4c 45 20 73 71 6c 69 74 65 5f 73 65 71 75 65 6e  LE sqlite_sequen
0650: 63 65 7d 0a 7d 20 7b 31 20 7b 74 61 62 6c 65 20  ce}.} {1 {table 
0660: 73 71 6c 69 74 65 5f 73 65 71 75 65 6e 63 65 20  sqlite_sequence 
0670: 6d 61 79 20 6e 6f 74 20 62 65 20 64 72 6f 70 70  may not be dropp
0680: 65 64 7d 7d 0a 64 6f 5f 74 65 73 74 20 61 75 74  ed}}.do_test aut
0690: 6f 69 6e 63 2d 31 2e 36 20 7b 0a 20 20 65 78 65  oinc-1.6 {.  exe
06a0: 63 73 71 6c 20 7b 53 45 4c 45 43 54 20 6e 61 6d  csql {SELECT nam
06b0: 65 20 46 52 4f 4d 20 73 71 6c 69 74 65 5f 6d 61  e FROM sqlite_ma
06c0: 73 74 65 72 20 57 48 45 52 45 20 74 79 70 65 3d  ster WHERE type=
06d0: 27 74 61 62 6c 65 27 7d 0a 7d 20 7b 74 31 20 73  'table'}.} {t1 s
06e0: 71 6c 69 74 65 5f 73 65 71 75 65 6e 63 65 7d 0a  qlite_sequence}.
06f0: 0a 23 20 49 6e 73 65 72 74 20 61 6e 20 65 6e 74  .# Insert an ent
0700: 72 69 65 73 20 69 6e 74 6f 20 74 68 65 20 74 31  ries into the t1
0710: 20 74 61 62 6c 65 20 61 6e 64 20 6d 61 6b 65 20   table and make 
0720: 73 75 72 65 20 74 68 65 20 6c 61 72 67 65 73 74  sure the largest
0730: 20 6b 65 79 0a 23 20 69 73 20 61 6c 77 61 79 73   key.# is always
0740: 20 72 65 63 6f 72 64 65 64 20 69 6e 20 74 68 65   recorded in the
0750: 20 73 71 6c 69 74 65 5f 73 65 71 75 65 6e 63 65   sqlite_sequence
0760: 20 74 61 62 6c 65 2e 0a 23 0a 64 6f 5f 74 65 73   table..#.do_tes
0770: 74 20 61 75 74 6f 69 6e 63 2d 32 2e 31 20 7b 0a  t autoinc-2.1 {.
0780: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
0790: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 73 71  SELECT * FROM sq
07a0: 6c 69 74 65 5f 73 65 71 75 65 6e 63 65 0a 20 20  lite_sequence.  
07b0: 7d 0a 7d 20 7b 7d 0a 64 6f 5f 74 65 73 74 20 61  }.} {}.do_test a
07c0: 75 74 6f 69 6e 63 2d 32 2e 32 20 7b 0a 20 20 65  utoinc-2.2 {.  e
07d0: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 49 4e 53  xecsql {.    INS
07e0: 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55  ERT INTO t1 VALU
07f0: 45 53 28 31 32 2c 33 34 29 3b 0a 20 20 20 20 53  ES(12,34);.    S
0800: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 73 71 6c  ELECT * FROM sql
0810: 69 74 65 5f 73 65 71 75 65 6e 63 65 3b 0a 20 20  ite_sequence;.  
0820: 7d 0a 7d 20 7b 74 31 20 31 32 7d 0a 64 6f 5f 74  }.} {t1 12}.do_t
0830: 65 73 74 20 61 75 74 6f 69 6e 63 2d 32 2e 33 20  est autoinc-2.3 
0840: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
0850: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31    INSERT INTO t1
0860: 20 56 41 4c 55 45 53 28 31 2c 32 33 29 3b 0a 20   VALUES(1,23);. 
0870: 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d     SELECT * FROM
0880: 20 73 71 6c 69 74 65 5f 73 65 71 75 65 6e 63 65   sqlite_sequence
0890: 3b 0a 20 20 7d 0a 7d 20 7b 74 31 20 31 32 7d 0a  ;.  }.} {t1 12}.
08a0: 64 6f 5f 74 65 73 74 20 61 75 74 6f 69 6e 63 2d  do_test autoinc-
08b0: 32 2e 34 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  2.4 {.  execsql 
08c0: 7b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54  {.    INSERT INT
08d0: 4f 20 74 31 20 56 41 4c 55 45 53 28 31 32 33 2c  O t1 VALUES(123,
08e0: 34 35 36 29 3b 0a 20 20 20 20 53 45 4c 45 43 54  456);.    SELECT
08f0: 20 2a 20 46 52 4f 4d 20 73 71 6c 69 74 65 5f 73   * FROM sqlite_s
0900: 65 71 75 65 6e 63 65 3b 0a 20 20 7d 0a 7d 20 7b  equence;.  }.} {
0910: 74 31 20 31 32 33 7d 0a 64 6f 5f 74 65 73 74 20  t1 123}.do_test 
0920: 61 75 74 6f 69 6e 63 2d 32 2e 35 20 7b 0a 20 20  autoinc-2.5 {.  
0930: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 49 4e  execsql {.    IN
0940: 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c  SERT INTO t1 VAL
0950: 55 45 53 28 4e 55 4c 4c 2c 35 36 37 29 3b 0a 20  UES(NULL,567);. 
0960: 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d     SELECT * FROM
0970: 20 73 71 6c 69 74 65 5f 73 65 71 75 65 6e 63 65   sqlite_sequence
0980: 3b 0a 20 20 7d 0a 7d 20 7b 74 31 20 31 32 34 7d  ;.  }.} {t1 124}
0990: 0a 64 6f 5f 74 65 73 74 20 61 75 74 6f 69 6e 63  .do_test autoinc
09a0: 2d 32 2e 36 20 7b 0a 20 20 65 78 65 63 73 71 6c  -2.6 {.  execsql
09b0: 20 7b 0a 20 20 20 20 44 45 4c 45 54 45 20 46 52   {.    DELETE FR
09c0: 4f 4d 20 74 31 20 57 48 45 52 45 20 79 3d 35 36  OM t1 WHERE y=56
09d0: 37 3b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a 20  7;.    SELECT * 
09e0: 46 52 4f 4d 20 73 71 6c 69 74 65 5f 73 65 71 75  FROM sqlite_sequ
09f0: 65 6e 63 65 3b 0a 20 20 7d 0a 7d 20 7b 74 31 20  ence;.  }.} {t1 
0a00: 31 32 34 7d 0a 64 6f 5f 74 65 73 74 20 61 75 74  124}.do_test aut
0a10: 6f 69 6e 63 2d 32 2e 37 20 7b 0a 20 20 65 78 65  oinc-2.7 {.  exe
0a20: 63 73 71 6c 20 7b 0a 20 20 20 20 49 4e 53 45 52  csql {.    INSER
0a30: 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45 53  T INTO t1 VALUES
0a40: 28 4e 55 4c 4c 2c 35 36 37 29 3b 0a 20 20 20 20  (NULL,567);.    
0a50: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 73 71  SELECT * FROM sq
0a60: 6c 69 74 65 5f 73 65 71 75 65 6e 63 65 3b 0a 20  lite_sequence;. 
0a70: 20 7d 0a 7d 20 7b 74 31 20 31 32 35 7d 0a 64 6f   }.} {t1 125}.do
0a80: 5f 74 65 73 74 20 61 75 74 6f 69 6e 63 2d 32 2e  _test autoinc-2.
0a90: 38 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  8 {.  execsql {.
0aa0: 20 20 20 20 44 45 4c 45 54 45 20 46 52 4f 4d 20      DELETE FROM 
0ab0: 74 31 3b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a  t1;.    SELECT *
0ac0: 20 46 52 4f 4d 20 73 71 6c 69 74 65 5f 73 65 71   FROM sqlite_seq
0ad0: 75 65 6e 63 65 3b 0a 20 20 7d 0a 7d 20 7b 74 31  uence;.  }.} {t1
0ae0: 20 31 32 35 7d 0a 64 6f 5f 74 65 73 74 20 61 75   125}.do_test au
0af0: 74 6f 69 6e 63 2d 32 2e 39 20 7b 0a 20 20 65 78  toinc-2.9 {.  ex
0b00: 65 63 73 71 6c 20 7b 0a 20 20 20 20 49 4e 53 45  ecsql {.    INSE
0b10: 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45  RT INTO t1 VALUE
0b20: 53 28 31 32 2c 33 34 29 3b 0a 20 20 20 20 53 45  S(12,34);.    SE
0b30: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 73 71 6c 69  LECT * FROM sqli
0b40: 74 65 5f 73 65 71 75 65 6e 63 65 3b 0a 20 20 7d  te_sequence;.  }
0b50: 0a 7d 20 7b 74 31 20 31 32 35 7d 0a 64 6f 5f 74  .} {t1 125}.do_t
0b60: 65 73 74 20 61 75 74 6f 69 6e 63 2d 32 2e 31 30  est autoinc-2.10
0b70: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
0b80: 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74     INSERT INTO t
0b90: 31 20 56 41 4c 55 45 53 28 31 32 35 2c 34 35 36  1 VALUES(125,456
0ba0: 29 3b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a 20  );.    SELECT * 
0bb0: 46 52 4f 4d 20 73 71 6c 69 74 65 5f 73 65 71 75  FROM sqlite_sequ
0bc0: 65 6e 63 65 3b 0a 20 20 7d 0a 7d 20 7b 74 31 20  ence;.  }.} {t1 
0bd0: 31 32 35 7d 0a 64 6f 5f 74 65 73 74 20 61 75 74  125}.do_test aut
0be0: 6f 69 6e 63 2d 32 2e 31 31 20 7b 0a 20 20 65 78  oinc-2.11 {.  ex
0bf0: 65 63 73 71 6c 20 7b 0a 20 20 20 20 49 4e 53 45  ecsql {.    INSE
0c00: 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45  RT INTO t1 VALUE
0c10: 53 28 2d 31 32 33 34 35 36 37 2c 2d 31 29 3b 0a  S(-1234567,-1);.
0c20: 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f      SELECT * FRO
0c30: 4d 20 73 71 6c 69 74 65 5f 73 65 71 75 65 6e 63  M sqlite_sequenc
0c40: 65 3b 0a 20 20 7d 0a 7d 20 7b 74 31 20 31 32 35  e;.  }.} {t1 125
0c50: 7d 0a 64 6f 5f 74 65 73 74 20 61 75 74 6f 69 6e  }.do_test autoin
0c60: 63 2d 32 2e 31 32 20 7b 0a 20 20 65 78 65 63 73  c-2.12 {.  execs
0c70: 71 6c 20 7b 0a 20 20 20 20 49 4e 53 45 52 54 20  ql {.    INSERT 
0c80: 49 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28 32  INTO t1 VALUES(2
0c90: 33 34 2c 35 36 37 38 29 3b 0a 20 20 20 20 53 45  34,5678);.    SE
0ca0: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 73 71 6c 69  LECT * FROM sqli
0cb0: 74 65 5f 73 65 71 75 65 6e 63 65 3b 0a 20 20 7d  te_sequence;.  }
0cc0: 0a 7d 20 7b 74 31 20 32 33 34 7d 0a 64 6f 5f 74  .} {t1 234}.do_t
0cd0: 65 73 74 20 61 75 74 6f 69 6e 63 2d 32 2e 31 33  est autoinc-2.13
0ce0: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
0cf0: 20 20 20 44 45 4c 45 54 45 20 46 52 4f 4d 20 74     DELETE FROM t
0d00: 31 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e  1;.    INSERT IN
0d10: 54 4f 20 74 31 20 56 41 4c 55 45 53 28 4e 55 4c  TO t1 VALUES(NUL
0d20: 4c 2c 31 29 3b 0a 20 20 20 20 53 45 4c 45 43 54  L,1);.    SELECT
0d30: 20 2a 20 46 52 4f 4d 20 73 71 6c 69 74 65 5f 73   * FROM sqlite_s
0d40: 65 71 75 65 6e 63 65 3b 0a 20 20 7d 0a 7d 20 7b  equence;.  }.} {
0d50: 74 31 20 32 33 35 7d 0a 64 6f 5f 74 65 73 74 20  t1 235}.do_test 
0d60: 61 75 74 6f 69 6e 63 2d 32 2e 31 34 20 7b 0a 20  autoinc-2.14 {. 
0d70: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53   execsql {.    S
0d80: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 3b  ELECT * FROM t1;
0d90: 0a 20 20 7d 0a 7d 20 7b 32 33 35 20 31 7d 0a 0a  .  }.} {235 1}..
0da0: 23 20 4d 61 6e 75 61 6c 6c 79 20 63 68 61 6e 67  # Manually chang
0db0: 65 20 74 68 65 20 61 75 74 6f 69 6e 63 72 65 6d  e the autoincrem
0dc0: 65 6e 74 20 76 61 6c 75 65 73 20 69 6e 20 73 71  ent values in sq
0dd0: 6c 69 74 65 5f 73 65 71 75 65 6e 63 65 2e 0a 23  lite_sequence..#
0de0: 0a 64 6f 5f 74 65 73 74 20 61 75 74 6f 69 6e 63  .do_test autoinc
0df0: 2d 32 2e 32 30 20 7b 0a 20 20 65 78 65 63 73 71  -2.20 {.  execsq
0e00: 6c 20 7b 0a 20 20 20 20 55 50 44 41 54 45 20 73  l {.    UPDATE s
0e10: 71 6c 69 74 65 5f 73 65 71 75 65 6e 63 65 20 53  qlite_sequence S
0e20: 45 54 20 73 65 71 3d 31 32 33 34 20 57 48 45 52  ET seq=1234 WHER
0e30: 45 20 6e 61 6d 65 3d 27 74 31 27 3b 0a 20 20 20  E name='t1';.   
0e40: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20   INSERT INTO t1 
0e50: 56 41 4c 55 45 53 28 4e 55 4c 4c 2c 32 29 3b 0a  VALUES(NULL,2);.
0e60: 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f      SELECT * FRO
0e70: 4d 20 74 31 3b 0a 20 20 7d 0a 7d 20 7b 32 33 35  M t1;.  }.} {235
0e80: 20 31 20 31 32 33 35 20 32 7d 0a 64 6f 5f 74 65   1 1235 2}.do_te
0e90: 73 74 20 61 75 74 6f 69 6e 63 2d 32 2e 32 31 20  st autoinc-2.21 
0ea0: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
0eb0: 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20    SELECT * FROM 
0ec0: 73 71 6c 69 74 65 5f 73 65 71 75 65 6e 63 65 3b  sqlite_sequence;
0ed0: 0a 20 20 7d 0a 7d 20 7b 74 31 20 31 32 33 35 7d  .  }.} {t1 1235}
0ee0: 0a 64 6f 5f 74 65 73 74 20 61 75 74 6f 69 6e 63  .do_test autoinc
0ef0: 2d 32 2e 32 32 20 7b 0a 20 20 65 78 65 63 73 71  -2.22 {.  execsq
0f00: 6c 20 7b 0a 20 20 20 20 55 50 44 41 54 45 20 73  l {.    UPDATE s
0f10: 71 6c 69 74 65 5f 73 65 71 75 65 6e 63 65 20 53  qlite_sequence S
0f20: 45 54 20 73 65 71 3d 4e 55 4c 4c 20 57 48 45 52  ET seq=NULL WHER
0f30: 45 20 6e 61 6d 65 3d 27 74 31 27 3b 0a 20 20 20  E name='t1';.   
0f40: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20   INSERT INTO t1 
0f50: 56 41 4c 55 45 53 28 4e 55 4c 4c 2c 33 29 3b 0a  VALUES(NULL,3);.
0f60: 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f      SELECT * FRO
0f70: 4d 20 74 31 3b 0a 20 20 7d 0a 7d 20 7b 32 33 35  M t1;.  }.} {235
0f80: 20 31 20 31 32 33 35 20 32 20 31 32 33 36 20 33   1 1235 2 1236 3
0f90: 7d 0a 64 6f 5f 74 65 73 74 20 61 75 74 6f 69 6e  }.do_test autoin
0fa0: 63 2d 32 2e 32 33 20 7b 0a 20 20 65 78 65 63 73  c-2.23 {.  execs
0fb0: 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  ql {.    SELECT 
0fc0: 2a 20 46 52 4f 4d 20 73 71 6c 69 74 65 5f 73 65  * FROM sqlite_se
0fd0: 71 75 65 6e 63 65 3b 0a 20 20 7d 0a 7d 20 7b 74  quence;.  }.} {t
0fe0: 31 20 31 32 33 36 7d 0a 64 6f 5f 74 65 73 74 20  1 1236}.do_test 
0ff0: 61 75 74 6f 69 6e 63 2d 32 2e 32 34 20 7b 0a 20  autoinc-2.24 {. 
1000: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 55   execsql {.    U
1010: 50 44 41 54 45 20 73 71 6c 69 74 65 5f 73 65 71  PDATE sqlite_seq
1020: 75 65 6e 63 65 20 53 45 54 20 73 65 71 3d 27 61  uence SET seq='a
1030: 2d 73 74 72 69 6e 67 27 20 57 48 45 52 45 20 6e  -string' WHERE n
1040: 61 6d 65 3d 27 74 31 27 3b 0a 20 20 20 20 49 4e  ame='t1';.    IN
1050: 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c  SERT INTO t1 VAL
1060: 55 45 53 28 4e 55 4c 4c 2c 34 29 3b 0a 20 20 20  UES(NULL,4);.   
1070: 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74   SELECT * FROM t
1080: 31 3b 0a 20 20 7d 0a 7d 20 7b 32 33 35 20 31 20  1;.  }.} {235 1 
1090: 31 32 33 35 20 32 20 31 32 33 36 20 33 20 31 32  1235 2 1236 3 12
10a0: 33 37 20 34 7d 0a 64 6f 5f 74 65 73 74 20 61 75  37 4}.do_test au
10b0: 74 6f 69 6e 63 2d 32 2e 32 35 20 7b 0a 20 20 65  toinc-2.25 {.  e
10c0: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c  xecsql {.    SEL
10d0: 45 43 54 20 2a 20 46 52 4f 4d 20 73 71 6c 69 74  ECT * FROM sqlit
10e0: 65 5f 73 65 71 75 65 6e 63 65 3b 0a 20 20 7d 0a  e_sequence;.  }.
10f0: 7d 20 7b 74 31 20 31 32 33 37 7d 0a 64 6f 5f 74  } {t1 1237}.do_t
1100: 65 73 74 20 61 75 74 6f 69 6e 63 2d 32 2e 32 36  est autoinc-2.26
1110: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
1120: 20 20 20 44 45 4c 45 54 45 20 46 52 4f 4d 20 73     DELETE FROM s
1130: 71 6c 69 74 65 5f 73 65 71 75 65 6e 63 65 20 57  qlite_sequence W
1140: 48 45 52 45 20 6e 61 6d 65 3d 27 74 31 27 3b 0a  HERE name='t1';.
1150: 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20      INSERT INTO 
1160: 74 31 20 56 41 4c 55 45 53 28 4e 55 4c 4c 2c 35  t1 VALUES(NULL,5
1170: 29 3b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a 20  );.    SELECT * 
1180: 46 52 4f 4d 20 74 31 3b 0a 20 20 7d 0a 7d 20 7b  FROM t1;.  }.} {
1190: 32 33 35 20 31 20 31 32 33 35 20 32 20 31 32 33  235 1 1235 2 123
11a0: 36 20 33 20 31 32 33 37 20 34 20 31 32 33 38 20  6 3 1237 4 1238 
11b0: 35 7d 0a 64 6f 5f 74 65 73 74 20 61 75 74 6f 69  5}.do_test autoi
11c0: 6e 63 2d 32 2e 32 37 20 7b 0a 20 20 65 78 65 63  nc-2.27 {.  exec
11d0: 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  sql {.    SELECT
11e0: 20 2a 20 46 52 4f 4d 20 73 71 6c 69 74 65 5f 73   * FROM sqlite_s
11f0: 65 71 75 65 6e 63 65 3b 0a 20 20 7d 0a 7d 20 7b  equence;.  }.} {
1200: 74 31 20 31 32 33 38 7d 0a 64 6f 5f 74 65 73 74  t1 1238}.do_test
1210: 20 61 75 74 6f 69 6e 63 2d 32 2e 32 38 20 7b 0a   autoinc-2.28 {.
1220: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
1230: 55 50 44 41 54 45 20 73 71 6c 69 74 65 5f 73 65  UPDATE sqlite_se
1240: 71 75 65 6e 63 65 20 53 45 54 20 73 65 71 3d 27  quence SET seq='
1250: 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36  1234567890123456
1260: 37 38 39 30 27 0a 20 20 20 20 20 20 57 48 45 52  7890'.      WHER
1270: 45 20 6e 61 6d 65 3d 27 74 31 27 3b 0a 20 20 20  E name='t1';.   
1280: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20   INSERT INTO t1 
1290: 56 41 4c 55 45 53 28 4e 55 4c 4c 2c 36 29 3b 0a  VALUES(NULL,6);.
12a0: 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f      SELECT * FRO
12b0: 4d 20 74 31 3b 0a 20 20 7d 0a 7d 20 7b 32 33 35  M t1;.  }.} {235
12c0: 20 31 20 31 32 33 35 20 32 20 31 32 33 36 20 33   1 1235 2 1236 3
12d0: 20 31 32 33 37 20 34 20 31 32 33 38 20 35 20 31   1237 4 1238 5 1
12e0: 32 33 39 20 36 7d 0a 64 6f 5f 74 65 73 74 20 61  239 6}.do_test a
12f0: 75 74 6f 69 6e 63 2d 32 2e 32 39 20 7b 0a 20 20  utoinc-2.29 {.  
1300: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45  execsql {.    SE
1310: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 73 71 6c 69  LECT * FROM sqli
1320: 74 65 5f 73 65 71 75 65 6e 63 65 3b 0a 20 20 7d  te_sequence;.  }
1330: 0a 7d 20 7b 74 31 20 31 32 33 39 7d 0a 0a 23 20  .} {t1 1239}..# 
1340: 54 65 73 74 20 6d 75 6c 74 69 2d 72 6f 77 20 69  Test multi-row i
1350: 6e 73 65 72 74 73 0a 23 0a 64 6f 5f 74 65 73 74  nserts.#.do_test
1360: 20 61 75 74 6f 69 6e 63 2d 32 2e 35 30 20 7b 0a   autoinc-2.50 {.
1370: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
1380: 44 45 4c 45 54 45 20 46 52 4f 4d 20 74 31 20 57  DELETE FROM t1 W
1390: 48 45 52 45 20 79 3e 3d 33 3b 0a 20 20 20 20 49  HERE y>=3;.    I
13a0: 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 53 45  NSERT INTO t1 SE
13b0: 4c 45 43 54 20 4e 55 4c 4c 2c 20 79 2b 32 20 46  LECT NULL, y+2 F
13c0: 52 4f 4d 20 74 31 3b 0a 20 20 20 20 53 45 4c 45  ROM t1;.    SELE
13d0: 43 54 20 2a 20 46 52 4f 4d 20 74 31 3b 0a 20 20  CT * FROM t1;.  
13e0: 7d 0a 7d 20 7b 32 33 35 20 31 20 31 32 33 35 20  }.} {235 1 1235 
13f0: 32 20 31 32 34 30 20 33 20 31 32 34 31 20 34 7d  2 1240 3 1241 4}
1400: 0a 64 6f 5f 74 65 73 74 20 61 75 74 6f 69 6e 63  .do_test autoinc
1410: 2d 32 2e 35 31 20 7b 0a 20 20 65 78 65 63 73 71  -2.51 {.  execsq
1420: 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a  l {.    SELECT *
1430: 20 46 52 4f 4d 20 73 71 6c 69 74 65 5f 73 65 71   FROM sqlite_seq
1440: 75 65 6e 63 65 0a 20 20 7d 0a 7d 20 7b 74 31 20  uence.  }.} {t1 
1450: 31 32 34 31 7d 0a 0a 69 66 63 61 70 61 62 6c 65  1241}..ifcapable
1460: 20 74 65 6d 70 64 62 20 7b 0a 20 20 64 6f 5f 74   tempdb {.  do_t
1470: 65 73 74 20 61 75 74 6f 69 6e 63 2d 32 2e 35 32  est autoinc-2.52
1480: 20 7b 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b   {.    execsql {
1490: 0a 20 20 20 20 20 20 43 52 45 41 54 45 20 54 45  .      CREATE TE
14a0: 4d 50 20 54 41 42 4c 45 20 74 32 20 41 53 20 53  MP TABLE t2 AS S
14b0: 45 4c 45 43 54 20 79 20 46 52 4f 4d 20 74 31 3b  ELECT y FROM t1;
14c0: 0a 20 20 20 20 7d 0a 20 20 20 20 65 78 65 63 73  .    }.    execs
14d0: 71 6c 20 7b 0a 20 20 20 20 20 20 49 4e 53 45 52  ql {.      INSER
14e0: 54 20 49 4e 54 4f 20 74 31 20 53 45 4c 45 43 54  T INTO t1 SELECT
14f0: 20 4e 55 4c 4c 2c 20 79 2b 34 20 46 52 4f 4d 20   NULL, y+4 FROM 
1500: 74 32 3b 0a 20 20 20 20 20 20 53 45 4c 45 43 54  t2;.      SELECT
1510: 20 2a 20 46 52 4f 4d 20 74 31 3b 0a 20 20 20 20   * FROM t1;.    
1520: 7d 0a 20 20 7d 20 7b 32 33 35 20 31 20 31 32 33  }.  } {235 1 123
1530: 35 20 32 20 31 32 34 30 20 33 20 31 32 34 31 20  5 2 1240 3 1241 
1540: 34 20 31 32 34 32 20 35 20 31 32 34 33 20 36 20  4 1242 5 1243 6 
1550: 31 32 34 34 20 37 20 31 32 34 35 20 38 7d 0a 20  1244 7 1245 8}. 
1560: 20 64 6f 5f 74 65 73 74 20 61 75 74 6f 69 6e 63   do_test autoinc
1570: 2d 32 2e 35 33 20 7b 0a 20 20 20 20 65 78 65 63  -2.53 {.    exec
1580: 73 71 6c 20 7b 0a 20 20 20 20 20 20 53 45 4c 45  sql {.      SELE
1590: 43 54 20 2a 20 46 52 4f 4d 20 73 71 6c 69 74 65  CT * FROM sqlite
15a0: 5f 73 65 71 75 65 6e 63 65 0a 20 20 20 20 7d 0a  _sequence.    }.
15b0: 20 20 7d 20 7b 74 31 20 31 32 34 35 7d 0a 20 20    } {t1 1245}.  
15c0: 64 6f 5f 74 65 73 74 20 61 75 74 6f 69 6e 63 2d  do_test autoinc-
15d0: 32 2e 35 34 20 7b 0a 20 20 20 20 65 78 65 63 73  2.54 {.    execs
15e0: 71 6c 20 7b 0a 20 20 20 20 20 20 44 45 4c 45 54  ql {.      DELET
15f0: 45 20 46 52 4f 4d 20 74 31 3b 0a 20 20 20 20 20  E FROM t1;.     
1600: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20   INSERT INTO t1 
1610: 53 45 4c 45 43 54 20 4e 55 4c 4c 2c 20 79 20 46  SELECT NULL, y F
1620: 52 4f 4d 20 74 32 3b 0a 20 20 20 20 20 20 53 45  ROM t2;.      SE
1630: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 3b 0a  LECT * FROM t1;.
1640: 20 20 20 20 7d 0a 20 20 7d 20 7b 31 32 34 36 20      }.  } {1246 
1650: 31 20 31 32 34 37 20 32 20 31 32 34 38 20 33 20  1 1247 2 1248 3 
1660: 31 32 34 39 20 34 7d 0a 20 20 64 6f 5f 74 65 73  1249 4}.  do_tes
1670: 74 20 61 75 74 6f 69 6e 63 2d 32 2e 35 35 20 7b  t autoinc-2.55 {
1680: 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b 0a 20  .    execsql {. 
1690: 20 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52       SELECT * FR
16a0: 4f 4d 20 73 71 6c 69 74 65 5f 73 65 71 75 65 6e  OM sqlite_sequen
16b0: 63 65 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 74 31  ce.    }.  } {t1
16c0: 20 31 32 34 39 7d 0a 7d 0a 0a 23 20 43 72 65 61   1249}.}..# Crea
16d0: 74 65 20 6d 75 6c 74 69 70 6c 65 20 41 55 54 4f  te multiple AUTO
16e0: 49 4e 43 52 45 4d 45 4e 54 20 74 61 62 6c 65 73  INCREMENT tables
16f0: 2e 20 20 4d 61 6b 65 20 73 75 72 65 20 61 6c 6c  .  Make sure all
1700: 20 73 65 71 75 65 6e 63 65 73 20 61 72 65 0a 23   sequences are.#
1710: 20 74 72 61 63 6b 65 64 20 73 65 70 61 72 61 74   tracked separat
1720: 65 6c 79 20 61 6e 64 20 64 6f 20 6e 6f 74 20 69  ely and do not i
1730: 6e 74 65 72 66 65 72 65 20 77 69 74 68 20 6f 6e  nterfere with on
1740: 65 20 61 6e 6f 74 68 65 72 2e 0a 23 0a 64 6f 5f  e another..#.do_
1750: 74 65 73 74 20 61 75 74 6f 69 6e 63 2d 32 2e 37  test autoinc-2.7
1760: 30 20 7b 0a 20 20 63 61 74 63 68 73 71 6c 20 7b  0 {.  catchsql {
1770: 0a 20 20 20 20 44 52 4f 50 20 54 41 42 4c 45 20  .    DROP TABLE 
1780: 74 32 3b 0a 20 20 7d 0a 20 20 65 78 65 63 73 71  t2;.  }.  execsq
1790: 6c 20 7b 0a 20 20 20 20 43 52 45 41 54 45 20 54  l {.    CREATE T
17a0: 41 42 4c 45 20 74 32 28 64 2c 20 65 20 49 4e 54  ABLE t2(d, e INT
17b0: 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59  EGER PRIMARY KEY
17c0: 20 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 2c 20   AUTOINCREMENT, 
17d0: 66 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49  f);.    INSERT I
17e0: 4e 54 4f 20 74 32 28 64 29 20 56 41 4c 55 45 53  NTO t2(d) VALUES
17f0: 28 31 29 3b 0a 20 20 20 20 53 45 4c 45 43 54 20  (1);.    SELECT 
1800: 2a 20 46 52 4f 4d 20 73 71 6c 69 74 65 5f 73 65  * FROM sqlite_se
1810: 71 75 65 6e 63 65 3b 0a 20 20 7d 0a 7d 20 5b 69  quence;.  }.} [i
1820: 66 63 61 70 61 62 6c 65 20 74 65 6d 70 64 62 20  fcapable tempdb 
1830: 7b 6c 69 73 74 20 74 31 20 31 32 34 39 20 74 32  {list t1 1249 t2
1840: 20 31 7d 20 65 6c 73 65 20 7b 6c 69 73 74 20 74   1} else {list t
1850: 31 20 31 32 34 31 20 74 32 20 31 7d 5d 0a 64 6f  1 1241 t2 1}].do
1860: 5f 74 65 73 74 20 61 75 74 6f 69 6e 63 2d 32 2e  _test autoinc-2.
1870: 37 31 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  71 {.  execsql {
1880: 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f  .    INSERT INTO
1890: 20 74 32 28 64 29 20 56 41 4c 55 45 53 28 32 29   t2(d) VALUES(2)
18a0: 3b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46  ;.    SELECT * F
18b0: 52 4f 4d 20 73 71 6c 69 74 65 5f 73 65 71 75 65  ROM sqlite_seque
18c0: 6e 63 65 3b 0a 20 20 7d 0a 7d 20 5b 69 66 63 61  nce;.  }.} [ifca
18d0: 70 61 62 6c 65 20 74 65 6d 70 64 62 20 7b 6c 69  pable tempdb {li
18e0: 73 74 20 74 31 20 31 32 34 39 20 74 32 20 32 7d  st t1 1249 t2 2}
18f0: 20 65 6c 73 65 20 7b 6c 69 73 74 20 74 31 20 31   else {list t1 1
1900: 32 34 31 20 74 32 20 32 7d 5d 0a 64 6f 5f 74 65  241 t2 2}].do_te
1910: 73 74 20 61 75 74 6f 69 6e 63 2d 32 2e 37 32 20  st autoinc-2.72 
1920: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
1930: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31    INSERT INTO t1
1940: 28 78 29 20 56 41 4c 55 45 53 28 31 30 30 30 30  (x) VALUES(10000
1950: 29 3b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a 20  );.    SELECT * 
1960: 46 52 4f 4d 20 73 71 6c 69 74 65 5f 73 65 71 75  FROM sqlite_sequ
1970: 65 6e 63 65 3b 0a 20 20 7d 0a 7d 20 7b 74 31 20  ence;.  }.} {t1 
1980: 31 30 30 30 30 20 74 32 20 32 7d 0a 64 6f 5f 74  10000 t2 2}.do_t
1990: 65 73 74 20 61 75 74 6f 69 6e 63 2d 32 2e 37 33  est autoinc-2.73
19a0: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
19b0: 20 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20     CREATE TABLE 
19c0: 74 33 28 67 20 49 4e 54 45 47 45 52 20 50 52 49  t3(g INTEGER PRI
19d0: 4d 41 52 59 20 4b 45 59 20 41 55 54 4f 49 4e 43  MARY KEY AUTOINC
19e0: 52 45 4d 45 4e 54 2c 20 68 29 3b 0a 20 20 20 20  REMENT, h);.    
19f0: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 33 28 68  INSERT INTO t3(h
1a00: 29 20 56 41 4c 55 45 53 28 31 29 3b 0a 20 20 20  ) VALUES(1);.   
1a10: 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 73   SELECT * FROM s
1a20: 71 6c 69 74 65 5f 73 65 71 75 65 6e 63 65 3b 0a  qlite_sequence;.
1a30: 20 20 7d 0a 7d 20 7b 74 31 20 31 30 30 30 30 20    }.} {t1 10000 
1a40: 74 32 20 32 20 74 33 20 31 7d 0a 64 6f 5f 74 65  t2 2 t3 1}.do_te
1a50: 73 74 20 61 75 74 6f 69 6e 63 2d 32 2e 37 34 20  st autoinc-2.74 
1a60: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
1a70: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 32    INSERT INTO t2
1a80: 28 64 2c 65 29 20 56 41 4c 55 45 53 28 33 2c 31  (d,e) VALUES(3,1
1a90: 30 30 29 3b 0a 20 20 20 20 53 45 4c 45 43 54 20  00);.    SELECT 
1aa0: 2a 20 46 52 4f 4d 20 73 71 6c 69 74 65 5f 73 65  * FROM sqlite_se
1ab0: 71 75 65 6e 63 65 3b 0a 20 20 7d 0a 7d 20 7b 74  quence;.  }.} {t
1ac0: 31 20 31 30 30 30 30 20 74 32 20 31 30 30 20 74  1 10000 t2 100 t
1ad0: 33 20 31 7d 0a 0a 0a 23 20 57 68 65 6e 20 61 20  3 1}...# When a 
1ae0: 74 61 62 6c 65 20 77 69 74 68 20 61 6e 20 41 55  table with an AU
1af0: 54 4f 49 4e 43 52 45 4d 45 4e 54 20 69 73 20 64  TOINCREMENT is d
1b00: 65 6c 65 74 65 64 2c 20 74 68 65 20 63 6f 72 72  eleted, the corr
1b10: 65 73 70 6f 6e 64 69 6e 67 20 65 6e 74 72 79 0a  esponding entry.
1b20: 23 20 69 6e 20 74 68 65 20 53 51 4c 49 54 45 5f  # in the SQLITE_
1b30: 53 45 51 55 45 4e 43 45 20 74 61 62 6c 65 20 73  SEQUENCE table s
1b40: 68 6f 75 6c 64 20 61 6c 73 6f 20 62 65 20 64 65  hould also be de
1b50: 6c 65 74 65 64 2e 20 20 42 75 74 20 74 68 65 20  leted.  But the 
1b60: 53 51 4c 49 54 45 5f 53 45 51 55 45 4e 43 45 0a  SQLITE_SEQUENCE.
1b70: 23 20 74 61 62 6c 65 20 69 74 73 65 6c 66 20 73  # table itself s
1b80: 68 6f 75 6c 64 20 72 65 6d 61 69 6e 20 62 65 68  hould remain beh
1b90: 69 6e 64 2e 0a 23 0a 64 6f 5f 74 65 73 74 20 61  ind..#.do_test a
1ba0: 75 74 6f 69 6e 63 2d 33 2e 31 20 7b 0a 20 20 65  utoinc-3.1 {.  e
1bb0: 78 65 63 73 71 6c 20 7b 53 45 4c 45 43 54 20 6e  xecsql {SELECT n
1bc0: 61 6d 65 20 46 52 4f 4d 20 73 71 6c 69 74 65 5f  ame FROM sqlite_
1bd0: 73 65 71 75 65 6e 63 65 7d 0a 7d 20 7b 74 31 20  sequence}.} {t1 
1be0: 74 32 20 74 33 7d 0a 64 6f 5f 74 65 73 74 20 61  t2 t3}.do_test a
1bf0: 75 74 6f 69 6e 63 2d 33 2e 32 20 7b 0a 20 20 65  utoinc-3.2 {.  e
1c00: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 44 52 4f  xecsql {.    DRO
1c10: 50 20 54 41 42 4c 45 20 74 31 3b 0a 20 20 20 20  P TABLE t1;.    
1c20: 53 45 4c 45 43 54 20 6e 61 6d 65 20 46 52 4f 4d  SELECT name FROM
1c30: 20 73 71 6c 69 74 65 5f 73 65 71 75 65 6e 63 65   sqlite_sequence
1c40: 3b 0a 20 20 7d 0a 7d 20 7b 74 32 20 74 33 7d 0a  ;.  }.} {t2 t3}.
1c50: 64 6f 5f 74 65 73 74 20 61 75 74 6f 69 6e 63 2d  do_test autoinc-
1c60: 33 2e 33 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  3.3 {.  execsql 
1c70: 7b 0a 20 20 20 20 44 52 4f 50 20 54 41 42 4c 45  {.    DROP TABLE
1c80: 20 74 33 3b 0a 20 20 20 20 53 45 4c 45 43 54 20   t3;.    SELECT 
1c90: 6e 61 6d 65 20 46 52 4f 4d 20 73 71 6c 69 74 65  name FROM sqlite
1ca0: 5f 73 65 71 75 65 6e 63 65 3b 0a 20 20 7d 0a 7d  _sequence;.  }.}
1cb0: 20 7b 74 32 7d 0a 64 6f 5f 74 65 73 74 20 61 75   {t2}.do_test au
1cc0: 74 6f 69 6e 63 2d 33 2e 34 20 7b 0a 20 20 65 78  toinc-3.4 {.  ex
1cd0: 65 63 73 71 6c 20 7b 0a 20 20 20 20 44 52 4f 50  ecsql {.    DROP
1ce0: 20 54 41 42 4c 45 20 74 32 3b 0a 20 20 20 20 53   TABLE t2;.    S
1cf0: 45 4c 45 43 54 20 6e 61 6d 65 20 46 52 4f 4d 20  ELECT name FROM 
1d00: 73 71 6c 69 74 65 5f 73 65 71 75 65 6e 63 65 3b  sqlite_sequence;
1d10: 0a 20 20 7d 0a 7d 20 7b 7d 0a 0a 23 20 41 55 54  .  }.} {}..# AUT
1d20: 4f 49 4e 43 52 45 4d 45 4e 54 20 6f 6e 20 54 45  OINCREMENT on TE
1d30: 4d 50 20 74 61 62 6c 65 73 2e 0a 23 0a 69 66 63  MP tables..#.ifc
1d40: 61 70 61 62 6c 65 20 74 65 6d 70 64 62 20 7b 0a  apable tempdb {.
1d50: 20 20 64 6f 5f 74 65 73 74 20 61 75 74 6f 69 6e    do_test autoin
1d60: 63 2d 34 2e 31 20 7b 0a 20 20 20 20 65 78 65 63  c-4.1 {.    exec
1d70: 73 71 6c 20 7b 0a 20 20 20 20 20 20 53 45 4c 45  sql {.      SELE
1d80: 43 54 20 31 2c 20 6e 61 6d 65 20 46 52 4f 4d 20  CT 1, name FROM 
1d90: 73 71 6c 69 74 65 5f 6d 61 73 74 65 72 20 57 48  sqlite_master WH
1da0: 45 52 45 20 74 79 70 65 3d 27 74 61 62 6c 65 27  ERE type='table'
1db0: 3b 0a 20 20 20 20 20 20 53 45 4c 45 43 54 20 32  ;.      SELECT 2
1dc0: 2c 20 6e 61 6d 65 20 46 52 4f 4d 20 73 71 6c 69  , name FROM sqli
1dd0: 74 65 5f 74 65 6d 70 5f 6d 61 73 74 65 72 20 57  te_temp_master W
1de0: 48 45 52 45 20 74 79 70 65 3d 27 74 61 62 6c 65  HERE type='table
1df0: 27 3b 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 31 20  ';.    }.  } {1 
1e00: 73 71 6c 69 74 65 5f 73 65 71 75 65 6e 63 65 7d  sqlite_sequence}
1e10: 0a 20 20 64 6f 5f 74 65 73 74 20 61 75 74 6f 69  .  do_test autoi
1e20: 6e 63 2d 34 2e 32 20 7b 0a 20 20 20 20 65 78 65  nc-4.2 {.    exe
1e30: 63 73 71 6c 20 7b 0a 20 20 20 20 20 20 43 52 45  csql {.      CRE
1e40: 41 54 45 20 54 41 42 4c 45 20 74 31 28 78 20 49  ATE TABLE t1(x I
1e50: 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b  NTEGER PRIMARY K
1e60: 45 59 20 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54  EY AUTOINCREMENT
1e70: 2c 20 79 29 3b 0a 20 20 20 20 20 20 43 52 45 41  , y);.      CREA
1e80: 54 45 20 54 45 4d 50 20 54 41 42 4c 45 20 74 33  TE TEMP TABLE t3
1e90: 28 61 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41  (a INTEGER PRIMA
1ea0: 52 59 20 4b 45 59 20 41 55 54 4f 49 4e 43 52 45  RY KEY AUTOINCRE
1eb0: 4d 45 4e 54 2c 20 62 29 3b 0a 20 20 20 20 20 20  MENT, b);.      
1ec0: 53 45 4c 45 43 54 20 31 2c 20 6e 61 6d 65 20 46  SELECT 1, name F
1ed0: 52 4f 4d 20 73 71 6c 69 74 65 5f 6d 61 73 74 65  ROM sqlite_maste
1ee0: 72 20 57 48 45 52 45 20 74 79 70 65 3d 27 74 61  r WHERE type='ta
1ef0: 62 6c 65 27 3b 0a 20 20 20 20 20 20 53 45 4c 45  ble';.      SELE
1f00: 43 54 20 32 2c 20 6e 61 6d 65 20 46 52 4f 4d 20  CT 2, name FROM 
1f10: 73 71 6c 69 74 65 5f 74 65 6d 70 5f 6d 61 73 74  sqlite_temp_mast
1f20: 65 72 20 57 48 45 52 45 20 74 79 70 65 3d 27 74  er WHERE type='t
1f30: 61 62 6c 65 27 3b 0a 20 20 20 20 7d 0a 20 20 7d  able';.    }.  }
1f40: 20 7b 31 20 73 71 6c 69 74 65 5f 73 65 71 75 65   {1 sqlite_seque
1f50: 6e 63 65 20 31 20 74 31 20 32 20 74 33 20 32 20  nce 1 t1 2 t3 2 
1f60: 73 71 6c 69 74 65 5f 73 65 71 75 65 6e 63 65 7d  sqlite_sequence}
1f70: 0a 20 20 64 6f 5f 74 65 73 74 20 61 75 74 6f 69  .  do_test autoi
1f80: 6e 63 2d 34 2e 33 20 7b 0a 20 20 20 20 65 78 65  nc-4.3 {.    exe
1f90: 63 73 71 6c 20 7b 0a 20 20 20 20 20 20 53 45 4c  csql {.      SEL
1fa0: 45 43 54 20 31 2c 20 2a 20 46 52 4f 4d 20 6d 61  ECT 1, * FROM ma
1fb0: 69 6e 2e 73 71 6c 69 74 65 5f 73 65 71 75 65 6e  in.sqlite_sequen
1fc0: 63 65 3b 0a 20 20 20 20 20 20 53 45 4c 45 43 54  ce;.      SELECT
1fd0: 20 32 2c 20 2a 20 46 52 4f 4d 20 74 65 6d 70 2e   2, * FROM temp.
1fe0: 73 71 6c 69 74 65 5f 73 65 71 75 65 6e 63 65 3b  sqlite_sequence;
1ff0: 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 7d 0a 20 20  .    }.  } {}.  
2000: 64 6f 5f 74 65 73 74 20 61 75 74 6f 69 6e 63 2d  do_test autoinc-
2010: 34 2e 34 20 7b 0a 20 20 20 20 65 78 65 63 73 71  4.4 {.    execsq
2020: 6c 20 7b 0a 20 20 20 20 20 20 49 4e 53 45 52 54  l {.      INSERT
2030: 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28   INTO t1 VALUES(
2040: 31 30 2c 31 29 3b 0a 20 20 20 20 20 20 49 4e 53  10,1);.      INS
2050: 45 52 54 20 49 4e 54 4f 20 74 33 20 56 41 4c 55  ERT INTO t3 VALU
2060: 45 53 28 32 30 2c 32 29 3b 0a 20 20 20 20 20 20  ES(20,2);.      
2070: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56  INSERT INTO t1 V
2080: 41 4c 55 45 53 28 4e 55 4c 4c 2c 33 29 3b 0a 20  ALUES(NULL,3);. 
2090: 20 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f       INSERT INTO
20a0: 20 74 33 20 56 41 4c 55 45 53 28 4e 55 4c 4c 2c   t3 VALUES(NULL,
20b0: 34 29 3b 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 7d  4);.    }.  } {}
20c0: 0a 20 20 0a 20 20 69 66 63 61 70 61 62 6c 65 20  .  .  ifcapable 
20d0: 63 6f 6d 70 6f 75 6e 64 20 7b 0a 20 20 64 6f 5f  compound {.  do_
20e0: 74 65 73 74 20 61 75 74 6f 69 6e 63 2d 34 2e 34  test autoinc-4.4
20f0: 2e 31 20 7b 0a 20 20 20 20 65 78 65 63 73 71 6c  .1 {.    execsql
2100: 20 7b 0a 20 20 20 20 20 20 53 45 4c 45 43 54 20   {.      SELECT 
2110: 2a 20 46 52 4f 4d 20 74 31 20 55 4e 49 4f 4e 20  * FROM t1 UNION 
2120: 41 4c 4c 20 53 45 4c 45 43 54 20 2a 20 46 52 4f  ALL SELECT * FRO
2130: 4d 20 74 33 3b 0a 20 20 20 20 7d 0a 20 20 7d 20  M t3;.    }.  } 
2140: 7b 31 30 20 31 20 31 31 20 33 20 32 30 20 32 20  {10 1 11 3 20 2 
2150: 32 31 20 34 7d 0a 20 20 7d 20 3b 23 20 69 66 63  21 4}.  } ;# ifc
2160: 61 70 61 62 6c 65 20 63 6f 6d 70 6f 75 6e 64 0a  apable compound.
2170: 20 20 0a 20 20 64 6f 5f 74 65 73 74 20 61 75 74    .  do_test aut
2180: 6f 69 6e 63 2d 34 2e 35 20 7b 0a 20 20 20 20 65  oinc-4.5 {.    e
2190: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 20 20 53  xecsql {.      S
21a0: 45 4c 45 43 54 20 31 2c 20 2a 20 46 52 4f 4d 20  ELECT 1, * FROM 
21b0: 6d 61 69 6e 2e 73 71 6c 69 74 65 5f 73 65 71 75  main.sqlite_sequ
21c0: 65 6e 63 65 3b 0a 20 20 20 20 20 20 53 45 4c 45  ence;.      SELE
21d0: 43 54 20 32 2c 20 2a 20 46 52 4f 4d 20 74 65 6d  CT 2, * FROM tem
21e0: 70 2e 73 71 6c 69 74 65 5f 73 65 71 75 65 6e 63  p.sqlite_sequenc
21f0: 65 3b 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 31 20  e;.    }.  } {1 
2200: 74 31 20 31 31 20 32 20 74 33 20 32 31 7d 0a 20  t1 11 2 t3 21}. 
2210: 20 64 6f 5f 74 65 73 74 20 61 75 74 6f 69 6e 63   do_test autoinc
2220: 2d 34 2e 36 20 7b 0a 20 20 20 20 65 78 65 63 73  -4.6 {.    execs
2230: 71 6c 20 7b 0a 20 20 20 20 20 20 49 4e 53 45 52  ql {.      INSER
2240: 54 20 49 4e 54 4f 20 74 31 20 53 45 4c 45 43 54  T INTO t1 SELECT
2250: 20 2a 20 46 52 4f 4d 20 74 33 3b 0a 20 20 20 20   * FROM t3;.    
2260: 20 20 53 45 4c 45 43 54 20 31 2c 20 2a 20 46 52    SELECT 1, * FR
2270: 4f 4d 20 6d 61 69 6e 2e 73 71 6c 69 74 65 5f 73  OM main.sqlite_s
2280: 65 71 75 65 6e 63 65 3b 0a 20 20 20 20 20 20 53  equence;.      S
2290: 45 4c 45 43 54 20 32 2c 20 2a 20 46 52 4f 4d 20  ELECT 2, * FROM 
22a0: 74 65 6d 70 2e 73 71 6c 69 74 65 5f 73 65 71 75  temp.sqlite_sequ
22b0: 65 6e 63 65 3b 0a 20 20 20 20 7d 0a 20 20 7d 20  ence;.    }.  } 
22c0: 7b 31 20 74 31 20 32 31 20 32 20 74 33 20 32 31  {1 t1 21 2 t3 21
22d0: 7d 0a 20 20 64 6f 5f 74 65 73 74 20 61 75 74 6f  }.  do_test auto
22e0: 69 6e 63 2d 34 2e 37 20 7b 0a 20 20 20 20 65 78  inc-4.7 {.    ex
22f0: 65 63 73 71 6c 20 7b 0a 20 20 20 20 20 20 49 4e  ecsql {.      IN
2300: 53 45 52 54 20 49 4e 54 4f 20 74 33 20 53 45 4c  SERT INTO t3 SEL
2310: 45 43 54 20 78 2b 31 30 30 2c 20 79 20 20 46 52  ECT x+100, y  FR
2320: 4f 4d 20 74 31 3b 0a 20 20 20 20 20 20 53 45 4c  OM t1;.      SEL
2330: 45 43 54 20 31 2c 20 2a 20 46 52 4f 4d 20 6d 61  ECT 1, * FROM ma
2340: 69 6e 2e 73 71 6c 69 74 65 5f 73 65 71 75 65 6e  in.sqlite_sequen
2350: 63 65 3b 0a 20 20 20 20 20 20 53 45 4c 45 43 54  ce;.      SELECT
2360: 20 32 2c 20 2a 20 46 52 4f 4d 20 74 65 6d 70 2e   2, * FROM temp.
2370: 73 71 6c 69 74 65 5f 73 65 71 75 65 6e 63 65 3b  sqlite_sequence;
2380: 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 31 20 74 31  .    }.  } {1 t1
2390: 20 32 31 20 32 20 74 33 20 31 32 31 7d 0a 20 20   21 2 t3 121}.  
23a0: 64 6f 5f 74 65 73 74 20 61 75 74 6f 69 6e 63 2d  do_test autoinc-
23b0: 34 2e 38 20 7b 0a 20 20 20 20 65 78 65 63 73 71  4.8 {.    execsq
23c0: 6c 20 7b 0a 20 20 20 20 20 20 44 52 4f 50 20 54  l {.      DROP T
23d0: 41 42 4c 45 20 74 33 3b 0a 20 20 20 20 20 20 53  ABLE t3;.      S
23e0: 45 4c 45 43 54 20 31 2c 20 2a 20 46 52 4f 4d 20  ELECT 1, * FROM 
23f0: 6d 61 69 6e 2e 73 71 6c 69 74 65 5f 73 65 71 75  main.sqlite_sequ
2400: 65 6e 63 65 3b 0a 20 20 20 20 20 20 53 45 4c 45  ence;.      SELE
2410: 43 54 20 32 2c 20 2a 20 46 52 4f 4d 20 74 65 6d  CT 2, * FROM tem
2420: 70 2e 73 71 6c 69 74 65 5f 73 65 71 75 65 6e 63  p.sqlite_sequenc
2430: 65 3b 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 31 20  e;.    }.  } {1 
2440: 74 31 20 32 31 7d 0a 20 20 64 6f 5f 74 65 73 74  t1 21}.  do_test
2450: 20 61 75 74 6f 69 6e 63 2d 34 2e 39 20 7b 0a 20   autoinc-4.9 {. 
2460: 20 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20     execsql {.   
2470: 20 20 20 43 52 45 41 54 45 20 54 45 4d 50 20 54     CREATE TEMP T
2480: 41 42 4c 45 20 74 32 28 70 20 49 4e 54 45 47 45  ABLE t2(p INTEGE
2490: 52 20 50 52 49 4d 41 52 59 20 4b 45 59 20 41 55  R PRIMARY KEY AU
24a0: 54 4f 49 4e 43 52 45 4d 45 4e 54 2c 20 71 29 3b  TOINCREMENT, q);
24b0: 0a 20 20 20 20 20 20 49 4e 53 45 52 54 20 49 4e  .      INSERT IN
24c0: 54 4f 20 74 32 20 53 45 4c 45 43 54 20 2a 20 46  TO t2 SELECT * F
24d0: 52 4f 4d 20 74 31 3b 0a 20 20 20 20 20 20 44 52  ROM t1;.      DR
24e0: 4f 50 20 54 41 42 4c 45 20 74 31 3b 0a 20 20 20  OP TABLE t1;.   
24f0: 20 20 20 53 45 4c 45 43 54 20 31 2c 20 2a 20 46     SELECT 1, * F
2500: 52 4f 4d 20 6d 61 69 6e 2e 73 71 6c 69 74 65 5f  ROM main.sqlite_
2510: 73 65 71 75 65 6e 63 65 3b 0a 20 20 20 20 20 20  sequence;.      
2520: 53 45 4c 45 43 54 20 32 2c 20 2a 20 46 52 4f 4d  SELECT 2, * FROM
2530: 20 74 65 6d 70 2e 73 71 6c 69 74 65 5f 73 65 71   temp.sqlite_seq
2540: 75 65 6e 63 65 3b 0a 20 20 20 20 7d 0a 20 20 7d  uence;.    }.  }
2550: 20 7b 32 20 74 32 20 32 31 7d 0a 20 20 64 6f 5f   {2 t2 21}.  do_
2560: 74 65 73 74 20 61 75 74 6f 69 6e 63 2d 34 2e 31  test autoinc-4.1
2570: 30 20 7b 0a 20 20 20 20 65 78 65 63 73 71 6c 20  0 {.    execsql 
2580: 7b 0a 20 20 20 20 20 20 44 52 4f 50 20 54 41 42  {.      DROP TAB
2590: 4c 45 20 74 32 3b 0a 20 20 20 20 20 20 53 45 4c  LE t2;.      SEL
25a0: 45 43 54 20 31 2c 20 2a 20 46 52 4f 4d 20 6d 61  ECT 1, * FROM ma
25b0: 69 6e 2e 73 71 6c 69 74 65 5f 73 65 71 75 65 6e  in.sqlite_sequen
25c0: 63 65 3b 0a 20 20 20 20 20 20 53 45 4c 45 43 54  ce;.      SELECT
25d0: 20 32 2c 20 2a 20 46 52 4f 4d 20 74 65 6d 70 2e   2, * FROM temp.
25e0: 73 71 6c 69 74 65 5f 73 65 71 75 65 6e 63 65 3b  sqlite_sequence;
25f0: 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 7d 0a 7d 0a  .    }.  } {}.}.
2600: 0a 23 20 4d 61 6b 65 20 73 75 72 65 20 41 55 54  .# Make sure AUT
2610: 4f 49 4e 43 52 45 4d 45 4e 54 20 77 6f 72 6b 73  OINCREMENT works
2620: 20 6f 6e 20 41 54 54 41 43 48 2d 65 64 20 74 61   on ATTACH-ed ta
2630: 62 6c 65 73 2e 0a 23 0a 69 66 63 61 70 61 62 6c  bles..#.ifcapabl
2640: 65 20 74 65 6d 70 64 62 26 26 61 74 74 61 63 68  e tempdb&&attach
2650: 20 7b 0a 20 20 64 6f 5f 74 65 73 74 20 61 75 74   {.  do_test aut
2660: 6f 69 6e 63 2d 35 2e 31 20 7b 0a 20 20 20 20 66  oinc-5.1 {.    f
2670: 69 6c 65 20 64 65 6c 65 74 65 20 2d 66 6f 72 63  ile delete -forc
2680: 65 20 74 65 73 74 32 2e 64 62 0a 20 20 20 20 66  e test2.db.    f
2690: 69 6c 65 20 64 65 6c 65 74 65 20 2d 66 6f 72 63  ile delete -forc
26a0: 65 20 74 65 73 74 32 2e 64 62 2d 6a 6f 75 72 6e  e test2.db-journ
26b0: 61 6c 0a 20 20 20 20 73 71 6c 69 74 65 33 20 64  al.    sqlite3 d
26c0: 62 32 20 74 65 73 74 32 2e 64 62 0a 20 20 20 20  b2 test2.db.    
26d0: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 20 20  execsql {.      
26e0: 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 34 28  CREATE TABLE t4(
26f0: 6d 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52  m INTEGER PRIMAR
2700: 59 20 4b 45 59 20 41 55 54 4f 49 4e 43 52 45 4d  Y KEY AUTOINCREM
2710: 45 4e 54 2c 20 6e 29 3b 0a 20 20 20 20 20 20 43  ENT, n);.      C
2720: 52 45 41 54 45 20 54 41 42 4c 45 20 74 35 28 6f  REATE TABLE t5(o
2730: 2c 20 70 20 49 4e 54 45 47 45 52 20 50 52 49 4d  , p INTEGER PRIM
2740: 41 52 59 20 4b 45 59 20 41 55 54 4f 49 4e 43 52  ARY KEY AUTOINCR
2750: 45 4d 45 4e 54 29 3b 0a 20 20 20 20 7d 20 64 62  EMENT);.    } db
2760: 32 3b 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b  2;.    execsql {
2770: 0a 20 20 20 20 20 20 41 54 54 41 43 48 20 27 74  .      ATTACH 't
2780: 65 73 74 32 2e 64 62 27 20 61 73 20 61 75 78 3b  est2.db' as aux;
2790: 0a 20 20 20 20 20 20 53 45 4c 45 43 54 20 31 2c  .      SELECT 1,
27a0: 20 2a 20 46 52 4f 4d 20 6d 61 69 6e 2e 73 71 6c   * FROM main.sql
27b0: 69 74 65 5f 73 65 71 75 65 6e 63 65 3b 0a 20 20  ite_sequence;.  
27c0: 20 20 20 20 53 45 4c 45 43 54 20 32 2c 20 2a 20      SELECT 2, * 
27d0: 46 52 4f 4d 20 74 65 6d 70 2e 73 71 6c 69 74 65  FROM temp.sqlite
27e0: 5f 73 65 71 75 65 6e 63 65 3b 0a 20 20 20 20 20  _sequence;.     
27f0: 20 53 45 4c 45 43 54 20 33 2c 20 2a 20 46 52 4f   SELECT 3, * FRO
2800: 4d 20 61 75 78 2e 73 71 6c 69 74 65 5f 73 65 71  M aux.sqlite_seq
2810: 75 65 6e 63 65 3b 0a 20 20 20 20 7d 0a 20 20 7d  uence;.    }.  }
2820: 20 7b 7d 0a 20 20 64 6f 5f 74 65 73 74 20 61 75   {}.  do_test au
2830: 74 6f 69 6e 63 2d 35 2e 32 20 7b 0a 20 20 20 20  toinc-5.2 {.    
2840: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 20 20  execsql {.      
2850: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 34 20 56  INSERT INTO t4 V
2860: 41 4c 55 45 53 28 4e 55 4c 4c 2c 31 29 3b 0a 20  ALUES(NULL,1);. 
2870: 20 20 20 20 20 53 45 4c 45 43 54 20 31 2c 20 2a       SELECT 1, *
2880: 20 46 52 4f 4d 20 6d 61 69 6e 2e 73 71 6c 69 74   FROM main.sqlit
2890: 65 5f 73 65 71 75 65 6e 63 65 3b 0a 20 20 20 20  e_sequence;.    
28a0: 20 20 53 45 4c 45 43 54 20 32 2c 20 2a 20 46 52    SELECT 2, * FR
28b0: 4f 4d 20 74 65 6d 70 2e 73 71 6c 69 74 65 5f 73  OM temp.sqlite_s
28c0: 65 71 75 65 6e 63 65 3b 0a 20 20 20 20 20 20 53  equence;.      S
28d0: 45 4c 45 43 54 20 33 2c 20 2a 20 46 52 4f 4d 20  ELECT 3, * FROM 
28e0: 61 75 78 2e 73 71 6c 69 74 65 5f 73 65 71 75 65  aux.sqlite_seque
28f0: 6e 63 65 3b 0a 20 20 20 20 7d 0a 20 20 7d 20 7b  nce;.    }.  } {
2900: 33 20 74 34 20 31 7d 0a 20 20 64 6f 5f 74 65 73  3 t4 1}.  do_tes
2910: 74 20 61 75 74 6f 69 6e 63 2d 35 2e 33 20 7b 0a  t autoinc-5.3 {.
2920: 20 20 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20      execsql {.  
2930: 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20      INSERT INTO 
2940: 74 35 20 56 41 4c 55 45 53 28 31 30 30 2c 32 30  t5 VALUES(100,20
2950: 30 29 3b 0a 20 20 20 20 20 20 53 45 4c 45 43 54  0);.      SELECT
2960: 20 2a 20 46 52 4f 4d 20 73 71 6c 69 74 65 5f 73   * FROM sqlite_s
2970: 65 71 75 65 6e 63 65 0a 20 20 20 20 7d 20 64 62  equence.    } db
2980: 32 0a 20 20 7d 20 7b 74 34 20 31 20 74 35 20 32  2.  } {t4 1 t5 2
2990: 30 30 7d 0a 20 20 64 6f 5f 74 65 73 74 20 61 75  00}.  do_test au
29a0: 74 6f 69 6e 63 2d 35 2e 34 20 7b 0a 20 20 20 20  toinc-5.4 {.    
29b0: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 20 20  execsql {.      
29c0: 53 45 4c 45 43 54 20 31 2c 20 2a 20 46 52 4f 4d  SELECT 1, * FROM
29d0: 20 6d 61 69 6e 2e 73 71 6c 69 74 65 5f 73 65 71   main.sqlite_seq
29e0: 75 65 6e 63 65 3b 0a 20 20 20 20 20 20 53 45 4c  uence;.      SEL
29f0: 45 43 54 20 32 2c 20 2a 20 46 52 4f 4d 20 74 65  ECT 2, * FROM te
2a00: 6d 70 2e 73 71 6c 69 74 65 5f 73 65 71 75 65 6e  mp.sqlite_sequen
2a10: 63 65 3b 0a 20 20 20 20 20 20 53 45 4c 45 43 54  ce;.      SELECT
2a20: 20 33 2c 20 2a 20 46 52 4f 4d 20 61 75 78 2e 73   3, * FROM aux.s
2a30: 71 6c 69 74 65 5f 73 65 71 75 65 6e 63 65 3b 0a  qlite_sequence;.
2a40: 20 20 20 20 7d 0a 20 20 7d 20 7b 33 20 74 34 20      }.  } {3 t4 
2a50: 31 20 33 20 74 35 20 32 30 30 7d 0a 7d 0a 0a 23  1 3 t5 200}.}..#
2a60: 20 52 65 71 75 69 72 65 6d 65 6e 74 20 52 45 51   Requirement REQ
2a70: 30 30 33 31 30 3a 20 20 4d 61 6b 65 20 73 75 72  00310:  Make sur
2a80: 65 20 61 6e 20 69 6e 73 65 72 74 20 66 61 69 6c  e an insert fail
2a90: 73 20 69 66 20 74 68 65 20 73 65 71 75 65 6e 63  s if the sequenc
2aa0: 65 20 69 73 0a 23 20 61 6c 72 65 61 64 79 20 61  e is.# already a
2ab0: 74 20 69 74 73 20 6d 61 78 69 6d 75 6d 20 76 61  t its maximum va
2ac0: 6c 75 65 2e 0a 23 0a 69 66 63 61 70 61 62 6c 65  lue..#.ifcapable
2ad0: 20 7b 72 6f 77 69 64 33 32 7d 20 7b 0a 20 20 64   {rowid32} {.  d
2ae0: 6f 5f 74 65 73 74 20 61 75 74 6f 69 6e 63 2d 36  o_test autoinc-6
2af0: 2e 31 20 7b 0a 20 20 20 20 65 78 65 63 73 71 6c  .1 {.    execsql
2b00: 20 7b 0a 20 20 20 20 20 20 43 52 45 41 54 45 20   {.      CREATE 
2b10: 54 41 42 4c 45 20 74 36 28 76 20 49 4e 54 45 47  TABLE t6(v INTEG
2b20: 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 20 41  ER PRIMARY KEY A
2b30: 55 54 4f 49 4e 43 52 45 4d 45 4e 54 2c 20 77 29  UTOINCREMENT, w)
2b40: 3b 0a 20 20 20 20 20 20 49 4e 53 45 52 54 20 49  ;.      INSERT I
2b50: 4e 54 4f 20 74 36 20 56 41 4c 55 45 53 28 32 31  NTO t6 VALUES(21
2b60: 34 37 34 38 33 36 34 37 2c 31 29 3b 0a 20 20 20  47483647,1);.   
2b70: 20 20 20 53 45 4c 45 43 54 20 73 65 71 20 46 52     SELECT seq FR
2b80: 4f 4d 20 6d 61 69 6e 2e 73 71 6c 69 74 65 5f 73  OM main.sqlite_s
2b90: 65 71 75 65 6e 63 65 20 57 48 45 52 45 20 6e 61  equence WHERE na
2ba0: 6d 65 3d 27 74 36 27 3b 0a 20 20 20 20 7d 0a 20  me='t6';.    }. 
2bb0: 20 7d 20 32 31 34 37 34 38 33 36 34 37 0a 7d 0a   } 2147483647.}.
2bc0: 69 66 63 61 70 61 62 6c 65 20 7b 21 72 6f 77 69  ifcapable {!rowi
2bd0: 64 33 32 7d 20 7b 0a 20 20 64 6f 5f 74 65 73 74  d32} {.  do_test
2be0: 20 61 75 74 6f 69 6e 63 2d 36 2e 31 20 7b 0a 20   autoinc-6.1 {. 
2bf0: 20 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20     execsql {.   
2c00: 20 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20     CREATE TABLE 
2c10: 74 36 28 76 20 49 4e 54 45 47 45 52 20 50 52 49  t6(v INTEGER PRI
2c20: 4d 41 52 59 20 4b 45 59 20 41 55 54 4f 49 4e 43  MARY KEY AUTOINC
2c30: 52 45 4d 45 4e 54 2c 20 77 29 3b 0a 20 20 20 20  REMENT, w);.    
2c40: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 36    INSERT INTO t6
2c50: 20 56 41 4c 55 45 53 28 39 32 32 33 33 37 32 30   VALUES(92233720
2c60: 33 36 38 35 34 37 37 35 38 30 37 2c 31 29 3b 0a  36854775807,1);.
2c70: 20 20 20 20 20 20 53 45 4c 45 43 54 20 73 65 71        SELECT seq
2c80: 20 46 52 4f 4d 20 6d 61 69 6e 2e 73 71 6c 69 74   FROM main.sqlit
2c90: 65 5f 73 65 71 75 65 6e 63 65 20 57 48 45 52 45  e_sequence WHERE
2ca0: 20 6e 61 6d 65 3d 27 74 36 27 3b 0a 20 20 20 20   name='t6';.    
2cb0: 7d 0a 20 20 7d 20 39 32 32 33 33 37 32 30 33 36  }.  } 9223372036
2cc0: 38 35 34 37 37 35 38 30 37 0a 7d 0a 64 6f 5f 74  854775807.}.do_t
2cd0: 65 73 74 20 61 75 74 6f 69 6e 63 2d 36 2e 32 20  est autoinc-6.2 
2ce0: 7b 0a 20 20 63 61 74 63 68 73 71 6c 20 7b 0a 20  {.  catchsql {. 
2cf0: 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74     INSERT INTO t
2d00: 36 20 56 41 4c 55 45 53 28 4e 55 4c 4c 2c 31 29  6 VALUES(NULL,1)
2d10: 3b 0a 20 20 7d 0a 7d 20 7b 31 20 7b 64 61 74 61  ;.  }.} {1 {data
2d20: 62 61 73 65 20 6f 72 20 64 69 73 6b 20 69 73 20  base or disk is 
2d30: 66 75 6c 6c 7d 7d 0a 0a 23 20 41 6c 6c 6f 77 20  full}}..# Allow 
2d40: 74 68 65 20 41 55 54 4f 49 4e 43 52 45 4d 45 4e  the AUTOINCREMEN
2d50: 54 20 6b 65 79 77 6f 72 64 20 69 6e 73 69 64 65  T keyword inside
2d60: 20 74 68 65 20 70 61 72 65 6e 74 68 65 73 65 73   the parentheses
2d70: 0a 23 20 6f 6e 20 61 20 73 65 70 61 72 61 74 65  .# on a separate
2d80: 20 50 52 49 4d 41 52 59 20 4b 45 59 20 64 65 73   PRIMARY KEY des
2d90: 69 67 6e 61 74 69 6f 6e 2e 0a 23 0a 64 6f 5f 74  ignation..#.do_t
2da0: 65 73 74 20 61 75 74 6f 69 6e 63 2d 37 2e 31 20  est autoinc-7.1 
2db0: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
2dc0: 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 74    CREATE TABLE t
2dd0: 37 28 78 20 49 4e 54 45 47 45 52 2c 20 79 20 52  7(x INTEGER, y R
2de0: 45 41 4c 2c 20 50 52 49 4d 41 52 59 20 4b 45 59  EAL, PRIMARY KEY
2df0: 28 78 20 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54  (x AUTOINCREMENT
2e00: 29 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49  ));.    INSERT I
2e10: 4e 54 4f 20 74 37 28 79 29 20 56 41 4c 55 45 53  NTO t7(y) VALUES
2e20: 28 31 32 33 29 3b 0a 20 20 20 20 49 4e 53 45 52  (123);.    INSER
2e30: 54 20 49 4e 54 4f 20 74 37 28 79 29 20 56 41 4c  T INTO t7(y) VAL
2e40: 55 45 53 28 32 33 34 29 3b 0a 20 20 20 20 44 45  UES(234);.    DE
2e50: 4c 45 54 45 20 46 52 4f 4d 20 74 37 3b 0a 20 20  LETE FROM t7;.  
2e60: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 37    INSERT INTO t7
2e70: 28 79 29 20 56 41 4c 55 45 53 28 33 34 35 29 3b  (y) VALUES(345);
2e80: 0a 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52  .    SELECT * FR
2e90: 4f 4d 20 74 37 3b 0a 20 20 7d 0a 7d 20 7b 33 20  OM t7;.  }.} {3 
2ea0: 33 34 35 2e 30 7d 0a 0a 23 20 54 65 73 74 20 74  345.0}..# Test t
2eb0: 68 61 74 20 69 66 20 74 68 65 20 41 55 54 4f 49  hat if the AUTOI
2ec0: 4e 43 52 45 4d 45 4e 54 20 69 73 20 61 70 70 6c  NCREMENT is appl
2ed0: 69 65 64 20 74 6f 20 61 20 6e 6f 6e 20 69 6e 74  ied to a non int
2ee0: 65 67 65 72 20 70 72 69 6d 61 72 79 20 6b 65 79  eger primary key
2ef0: 0a 23 20 74 68 65 20 65 72 72 6f 72 20 6d 65 73  .# the error mes
2f00: 73 61 67 65 20 69 73 20 73 65 6e 73 69 62 6c 65  sage is sensible
2f10: 2e 0a 64 6f 5f 74 65 73 74 20 61 75 74 6f 69 6e  ..do_test autoin
2f20: 63 2d 37 2e 32 20 7b 0a 20 20 63 61 74 63 68 73  c-7.2 {.  catchs
2f30: 71 6c 20 7b 0a 20 20 20 20 43 52 45 41 54 45 20  ql {.    CREATE 
2f40: 54 41 42 4c 45 20 74 38 28 78 20 54 45 58 54 20  TABLE t8(x TEXT 
2f50: 50 52 49 4d 41 52 59 20 4b 45 59 20 41 55 54 4f  PRIMARY KEY AUTO
2f60: 49 4e 43 52 45 4d 45 4e 54 29 3b 0a 20 20 7d 0a  INCREMENT);.  }.
2f70: 7d 20 7b 31 20 7b 41 55 54 4f 49 4e 43 52 45 4d  } {1 {AUTOINCREM
2f80: 45 4e 54 20 69 73 20 6f 6e 6c 79 20 61 6c 6c 6f  ENT is only allo
2f90: 77 65 64 20 6f 6e 20 61 6e 20 49 4e 54 45 47 45  wed on an INTEGE
2fa0: 52 20 50 52 49 4d 41 52 59 20 4b 45 59 7d 7d 0a  R PRIMARY KEY}}.
2fb0: 0a 0a 23 20 54 69 63 6b 65 74 20 23 31 32 38 33  ..# Ticket #1283
2fc0: 2e 20 20 4d 61 6b 65 20 73 75 72 65 20 74 68 61  .  Make sure tha
2fd0: 74 20 70 72 65 70 61 72 69 6e 67 20 62 75 74 20  t preparing but 
2fe0: 6e 65 76 65 72 20 72 75 6e 6e 69 6e 67 20 61 20  never running a 
2ff0: 73 74 61 74 65 6d 65 6e 74 0a 23 20 74 68 61 74  statement.# that
3000: 20 63 72 65 61 74 65 73 20 74 68 65 20 73 71 6c   creates the sql
3010: 69 74 65 5f 73 65 71 75 65 6e 63 65 20 74 61 62  ite_sequence tab
3020: 6c 65 20 64 6f 65 73 20 6e 6f 74 20 6d 65 73 73  le does not mess
3030: 20 75 70 20 74 68 65 20 64 61 74 61 62 61 73 65   up the database
3040: 2e 0a 23 0a 64 6f 5f 74 65 73 74 20 61 75 74 6f  ..#.do_test auto
3050: 69 6e 63 2d 38 2e 31 20 7b 0a 20 20 63 61 74 63  inc-8.1 {.  catc
3060: 68 20 7b 64 62 32 20 63 6c 6f 73 65 7d 0a 20 20  h {db2 close}.  
3070: 63 61 74 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d  catch {db close}
3080: 0a 20 20 66 69 6c 65 20 64 65 6c 65 74 65 20 2d  .  file delete -
3090: 66 6f 72 63 65 20 74 65 73 74 2e 64 62 0a 20 20  force test.db.  
30a0: 73 71 6c 69 74 65 33 20 64 62 20 74 65 73 74 2e  sqlite3 db test.
30b0: 64 62 0a 20 20 73 65 74 20 44 42 20 5b 73 71 6c  db.  set DB [sql
30c0: 69 74 65 33 5f 63 6f 6e 6e 65 63 74 69 6f 6e 5f  ite3_connection_
30d0: 70 6f 69 6e 74 65 72 20 64 62 5d 0a 20 20 73 65  pointer db].  se
30e0: 74 20 53 54 4d 54 20 5b 73 71 6c 69 74 65 33 5f  t STMT [sqlite3_
30f0: 70 72 65 70 61 72 65 20 24 44 42 20 7b 0a 20 20  prepare $DB {.  
3100: 20 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20     CREATE TABLE 
3110: 74 31 28 0a 20 20 20 20 20 20 20 78 20 49 4e 54  t1(.       x INT
3120: 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59  EGER PRIMARY KEY
3130: 20 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 0a 20   AUTOINCREMENT. 
3140: 20 20 20 20 29 0a 20 20 7d 20 2d 31 20 54 41 49      ).  } -1 TAI
3150: 4c 5d 0a 20 20 73 71 6c 69 74 65 33 5f 66 69 6e  L].  sqlite3_fin
3160: 61 6c 69 7a 65 20 24 53 54 4d 54 0a 20 20 73 65  alize $STMT.  se
3170: 74 20 53 54 4d 54 20 5b 73 71 6c 69 74 65 33 5f  t STMT [sqlite3_
3180: 70 72 65 70 61 72 65 20 24 44 42 20 7b 0a 20 20  prepare $DB {.  
3190: 20 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20     CREATE TABLE 
31a0: 74 31 28 0a 20 20 20 20 20 20 20 78 20 49 4e 54  t1(.       x INT
31b0: 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59  EGER PRIMARY KEY
31c0: 20 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 0a 20   AUTOINCREMENT. 
31d0: 20 20 20 20 29 0a 20 20 7d 20 2d 31 20 54 41 49      ).  } -1 TAI
31e0: 4c 5d 0a 20 20 73 71 6c 69 74 65 33 5f 73 74 65  L].  sqlite3_ste
31f0: 70 20 24 53 54 4d 54 0a 20 20 73 71 6c 69 74 65  p $STMT.  sqlite
3200: 33 5f 66 69 6e 61 6c 69 7a 65 20 24 53 54 4d 54  3_finalize $STMT
3210: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
3220: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20   INSERT INTO t1 
3230: 56 41 4c 55 45 53 28 4e 55 4c 4c 29 3b 0a 20 20  VALUES(NULL);.  
3240: 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20    SELECT * FROM 
3250: 74 31 3b 0a 20 20 7d 0a 7d 20 7b 31 7d 0a 0a 66  t1;.  }.} {1}..f
3260: 69 6e 69 73 68 5f 74 65 73 74 0a                 inish_test.