/ Hex Artifact Content
Login

Artifact d986bf9e29ba8d24955855d0a827e452ec0b15e54075f7ef1a11e5e96ac2b4ef:


0000: 23 20 32 30 31 38 20 41 75 67 75 73 74 20 32 34  # 2018 August 24
0010: 0a 23 0a 23 20 54 68 65 20 61 75 74 68 6f 72 20  .#.# The author 
0020: 64 69 73 63 6c 61 69 6d 73 20 63 6f 70 79 72 69  disclaims copyri
0030: 67 68 74 20 74 6f 20 74 68 69 73 20 73 6f 75 72  ght to this sour
0040: 63 65 20 63 6f 64 65 2e 20 20 49 6e 20 70 6c 61  ce code.  In pla
0050: 63 65 20 6f 66 0a 23 20 61 20 6c 65 67 61 6c 20  ce of.# a legal 
0060: 6e 6f 74 69 63 65 2c 20 68 65 72 65 20 69 73 20  notice, here is 
0070: 61 20 62 6c 65 73 73 69 6e 67 3a 0a 23 0a 23 20  a blessing:.#.# 
0080: 20 20 20 4d 61 79 20 79 6f 75 20 64 6f 20 67 6f     May you do go
0090: 6f 64 20 61 6e 64 20 6e 6f 74 20 65 76 69 6c 2e  od and not evil.
00a0: 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20 66 69  .#    May you fi
00b0: 6e 64 20 66 6f 72 67 69 76 65 6e 65 73 73 20 66  nd forgiveness f
00c0: 6f 72 20 79 6f 75 72 73 65 6c 66 20 61 6e 64 20  or yourself and 
00d0: 66 6f 72 67 69 76 65 20 6f 74 68 65 72 73 2e 0a  forgive others..
00e0: 23 20 20 20 20 4d 61 79 20 79 6f 75 20 73 68 61  #    May you sha
00f0: 72 65 20 66 72 65 65 6c 79 2c 20 6e 65 76 65 72  re freely, never
0100: 20 74 61 6b 69 6e 67 20 6d 6f 72 65 20 74 68 61   taking more tha
0110: 6e 20 79 6f 75 20 67 69 76 65 2e 0a 23 0a 23 2a  n you give..#.#*
0120: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0130: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0140: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0150: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0160: 2a 2a 2a 2a 2a 2a 2a 2a 0a 23 0a 0a 73 65 74 20  ********.#..set 
0170: 74 65 73 74 64 69 72 20 5b 66 69 6c 65 20 64 69  testdir [file di
0180: 72 6e 61 6d 65 20 24 61 72 67 76 30 5d 0a 73 6f  rname $argv0].so
0190: 75 72 63 65 20 24 74 65 73 74 64 69 72 2f 74 65  urce $testdir/te
01a0: 73 74 65 72 2e 74 63 6c 0a 73 65 74 20 74 65 73  ster.tcl.set tes
01b0: 74 70 72 65 66 69 78 20 61 6c 74 65 72 74 61 62  tprefix altertab
01c0: 0a 0a 23 20 49 66 20 53 51 4c 49 54 45 5f 4f 4d  ..# If SQLITE_OM
01d0: 49 54 5f 41 4c 54 45 52 54 41 42 4c 45 20 69 73  IT_ALTERTABLE is
01e0: 20 64 65 66 69 6e 65 64 2c 20 6f 6d 69 74 20 74   defined, omit t
01f0: 68 69 73 20 66 69 6c 65 2e 0a 69 66 63 61 70 61  his file..ifcapa
0200: 62 6c 65 20 21 61 6c 74 65 72 74 61 62 6c 65 20  ble !altertable 
0210: 7b 0a 20 20 66 69 6e 69 73 68 5f 74 65 73 74 0a  {.  finish_test.
0220: 20 20 72 65 74 75 72 6e 0a 7d 0a 0a 64 6f 5f 65    return.}..do_e
0230: 78 65 63 73 71 6c 5f 74 65 73 74 20 31 2e 30 20  xecsql_test 1.0 
0240: 7b 0a 20 20 43 52 45 41 54 45 20 54 41 42 4c 45  {.  CREATE TABLE
0250: 20 74 31 28 61 2c 20 62 2c 20 43 48 45 43 4b 28   t1(a, b, CHECK(
0260: 74 31 2e 61 20 21 3d 20 74 31 2e 62 29 29 3b 0a  t1.a != t1.b));.
0270: 0a 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20  .  CREATE TABLE 
0280: 74 32 28 61 2c 20 62 29 3b 0a 20 20 43 52 45 41  t2(a, b);.  CREA
0290: 54 45 20 49 4e 44 45 58 20 74 32 65 78 70 72 20  TE INDEX t2expr 
02a0: 4f 4e 20 74 32 28 61 29 20 57 48 45 52 45 20 74  ON t2(a) WHERE t
02b0: 32 2e 62 3e 30 3b 0a 7d 0a 0a 64 6f 5f 65 78 65  2.b>0;.}..do_exe
02c0: 63 73 71 6c 5f 74 65 73 74 20 31 2e 31 20 7b 0a  csql_test 1.1 {.
02d0: 20 20 53 45 4c 45 43 54 20 73 71 6c 20 46 52 4f    SELECT sql FRO
02e0: 4d 20 73 71 6c 69 74 65 5f 6d 61 73 74 65 72 0a  M sqlite_master.
02f0: 7d 20 7b 0a 20 20 7b 43 52 45 41 54 45 20 54 41  } {.  {CREATE TA
0300: 42 4c 45 20 74 31 28 61 2c 20 62 2c 20 43 48 45  BLE t1(a, b, CHE
0310: 43 4b 28 74 31 2e 61 20 21 3d 20 74 31 2e 62 29  CK(t1.a != t1.b)
0320: 29 7d 0a 20 20 7b 43 52 45 41 54 45 20 54 41 42  )}.  {CREATE TAB
0330: 4c 45 20 74 32 28 61 2c 20 62 29 7d 0a 20 20 7b  LE t2(a, b)}.  {
0340: 43 52 45 41 54 45 20 49 4e 44 45 58 20 74 32 65  CREATE INDEX t2e
0350: 78 70 72 20 4f 4e 20 74 32 28 61 29 20 57 48 45  xpr ON t2(a) WHE
0360: 52 45 20 74 32 2e 62 3e 30 7d 0a 7d 0a 0a 64 6f  RE t2.b>0}.}..do
0370: 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 31 2e  _execsql_test 1.
0380: 32 20 7b 0a 20 20 41 4c 54 45 52 20 54 41 42 4c  2 {.  ALTER TABL
0390: 45 20 74 31 20 52 45 4e 41 4d 45 20 54 4f 20 74  E t1 RENAME TO t
03a0: 31 6e 65 77 3b 0a 7d 0a 0a 64 6f 5f 65 78 65 63  1new;.}..do_exec
03b0: 73 71 6c 5f 74 65 73 74 20 31 2e 33 20 7b 0a 20  sql_test 1.3 {. 
03c0: 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 33   CREATE TABLE t3
03d0: 28 63 2c 20 64 29 3b 0a 20 20 41 4c 54 45 52 20  (c, d);.  ALTER 
03e0: 54 41 42 4c 45 20 74 33 20 52 45 4e 41 4d 45 20  TABLE t3 RENAME 
03f0: 54 4f 20 74 33 6e 65 77 3b 0a 20 20 44 52 4f 50  TO t3new;.  DROP
0400: 20 54 41 42 4c 45 20 74 33 6e 65 77 3b 0a 7d 0a   TABLE t3new;.}.
0410: 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74  .do_execsql_test
0420: 20 31 2e 34 20 7b 0a 20 20 53 45 4c 45 43 54 20   1.4 {.  SELECT 
0430: 73 71 6c 20 46 52 4f 4d 20 73 71 6c 69 74 65 5f  sql FROM sqlite_
0440: 6d 61 73 74 65 72 0a 7d 20 7b 0a 20 20 7b 43 52  master.} {.  {CR
0450: 45 41 54 45 20 54 41 42 4c 45 20 22 74 31 6e 65  EATE TABLE "t1ne
0460: 77 22 28 61 2c 20 62 2c 20 43 48 45 43 4b 28 22  w"(a, b, CHECK("
0470: 74 31 6e 65 77 22 2e 61 20 21 3d 20 22 74 31 6e  t1new".a != "t1n
0480: 65 77 22 2e 62 29 29 7d 0a 20 20 7b 43 52 45 41  ew".b))}.  {CREA
0490: 54 45 20 54 41 42 4c 45 20 74 32 28 61 2c 20 62  TE TABLE t2(a, b
04a0: 29 7d 0a 20 20 7b 43 52 45 41 54 45 20 49 4e 44  )}.  {CREATE IND
04b0: 45 58 20 74 32 65 78 70 72 20 4f 4e 20 74 32 28  EX t2expr ON t2(
04c0: 61 29 20 57 48 45 52 45 20 74 32 2e 62 3e 30 7d  a) WHERE t2.b>0}
04d0: 0a 7d 0a 0a 0a 64 6f 5f 65 78 65 63 73 71 6c 5f  .}...do_execsql_
04e0: 74 65 73 74 20 31 2e 33 20 7b 0a 20 20 41 4c 54  test 1.3 {.  ALT
04f0: 45 52 20 54 41 42 4c 45 20 74 32 20 52 45 4e 41  ER TABLE t2 RENA
0500: 4d 45 20 54 4f 20 74 32 6e 65 77 3b 0a 7d 0a 64  ME TO t2new;.}.d
0510: 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 31  o_execsql_test 1
0520: 2e 34 20 7b 0a 20 20 53 45 4c 45 43 54 20 73 71  .4 {.  SELECT sq
0530: 6c 20 46 52 4f 4d 20 73 71 6c 69 74 65 5f 6d 61  l FROM sqlite_ma
0540: 73 74 65 72 0a 7d 20 7b 0a 20 20 7b 43 52 45 41  ster.} {.  {CREA
0550: 54 45 20 54 41 42 4c 45 20 22 74 31 6e 65 77 22  TE TABLE "t1new"
0560: 28 61 2c 20 62 2c 20 43 48 45 43 4b 28 22 74 31  (a, b, CHECK("t1
0570: 6e 65 77 22 2e 61 20 21 3d 20 22 74 31 6e 65 77  new".a != "t1new
0580: 22 2e 62 29 29 7d 0a 20 20 7b 43 52 45 41 54 45  ".b))}.  {CREATE
0590: 20 54 41 42 4c 45 20 22 74 32 6e 65 77 22 28 61   TABLE "t2new"(a
05a0: 2c 20 62 29 7d 0a 20 20 7b 43 52 45 41 54 45 20  , b)}.  {CREATE 
05b0: 49 4e 44 45 58 20 74 32 65 78 70 72 20 4f 4e 20  INDEX t2expr ON 
05c0: 22 74 32 6e 65 77 22 28 61 29 20 57 48 45 52 45  "t2new"(a) WHERE
05d0: 20 22 74 32 6e 65 77 22 2e 62 3e 30 7d 0a 7d 0a   "t2new".b>0}.}.
05e0: 0a 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ..#-------------
05f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0600: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0610: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0620: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 72 65 73  ------------.res
0630: 65 74 5f 64 62 0a 69 66 63 61 70 61 62 6c 65 20  et_db.ifcapable 
0640: 76 74 61 62 20 7b 0a 20 20 72 65 67 69 73 74 65  vtab {.  registe
0650: 72 5f 65 63 68 6f 5f 6d 6f 64 75 6c 65 20 64 62  r_echo_module db
0660: 0a 0a 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74  ..  do_execsql_t
0670: 65 73 74 20 32 2e 30 20 7b 0a 20 20 20 20 43 52  est 2.0 {.    CR
0680: 45 41 54 45 20 54 41 42 4c 45 20 61 62 63 28 61  EATE TABLE abc(a
0690: 2c 20 62 2c 20 63 29 3b 0a 20 20 20 20 49 4e 53  , b, c);.    INS
06a0: 45 52 54 20 49 4e 54 4f 20 61 62 63 20 56 41 4c  ERT INTO abc VAL
06b0: 55 45 53 28 31 2c 20 32 2c 20 33 29 3b 0a 20 20  UES(1, 2, 3);.  
06c0: 20 20 43 52 45 41 54 45 20 56 49 52 54 55 41 4c    CREATE VIRTUAL
06d0: 20 54 41 42 4c 45 20 65 65 65 20 55 53 49 4e 47   TABLE eee USING
06e0: 20 65 63 68 6f 28 27 61 62 63 27 29 3b 0a 20 20   echo('abc');.  
06f0: 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20    SELECT * FROM 
0700: 65 65 65 3b 0a 20 20 7d 20 7b 31 20 32 20 33 7d  eee;.  } {1 2 3}
0710: 0a 0a 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74  ..  do_execsql_t
0720: 65 73 74 20 32 2e 31 20 7b 0a 20 20 20 20 41 4c  est 2.1 {.    AL
0730: 54 45 52 20 54 41 42 4c 45 20 65 65 65 20 52 45  TER TABLE eee RE
0740: 4e 41 4d 45 20 54 4f 20 66 66 66 3b 0a 20 20 20  NAME TO fff;.   
0750: 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 66   SELECT * FROM f
0760: 66 66 3b 0a 20 20 7d 20 7b 31 20 32 20 33 7d 0a  ff;.  } {1 2 3}.
0770: 0a 20 20 64 62 20 63 6c 6f 73 65 0a 20 20 73 71  .  db close.  sq
0780: 6c 69 74 65 33 20 64 62 20 74 65 73 74 2e 64 62  lite3 db test.db
0790: 0a 0a 20 20 64 6f 5f 63 61 74 63 68 73 71 6c 5f  ..  do_catchsql_
07a0: 74 65 73 74 20 32 2e 32 20 7b 0a 20 20 20 20 41  test 2.2 {.    A
07b0: 4c 54 45 52 20 54 41 42 4c 45 20 66 66 66 20 52  LTER TABLE fff R
07c0: 45 4e 41 4d 45 20 54 4f 20 67 67 67 3b 0a 20 20  ENAME TO ggg;.  
07d0: 7d 20 7b 31 20 7b 6e 6f 20 73 75 63 68 20 6d 6f  } {1 {no such mo
07e0: 64 75 6c 65 3a 20 65 63 68 6f 7d 7d 0a 7d 0a 0a  dule: echo}}.}..
07f0: 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  #---------------
0800: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0810: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0820: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0830: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 72 65 73 65 74  ----------.reset
0840: 5f 64 62 0a 0a 64 6f 5f 65 78 65 63 73 71 6c 5f  _db..do_execsql_
0850: 74 65 73 74 20 33 2e 30 20 7b 0a 20 20 43 52 45  test 3.0 {.  CRE
0860: 41 54 45 20 54 41 42 4c 45 20 74 78 78 28 61 2c  ATE TABLE txx(a,
0870: 20 62 2c 20 63 29 3b 0a 20 20 49 4e 53 45 52 54   b, c);.  INSERT
0880: 20 49 4e 54 4f 20 74 78 78 20 56 41 4c 55 45 53   INTO txx VALUES
0890: 28 31 2c 20 32 2c 20 33 29 3b 0a 20 20 43 52 45  (1, 2, 3);.  CRE
08a0: 41 54 45 20 56 49 45 57 20 76 76 76 20 41 53 20  ATE VIEW vvv AS 
08b0: 53 45 4c 45 43 54 20 6d 61 69 6e 2e 74 78 78 2e  SELECT main.txx.
08c0: 61 2c 20 74 78 78 2e 62 2c 20 63 20 46 52 4f 4d  a, txx.b, c FROM
08d0: 20 74 78 78 3b 0a 20 20 43 52 45 41 54 45 20 56   txx;.  CREATE V
08e0: 49 45 57 20 75 75 75 20 41 53 20 53 45 4c 45 43  IEW uuu AS SELEC
08f0: 54 20 6d 61 69 6e 2e 6f 6e 65 2e 61 2c 20 6f 6e  T main.one.a, on
0900: 65 2e 62 2c 20 63 20 46 52 4f 4d 20 74 78 78 20  e.b, c FROM txx 
0910: 41 53 20 6f 6e 65 3b 0a 20 20 43 52 45 41 54 45  AS one;.  CREATE
0920: 20 56 49 45 57 20 74 65 6d 70 2e 74 74 74 20 41   VIEW temp.ttt A
0930: 53 20 53 45 4c 45 43 54 20 6d 61 69 6e 2e 74 78  S SELECT main.tx
0940: 78 2e 61 2c 20 74 78 78 2e 62 2c 20 6f 6e 65 2e  x.a, txx.b, one.
0950: 62 2c 20 6d 61 69 6e 2e 6f 6e 65 2e 61 20 46 52  b, main.one.a FR
0960: 4f 4d 20 74 78 78 20 41 53 20 6f 6e 65 2c 20 74  OM txx AS one, t
0970: 78 78 3b 0a 7d 0a 0a 64 6f 5f 65 78 65 63 73 71  xx;.}..do_execsq
0980: 6c 5f 74 65 73 74 20 33 2e 31 2e 31 20 7b 0a 20  l_test 3.1.1 {. 
0990: 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 76   SELECT * FROM v
09a0: 76 76 3b 0a 7d 20 7b 31 20 32 20 33 7d 0a 64 6f  vv;.} {1 2 3}.do
09b0: 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 33 2e  _execsql_test 3.
09c0: 31 2e 32 20 7b 0a 20 20 41 4c 54 45 52 20 54 41  1.2 {.  ALTER TA
09d0: 42 4c 45 20 74 78 78 20 52 45 4e 41 4d 45 20 54  BLE txx RENAME T
09e0: 4f 20 22 74 20 78 78 22 3b 0a 20 20 53 45 4c 45  O "t xx";.  SELE
09f0: 43 54 20 2a 20 46 52 4f 4d 20 76 76 76 3b 0a 7d  CT * FROM vvv;.}
0a00: 20 7b 31 20 32 20 33 7d 0a 64 6f 5f 65 78 65 63   {1 2 3}.do_exec
0a10: 73 71 6c 5f 74 65 73 74 20 33 2e 31 2e 33 20 7b  sql_test 3.1.3 {
0a20: 0a 20 20 53 45 4c 45 43 54 20 73 71 6c 20 46 52  .  SELECT sql FR
0a30: 4f 4d 20 73 71 6c 69 74 65 5f 6d 61 73 74 65 72  OM sqlite_master
0a40: 20 57 48 45 52 45 20 6e 61 6d 65 3d 27 76 76 76   WHERE name='vvv
0a50: 27 3b 0a 7d 20 7b 7b 43 52 45 41 54 45 20 56 49  ';.} {{CREATE VI
0a60: 45 57 20 76 76 76 20 41 53 20 53 45 4c 45 43 54  EW vvv AS SELECT
0a70: 20 6d 61 69 6e 2e 22 74 20 78 78 22 2e 61 2c 20   main."t xx".a, 
0a80: 22 74 20 78 78 22 2e 62 2c 20 63 20 46 52 4f 4d  "t xx".b, c FROM
0a90: 20 22 74 20 78 78 22 7d 7d 0a 0a 0a 64 6f 5f 65   "t xx"}}...do_e
0aa0: 78 65 63 73 71 6c 5f 74 65 73 74 20 33 2e 32 2e  xecsql_test 3.2.
0ab0: 31 20 7b 0a 20 20 53 45 4c 45 43 54 20 2a 20 46  1 {.  SELECT * F
0ac0: 52 4f 4d 20 75 75 75 3b 0a 7d 20 7b 31 20 32 20  ROM uuu;.} {1 2 
0ad0: 33 7d 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65  3}.do_execsql_te
0ae0: 73 74 20 33 2e 32 2e 32 20 7b 0a 20 20 53 45 4c  st 3.2.2 {.  SEL
0af0: 45 43 54 20 73 71 6c 20 46 52 4f 4d 20 73 71 6c  ECT sql FROM sql
0b00: 69 74 65 5f 6d 61 73 74 65 72 20 57 48 45 52 45  ite_master WHERE
0b10: 20 6e 61 6d 65 3d 27 75 75 75 27 3b 3b 0a 7d 20   name='uuu';;.} 
0b20: 7b 7b 43 52 45 41 54 45 20 56 49 45 57 20 75 75  {{CREATE VIEW uu
0b30: 75 20 41 53 20 53 45 4c 45 43 54 20 6d 61 69 6e  u AS SELECT main
0b40: 2e 6f 6e 65 2e 61 2c 20 6f 6e 65 2e 62 2c 20 63  .one.a, one.b, c
0b50: 20 46 52 4f 4d 20 22 74 20 78 78 22 20 41 53 20   FROM "t xx" AS 
0b60: 6f 6e 65 7d 7d 0a 0a 64 6f 5f 65 78 65 63 73 71  one}}..do_execsq
0b70: 6c 5f 74 65 73 74 20 33 2e 33 2e 31 20 7b 0a 20  l_test 3.3.1 {. 
0b80: 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74   SELECT * FROM t
0b90: 74 74 3b 0a 7d 20 7b 31 20 32 20 32 20 31 7d 0a  tt;.} {1 2 2 1}.
0ba0: 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20  do_execsql_test 
0bb0: 33 2e 33 2e 32 20 7b 0a 20 20 53 45 4c 45 43 54  3.3.2 {.  SELECT
0bc0: 20 73 71 6c 20 46 52 4f 4d 20 73 71 6c 69 74 65   sql FROM sqlite
0bd0: 5f 74 65 6d 70 5f 6d 61 73 74 65 72 20 57 48 45  _temp_master WHE
0be0: 52 45 20 6e 61 6d 65 3d 27 74 74 74 27 3b 0a 7d  RE name='ttt';.}
0bf0: 20 7b 7b 43 52 45 41 54 45 20 56 49 45 57 20 74   {{CREATE VIEW t
0c00: 74 74 20 41 53 20 53 45 4c 45 43 54 20 6d 61 69  tt AS SELECT mai
0c10: 6e 2e 22 74 20 78 78 22 2e 61 2c 20 22 74 20 78  n."t xx".a, "t x
0c20: 78 22 2e 62 2c 20 6f 6e 65 2e 62 2c 20 6d 61 69  x".b, one.b, mai
0c30: 6e 2e 6f 6e 65 2e 61 20 46 52 4f 4d 20 22 74 20  n.one.a FROM "t 
0c40: 78 78 22 20 41 53 20 6f 6e 65 2c 20 22 74 20 78  xx" AS one, "t x
0c50: 78 22 7d 7d 0a 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d  x"}}..#---------
0c60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0c70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0c80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0c90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0ca0: 0a 72 65 73 65 74 5f 64 62 0a 64 6f 5f 65 78 65  .reset_db.do_exe
0cb0: 63 73 71 6c 5f 74 65 73 74 20 34 2e 30 20 7b 0a  csql_test 4.0 {.
0cc0: 20 20 43 52 45 41 54 45 20 74 61 62 6c 65 20 74    CREATE table t
0cd0: 31 28 78 2c 20 79 29 3b 0a 20 20 43 52 45 41 54  1(x, y);.  CREAT
0ce0: 45 20 74 61 62 6c 65 20 74 32 28 61 2c 20 62 29  E table t2(a, b)
0cf0: 3b 0a 0a 20 20 43 52 45 41 54 45 20 54 52 49 47  ;..  CREATE TRIG
0d00: 47 45 52 20 74 72 31 20 41 46 54 45 52 20 49 4e  GER tr1 AFTER IN
0d10: 53 45 52 54 20 4f 4e 20 74 31 20 42 45 47 49 4e  SERT ON t1 BEGIN
0d20: 0a 20 20 20 20 53 45 4c 45 43 54 20 74 31 2e 78  .    SELECT t1.x
0d30: 2c 20 2a 20 46 52 4f 4d 20 74 31 2c 20 74 32 3b  , * FROM t1, t2;
0d40: 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f  .    INSERT INTO
0d50: 20 74 32 20 56 41 4c 55 45 53 28 6e 65 77 2e 78   t2 VALUES(new.x
0d60: 2c 20 6e 65 77 2e 79 29 3b 0a 20 20 45 4e 44 3b  , new.y);.  END;
0d70: 0a 7d 0a 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74  .}..do_execsql_t
0d80: 65 73 74 20 34 2e 31 20 7b 0a 20 20 49 4e 53 45  est 4.1 {.  INSE
0d90: 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45  RT INTO t1 VALUE
0da0: 53 28 31 2c 20 31 29 3b 0a 20 20 41 4c 54 45 52  S(1, 1);.  ALTER
0db0: 20 54 41 42 4c 45 20 74 31 20 52 45 4e 41 4d 45   TABLE t1 RENAME
0dc0: 20 54 4f 20 74 31 31 3b 0a 20 20 49 4e 53 45 52   TO t11;.  INSER
0dd0: 54 20 49 4e 54 4f 20 74 31 31 20 56 41 4c 55 45  T INTO t11 VALUE
0de0: 53 28 32 2c 20 32 29 3b 0a 20 20 41 4c 54 45 52  S(2, 2);.  ALTER
0df0: 20 54 41 42 4c 45 20 74 32 20 52 45 4e 41 4d 45   TABLE t2 RENAME
0e00: 20 54 4f 20 74 32 32 3b 0a 20 20 49 4e 53 45 52   TO t22;.  INSER
0e10: 54 20 49 4e 54 4f 20 74 31 31 20 56 41 4c 55 45  T INTO t11 VALUE
0e20: 53 28 33 2c 20 33 29 3b 0a 7d 0a 0a 70 72 6f 63  S(3, 3);.}..proc
0e30: 20 73 71 75 69 73 68 20 7b 61 7d 20 7b 0a 20 20   squish {a} {.  
0e40: 73 74 72 69 6e 67 20 74 72 69 6d 20 5b 72 65 67  string trim [reg
0e50: 73 75 62 20 2d 61 6c 6c 20 7b 5b 5b 3a 73 70 61  sub -all {[[:spa
0e60: 63 65 3a 5d 5d 5b 5b 3a 73 70 61 63 65 3a 5d 5d  ce:]][[:space:]]
0e70: 2a 7d 20 24 61 20 7b 20 7d 5d 0a 7d 0a 64 62 20  *} $a { }].}.db 
0e80: 66 75 6e 63 20 73 71 75 69 73 68 20 73 71 75 69  func squish squi
0e90: 73 68 0a 64 6f 5f 74 65 73 74 20 34 2e 32 20 7b  sh.do_test 4.2 {
0ea0: 0a 20 20 65 78 65 63 73 71 6c 20 7b 20 53 45 4c  .  execsql { SEL
0eb0: 45 43 54 20 73 71 75 69 73 68 28 73 71 6c 29 20  ECT squish(sql) 
0ec0: 46 52 4f 4d 20 73 71 6c 69 74 65 5f 6d 61 73 74  FROM sqlite_mast
0ed0: 65 72 20 57 48 45 52 45 20 6e 61 6d 65 20 3d 20  er WHERE name = 
0ee0: 27 74 72 31 27 20 7d 0a 7d 20 5b 6c 69 73 74 20  'tr1' }.} [list 
0ef0: 5b 73 71 75 69 73 68 20 7b 0a 20 20 43 52 45 41  [squish {.  CREA
0f00: 54 45 20 54 52 49 47 47 45 52 20 74 72 31 20 41  TE TRIGGER tr1 A
0f10: 46 54 45 52 20 49 4e 53 45 52 54 20 4f 4e 20 22  FTER INSERT ON "
0f20: 74 31 31 22 20 42 45 47 49 4e 0a 20 20 20 20 53  t11" BEGIN.    S
0f30: 45 4c 45 43 54 20 22 74 31 31 22 2e 78 2c 20 2a  ELECT "t11".x, *
0f40: 20 46 52 4f 4d 20 22 74 31 31 22 2c 20 22 74 32   FROM "t11", "t2
0f50: 32 22 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49  2";.    INSERT I
0f60: 4e 54 4f 20 22 74 32 32 22 20 56 41 4c 55 45 53  NTO "t22" VALUES
0f70: 28 6e 65 77 2e 78 2c 20 6e 65 77 2e 79 29 3b 0a  (new.x, new.y);.
0f80: 20 20 45 4e 44 0a 7d 5d 5d 0a 0a 23 2d 2d 2d 2d    END.}]]..#----
0f90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0fa0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0fb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0fc0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0fd0: 2d 2d 2d 2d 2d 0a 72 65 73 65 74 5f 64 62 0a 64  -----.reset_db.d
0fe0: 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 35  o_execsql_test 5
0ff0: 2e 30 20 7b 0a 20 20 43 52 45 41 54 45 20 54 41  .0 {.  CREATE TA
1000: 42 4c 45 20 74 39 28 61 2c 20 62 2c 20 63 29 3b  BLE t9(a, b, c);
1010: 0a 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20  .  CREATE TABLE 
1020: 74 31 30 28 61 2c 20 62 2c 20 63 29 3b 0a 20 20  t10(a, b, c);.  
1030: 43 52 45 41 54 45 20 54 45 4d 50 20 54 41 42 4c  CREATE TEMP TABL
1040: 45 20 74 39 28 61 2c 20 62 2c 20 63 29 3b 0a 0a  E t9(a, b, c);..
1050: 20 20 43 52 45 41 54 45 20 54 52 49 47 47 45 52    CREATE TRIGGER
1060: 20 74 65 6d 70 2e 74 39 74 20 41 46 54 45 52 20   temp.t9t AFTER 
1070: 49 4e 53 45 52 54 20 4f 4e 20 74 65 6d 70 2e 74  INSERT ON temp.t
1080: 39 20 42 45 47 49 4e 0a 20 20 20 20 49 4e 53 45  9 BEGIN.    INSE
1090: 52 54 20 49 4e 54 4f 20 74 31 30 20 56 41 4c 55  RT INTO t10 VALU
10a0: 45 53 28 6e 65 77 2e 61 2c 20 6e 65 77 2e 62 2c  ES(new.a, new.b,
10b0: 20 6e 65 77 2e 63 29 3b 0a 20 20 45 4e 44 3b 0a   new.c);.  END;.
10c0: 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74  .  INSERT INTO t
10d0: 65 6d 70 2e 74 39 20 56 41 4c 55 45 53 28 31 2c  emp.t9 VALUES(1,
10e0: 20 32 2c 20 33 29 3b 0a 20 20 53 45 4c 45 43 54   2, 3);.  SELECT
10f0: 20 2a 20 46 52 4f 4d 20 74 31 30 3b 0a 7d 20 7b   * FROM t10;.} {
1100: 31 20 32 20 33 7d 0a 0a 64 6f 5f 65 78 65 63 73  1 2 3}..do_execs
1110: 71 6c 5f 74 65 73 74 20 35 2e 31 20 7b 0a 20 20  ql_test 5.1 {.  
1120: 41 4c 54 45 52 20 54 41 42 4c 45 20 74 65 6d 70  ALTER TABLE temp
1130: 2e 74 39 20 52 45 4e 41 4d 45 20 54 4f 20 27 74  .t9 RENAME TO 't
1140: 31 32 33 34 35 36 37 38 39 30 27 0a 7d 0a 0a 64  1234567890'.}..d
1150: 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 35  o_execsql_test 5
1160: 2e 32 20 7b 0a 20 20 43 52 45 41 54 45 20 54 41  .2 {.  CREATE TA
1170: 42 4c 45 20 74 31 28 61 2c 20 62 29 3b 0a 20 20  BLE t1(a, b);.  
1180: 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 32 28  CREATE TABLE t2(
1190: 61 2c 20 62 29 3b 0a 20 20 49 4e 53 45 52 54 20  a, b);.  INSERT 
11a0: 49 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28 31  INTO t1 VALUES(1
11b0: 2c 20 32 29 3b 0a 20 20 49 4e 53 45 52 54 20 49  , 2);.  INSERT I
11c0: 4e 54 4f 20 74 32 20 56 41 4c 55 45 53 28 33 2c  NTO t2 VALUES(3,
11d0: 20 34 29 3b 0a 20 20 43 52 45 41 54 45 20 56 49   4);.  CREATE VI
11e0: 45 57 20 76 20 41 53 20 53 45 4c 45 43 54 20 6f  EW v AS SELECT o
11f0: 6e 65 2e 61 2c 20 6f 6e 65 2e 62 2c 20 74 32 2e  ne.a, one.b, t2.
1200: 61 2c 20 74 32 2e 62 20 46 52 4f 4d 20 74 31 20  a, t2.b FROM t1 
1210: 41 53 20 6f 6e 65 2c 20 74 32 3b 0a 20 20 53 45  AS one, t2;.  SE
1220: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 76 3b 0a 7d  LECT * FROM v;.}
1230: 20 7b 31 20 32 20 33 20 34 7d 0a 0a 64 6f 5f 63   {1 2 3 4}..do_c
1240: 61 74 63 68 73 71 6c 5f 74 65 73 74 20 35 2e 33  atchsql_test 5.3
1250: 20 7b 0a 20 20 41 4c 54 45 52 20 54 41 42 4c 45   {.  ALTER TABLE
1260: 20 74 32 20 52 45 4e 41 4d 45 20 54 4f 20 6f 6e   t2 RENAME TO on
1270: 65 3b 0a 7d 20 7b 31 20 7b 65 72 72 6f 72 20 69  e;.} {1 {error i
1280: 6e 20 76 69 65 77 20 76 20 61 66 74 65 72 20 72  n view v after r
1290: 65 6e 61 6d 65 3a 20 61 6d 62 69 67 75 6f 75 73  ename: ambiguous
12a0: 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 3a 20 6f 6e   column name: on
12b0: 65 2e 61 7d 7d 0a 0a 64 6f 5f 65 78 65 63 73 71  e.a}}..do_execsq
12c0: 6c 5f 74 65 73 74 20 35 2e 34 20 7b 0a 20 20 53  l_test 5.4 {.  S
12d0: 45 4c 45 43 54 20 20 2a 20 20 46 52 4f 4d 20 76  ELECT  *  FROM v
12e0: 0a 7d 20 7b 31 20 32 20 33 20 34 7d 0a 0a 64 6f  .} {1 2 3 4}..do
12f0: 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 35 2e  _execsql_test 5.
1300: 35 20 7b 0a 20 20 44 52 4f 50 20 56 49 45 57 20  5 {.  DROP VIEW 
1310: 76 3b 0a 20 20 43 52 45 41 54 45 20 56 49 45 57  v;.  CREATE VIEW
1320: 20 74 65 6d 70 2e 76 76 20 41 53 20 53 45 4c 45   temp.vv AS SELE
1330: 43 54 20 6f 6e 65 2e 61 2c 20 6f 6e 65 2e 62 2c  CT one.a, one.b,
1340: 20 74 32 2e 61 2c 20 74 32 2e 62 20 46 52 4f 4d   t2.a, t2.b FROM
1350: 20 74 31 20 41 53 20 6f 6e 65 2c 20 74 32 3b 0a   t1 AS one, t2;.
1360: 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20    SELECT * FROM 
1370: 76 76 3b 0a 7d 20 7b 31 20 32 20 33 20 34 7d 0a  vv;.} {1 2 3 4}.
1380: 0a 64 6f 5f 63 61 74 63 68 73 71 6c 5f 74 65 73  .do_catchsql_tes
1390: 74 20 35 2e 36 20 7b 0a 20 20 41 4c 54 45 52 20  t 5.6 {.  ALTER 
13a0: 54 41 42 4c 45 20 74 32 20 52 45 4e 41 4d 45 20  TABLE t2 RENAME 
13b0: 54 4f 20 6f 6e 65 3b 0a 7d 20 7b 31 20 7b 65 72  TO one;.} {1 {er
13c0: 72 6f 72 20 69 6e 20 76 69 65 77 20 76 76 20 61  ror in view vv a
13d0: 66 74 65 72 20 72 65 6e 61 6d 65 3a 20 61 6d 62  fter rename: amb
13e0: 69 67 75 6f 75 73 20 63 6f 6c 75 6d 6e 20 6e 61  iguous column na
13f0: 6d 65 3a 20 6f 6e 65 2e 61 7d 7d 0a 0a 23 2d 2d  me: one.a}}..#--
1400: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1410: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1420: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1430: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1440: 2d 2d 2d 2d 2d 2d 2d 0a 0a 69 66 63 61 70 61 62  -------..ifcapab
1450: 6c 65 20 76 74 61 62 20 7b 0a 20 20 72 65 67 69  le vtab {.  regi
1460: 73 74 65 72 5f 74 63 6c 5f 6d 6f 64 75 6c 65 20  ster_tcl_module 
1470: 64 62 0a 20 20 70 72 6f 63 20 74 63 6c 5f 63 6f  db.  proc tcl_co
1480: 6d 6d 61 6e 64 20 7b 6d 65 74 68 6f 64 20 61 72  mmand {method ar
1490: 67 73 7d 20 7b 0a 20 20 20 20 73 77 69 74 63 68  gs} {.    switch
14a0: 20 2d 2d 20 24 6d 65 74 68 6f 64 20 7b 0a 20 20   -- $method {.  
14b0: 20 20 20 20 78 43 6f 6e 6e 65 63 74 20 7b 0a 20      xConnect {. 
14c0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 43         return "C
14d0: 52 45 41 54 45 20 54 41 42 4c 45 20 74 31 28 61  REATE TABLE t1(a
14e0: 2c 20 62 2c 20 63 29 22 0a 20 20 20 20 20 20 7d  , b, c)".      }
14f0: 0a 20 20 20 20 7d 0a 20 20 20 20 72 65 74 75 72  .    }.    retur
1500: 6e 20 7b 7d 0a 20 20 7d 0a 20 20 0a 20 20 64 6f  n {}.  }.  .  do
1510: 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 36 2e  _execsql_test 6.
1520: 30 20 7b 0a 20 20 20 20 43 52 45 41 54 45 20 56  0 {.    CREATE V
1530: 49 52 54 55 41 4c 20 54 41 42 4c 45 20 78 31 20  IRTUAL TABLE x1 
1540: 55 53 49 4e 47 20 74 63 6c 28 74 63 6c 5f 63 6f  USING tcl(tcl_co
1550: 6d 6d 61 6e 64 29 3b 0a 20 20 7d 0a 20 20 0a 20  mmand);.  }.  . 
1560: 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74   do_execsql_test
1570: 20 36 2e 31 20 7b 0a 20 20 20 20 41 4c 54 45 52   6.1 {.    ALTER
1580: 20 54 41 42 4c 45 20 78 31 20 52 45 4e 41 4d 45   TABLE x1 RENAME
1590: 20 54 4f 20 78 32 3b 0a 20 20 20 20 53 45 4c 45   TO x2;.    SELE
15a0: 43 54 20 73 71 6c 20 46 52 4f 4d 20 73 71 6c 69  CT sql FROM sqli
15b0: 74 65 5f 6d 61 73 74 65 72 20 57 48 45 52 45 20  te_master WHERE 
15c0: 6e 61 6d 65 20 3d 20 27 78 32 27 0a 20 20 7d 20  name = 'x2'.  } 
15d0: 7b 7b 43 52 45 41 54 45 20 56 49 52 54 55 41 4c  {{CREATE VIRTUAL
15e0: 20 54 41 42 4c 45 20 22 78 32 22 20 55 53 49 4e   TABLE "x2" USIN
15f0: 47 20 74 63 6c 28 74 63 6c 5f 63 6f 6d 6d 61 6e  G tcl(tcl_comman
1600: 64 29 7d 7d 0a 20 20 0a 20 20 64 6f 5f 65 78 65  d)}}.  .  do_exe
1610: 63 73 71 6c 5f 74 65 73 74 20 37 2e 31 20 7b 0a  csql_test 7.1 {.
1620: 20 20 20 20 43 52 45 41 54 45 20 54 41 42 4c 45      CREATE TABLE
1630: 20 64 64 64 28 64 62 2c 20 73 71 6c 2c 20 7a 4f   ddd(db, sql, zO
1640: 6c 64 2c 20 7a 4e 65 77 2c 20 62 54 65 6d 70 29  ld, zNew, bTemp)
1650: 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54  ;.    INSERT INT
1660: 4f 20 64 64 64 20 56 41 4c 55 45 53 28 0a 20 20  O ddd VALUES(.  
1670: 20 20 20 20 20 20 27 6d 61 69 6e 27 2c 20 27 43        'main', 'C
1680: 52 45 41 54 45 20 54 41 42 4c 45 20 78 31 28 69  REATE TABLE x1(i
1690: 20 49 4e 54 45 47 45 52 2c 20 74 20 54 45 58 54   INTEGER, t TEXT
16a0: 29 27 2c 20 27 64 64 64 27 2c 20 4e 55 4c 4c 2c  )', 'ddd', NULL,
16b0: 20 30 0a 20 20 20 20 29 2c 20 28 0a 20 20 20 20   0.    ), (.    
16c0: 20 20 20 20 27 6d 61 69 6e 27 2c 20 27 43 52 45      'main', 'CRE
16d0: 41 54 45 20 54 41 42 4c 45 20 78 31 28 69 20 49  ATE TABLE x1(i I
16e0: 4e 54 45 47 45 52 2c 20 74 20 54 45 58 54 29 27  NTEGER, t TEXT)'
16f0: 2c 20 4e 55 4c 4c 2c 20 27 65 65 65 27 2c 20 30  , NULL, 'eee', 0
1700: 0a 20 20 20 20 29 2c 20 28 0a 20 20 20 20 20 20  .    ), (.      
1710: 20 20 27 6d 61 69 6e 27 2c 20 4e 55 4c 4c 2c 20    'main', NULL, 
1720: 27 64 64 64 27 2c 20 27 65 65 65 27 2c 20 30 0a  'ddd', 'eee', 0.
1730: 20 20 20 20 29 3b 0a 20 20 7d 20 7b 7d 0a 20 20      );.  } {}.  
1740: 0a 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65  .  do_execsql_te
1750: 73 74 20 37 2e 32 20 7b 0a 20 20 20 20 53 45 4c  st 7.2 {.    SEL
1760: 45 43 54 20 0a 20 20 20 20 73 71 6c 69 74 65 5f  ECT .    sqlite_
1770: 72 65 6e 61 6d 65 5f 74 61 62 6c 65 28 64 62 2c  rename_table(db,
1780: 20 30 2c 20 30 2c 20 73 71 6c 2c 20 7a 4f 6c 64   0, 0, sql, zOld
1790: 2c 20 7a 4e 65 77 2c 20 62 54 65 6d 70 29 0a 20  , zNew, bTemp). 
17a0: 20 20 20 46 52 4f 4d 20 64 64 64 3b 0a 20 20 7d     FROM ddd;.  }
17b0: 20 7b 7b 7d 20 7b 7d 20 7b 7d 7d 0a 7d 0a 0a 23   {{} {} {}}.}..#
17c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
17d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
17e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
17f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1800: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 0a 72 65 73 65  ---------.#.rese
1810: 74 5f 64 62 0a 66 6f 72 63 65 64 65 6c 65 74 65  t_db.forcedelete
1820: 20 74 65 73 74 2e 64 62 32 0a 64 6f 5f 65 78 65   test.db2.do_exe
1830: 63 73 71 6c 5f 74 65 73 74 20 38 2e 31 20 7b 0a  csql_test 8.1 {.
1840: 20 20 41 54 54 41 43 48 20 27 74 65 73 74 2e 64    ATTACH 'test.d
1850: 62 32 27 20 41 53 20 61 75 78 3b 0a 20 20 50 52  b2' AS aux;.  PR
1860: 41 47 4d 41 20 66 6f 72 65 69 67 6e 5f 6b 65 79  AGMA foreign_key
1870: 73 20 3d 20 6f 6e 3b 0a 20 20 43 52 45 41 54 45  s = on;.  CREATE
1880: 20 54 41 42 4c 45 20 61 75 78 2e 70 31 28 61 20   TABLE aux.p1(a 
1890: 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20  INTEGER PRIMARY 
18a0: 4b 45 59 2c 20 62 29 3b 0a 20 20 43 52 45 41 54  KEY, b);.  CREAT
18b0: 45 20 54 41 42 4c 45 20 61 75 78 2e 63 31 28 78  E TABLE aux.c1(x
18c0: 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59   INTEGER PRIMARY
18d0: 20 4b 45 59 2c 20 79 20 52 45 46 45 52 45 4e 43   KEY, y REFERENC
18e0: 45 53 20 70 31 28 61 29 29 3b 0a 20 20 49 4e 53  ES p1(a));.  INS
18f0: 45 52 54 20 49 4e 54 4f 20 61 75 78 2e 70 31 20  ERT INTO aux.p1 
1900: 56 41 4c 55 45 53 28 31 2c 20 31 29 3b 0a 20 20  VALUES(1, 1);.  
1910: 49 4e 53 45 52 54 20 49 4e 54 4f 20 61 75 78 2e  INSERT INTO aux.
1920: 70 31 20 56 41 4c 55 45 53 28 32 2c 20 32 29 3b  p1 VALUES(2, 2);
1930: 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 61  .  INSERT INTO a
1940: 75 78 2e 63 31 20 56 41 4c 55 45 53 28 4e 55 4c  ux.c1 VALUES(NUL
1950: 4c 2c 20 32 29 3b 0a 20 20 43 52 45 41 54 45 20  L, 2);.  CREATE 
1960: 54 41 42 4c 45 20 61 75 78 2e 63 32 28 78 20 49  TABLE aux.c2(x I
1970: 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b  NTEGER PRIMARY K
1980: 45 59 2c 20 79 20 52 45 46 45 52 45 4e 43 45 53  EY, y REFERENCES
1990: 20 63 31 28 61 29 29 3b 0a 7d 0a 0a 64 6f 5f 65   c1(a));.}..do_e
19a0: 78 65 63 73 71 6c 5f 74 65 73 74 20 38 2e 32 20  xecsql_test 8.2 
19b0: 7b 0a 20 20 41 4c 54 45 52 20 54 41 42 4c 45 20  {.  ALTER TABLE 
19c0: 61 75 78 2e 70 31 20 52 45 4e 41 4d 45 20 54 4f  aux.p1 RENAME TO
19d0: 20 70 70 70 3b 0a 7d 0a 0a 64 6f 5f 65 78 65 63   ppp;.}..do_exec
19e0: 73 71 6c 5f 74 65 73 74 20 38 2e 32 20 7b 0a 20  sql_test 8.2 {. 
19f0: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 61 75 78   INSERT INTO aux
1a00: 2e 63 31 20 56 41 4c 55 45 53 28 4e 55 4c 4c 2c  .c1 VALUES(NULL,
1a10: 20 31 29 3b 0a 20 20 53 45 4c 45 43 54 20 73 71   1);.  SELECT sq
1a20: 6c 20 46 52 4f 4d 20 61 75 78 2e 73 71 6c 69 74  l FROM aux.sqlit
1a30: 65 5f 6d 61 73 74 65 72 20 57 48 45 52 45 20 6e  e_master WHERE n
1a40: 61 6d 65 20 3d 20 27 63 31 27 3b 0a 7d 20 7b 7b  ame = 'c1';.} {{
1a50: 43 52 45 41 54 45 20 54 41 42 4c 45 20 63 31 28  CREATE TABLE c1(
1a60: 78 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52  x INTEGER PRIMAR
1a70: 59 20 4b 45 59 2c 20 79 20 52 45 46 45 52 45 4e  Y KEY, y REFEREN
1a80: 43 45 53 20 22 70 70 70 22 28 61 29 29 7d 7d 0a  CES "ppp"(a))}}.
1a90: 0a 72 65 73 65 74 5f 64 62 0a 64 6f 5f 65 78 65  .reset_db.do_exe
1aa0: 63 73 71 6c 5f 74 65 73 74 20 39 2e 30 20 7b 0a  csql_test 9.0 {.
1ab0: 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 74    CREATE TABLE t
1ac0: 31 28 61 2c 20 62 2c 20 63 29 3b 0a 20 20 43 52  1(a, b, c);.  CR
1ad0: 45 41 54 45 20 56 49 45 57 20 76 31 20 41 53 20  EATE VIEW v1 AS 
1ae0: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 32  SELECT * FROM t2
1af0: 3b 0a 7d 0a 64 6f 5f 63 61 74 63 68 73 71 6c 5f  ;.}.do_catchsql_
1b00: 74 65 73 74 20 39 2e 31 20 7b 0a 20 20 41 4c 54  test 9.1 {.  ALT
1b10: 45 52 20 54 41 42 4c 45 20 74 31 20 52 45 4e 41  ER TABLE t1 RENA
1b20: 4d 45 20 54 4f 20 74 33 3b 0a 7d 20 7b 31 20 7b  ME TO t3;.} {1 {
1b30: 65 72 72 6f 72 20 69 6e 20 76 69 65 77 20 76 31  error in view v1
1b40: 3a 20 6e 6f 20 73 75 63 68 20 74 61 62 6c 65 3a  : no such table:
1b50: 20 6d 61 69 6e 2e 74 32 7d 7d 0a 64 6f 5f 65 78   main.t2}}.do_ex
1b60: 65 63 73 71 6c 5f 74 65 73 74 20 39 2e 32 20 7b  ecsql_test 9.2 {
1b70: 0a 20 20 44 52 4f 50 20 56 49 45 57 20 76 31 3b  .  DROP VIEW v1;
1b80: 0a 20 20 43 52 45 41 54 45 20 54 52 49 47 47 45  .  CREATE TRIGGE
1b90: 52 20 74 72 20 41 46 54 45 52 20 49 4e 53 45 52  R tr AFTER INSER
1ba0: 54 20 4f 4e 20 74 31 20 42 45 47 49 4e 0a 20 20  T ON t1 BEGIN.  
1bb0: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 32    INSERT INTO t2
1bc0: 20 56 41 4c 55 45 53 28 6e 65 77 2e 61 29 3b 0a   VALUES(new.a);.
1bd0: 20 20 45 4e 44 3b 0a 7d 0a 64 6f 5f 63 61 74 63    END;.}.do_catc
1be0: 68 73 71 6c 5f 74 65 73 74 20 39 2e 33 20 7b 0a  hsql_test 9.3 {.
1bf0: 20 20 41 4c 54 45 52 20 54 41 42 4c 45 20 74 31    ALTER TABLE t1
1c00: 20 52 45 4e 41 4d 45 20 54 4f 20 74 33 3b 0a 7d   RENAME TO t3;.}
1c10: 20 7b 31 20 7b 65 72 72 6f 72 20 69 6e 20 74 72   {1 {error in tr
1c20: 69 67 67 65 72 20 74 72 3a 20 6e 6f 20 73 75 63  igger tr: no suc
1c30: 68 20 74 61 62 6c 65 3a 20 6d 61 69 6e 2e 74 32  h table: main.t2
1c40: 7d 7d 0a 0a 66 6f 72 63 65 64 65 6c 65 74 65 20  }}..forcedelete 
1c50: 74 65 73 74 2e 64 62 32 0a 64 6f 5f 65 78 65 63  test.db2.do_exec
1c60: 73 71 6c 5f 74 65 73 74 20 39 2e 34 20 7b 0a 20  sql_test 9.4 {. 
1c70: 20 44 52 4f 50 20 54 52 49 47 47 45 52 20 74 72   DROP TRIGGER tr
1c80: 3b 0a 0a 20 20 41 54 54 41 43 48 20 27 74 65 73  ;..  ATTACH 'tes
1c90: 74 2e 64 62 32 27 20 41 53 20 61 75 78 3b 0a 20  t.db2' AS aux;. 
1ca0: 20 43 52 45 41 54 45 20 54 52 49 47 47 45 52 20   CREATE TRIGGER 
1cb0: 74 72 20 41 46 54 45 52 20 49 4e 53 45 52 54 20  tr AFTER INSERT 
1cc0: 4f 4e 20 74 31 20 57 48 45 4e 20 6e 65 77 2e 61  ON t1 WHEN new.a
1cd0: 20 49 53 20 4e 55 4c 4c 20 42 45 47 49 4e 20 53   IS NULL BEGIN S
1ce0: 45 4c 45 43 54 20 31 2c 20 32 2c 20 33 3b 20 45  ELECT 1, 2, 3; E
1cf0: 4e 44 3b 0a 0a 20 20 43 52 45 41 54 45 20 54 41  ND;..  CREATE TA
1d00: 42 4c 45 20 61 75 78 2e 74 31 28 78 29 3b 0a 20  BLE aux.t1(x);. 
1d10: 20 43 52 45 41 54 45 20 54 45 4d 50 20 54 52 49   CREATE TEMP TRI
1d20: 47 47 45 52 20 74 72 20 41 46 54 45 52 20 49 4e  GGER tr AFTER IN
1d30: 53 45 52 54 20 4f 4e 20 61 75 78 2e 74 31 20 42  SERT ON aux.t1 B
1d40: 45 47 49 4e 20 53 45 4c 45 43 54 20 31 2c 20 32  EGIN SELECT 1, 2
1d50: 2c 20 33 3b 20 45 4e 44 3b 0a 7d 0a 64 6f 5f 65  , 3; END;.}.do_e
1d60: 78 65 63 73 71 6c 5f 74 65 73 74 20 39 2e 35 20  xecsql_test 9.5 
1d70: 7b 0a 20 20 41 4c 54 45 52 20 54 41 42 4c 45 20  {.  ALTER TABLE 
1d80: 6d 61 69 6e 2e 74 31 20 52 45 4e 41 4d 45 20 54  main.t1 RENAME T
1d90: 4f 20 74 33 3b 0a 7d 0a 64 6f 5f 65 78 65 63 73  O t3;.}.do_execs
1da0: 71 6c 5f 74 65 73 74 20 39 2e 36 20 7b 0a 20 20  ql_test 9.6 {.  
1db0: 53 45 4c 45 43 54 20 73 71 6c 20 46 52 4f 4d 20  SELECT sql FROM 
1dc0: 73 71 6c 69 74 65 5f 74 65 6d 70 5f 6d 61 73 74  sqlite_temp_mast
1dd0: 65 72 3b 0a 20 20 53 45 4c 45 43 54 20 73 71 6c  er;.  SELECT sql
1de0: 20 46 52 4f 4d 20 73 71 6c 69 74 65 5f 6d 61 73   FROM sqlite_mas
1df0: 74 65 72 20 57 48 45 52 45 20 74 79 70 65 3d 27  ter WHERE type='
1e00: 74 72 69 67 67 65 72 27 3b 0a 7d 20 7b 0a 20 20  trigger';.} {.  
1e10: 7b 43 52 45 41 54 45 20 54 52 49 47 47 45 52 20  {CREATE TRIGGER 
1e20: 74 72 20 41 46 54 45 52 20 49 4e 53 45 52 54 20  tr AFTER INSERT 
1e30: 4f 4e 20 61 75 78 2e 74 31 20 42 45 47 49 4e 20  ON aux.t1 BEGIN 
1e40: 53 45 4c 45 43 54 20 31 2c 20 32 2c 20 33 3b 20  SELECT 1, 2, 3; 
1e50: 45 4e 44 7d 0a 20 20 7b 43 52 45 41 54 45 20 54  END}.  {CREATE T
1e60: 52 49 47 47 45 52 20 74 72 20 41 46 54 45 52 20  RIGGER tr AFTER 
1e70: 49 4e 53 45 52 54 20 4f 4e 20 22 74 33 22 20 57  INSERT ON "t3" W
1e80: 48 45 4e 20 6e 65 77 2e 61 20 49 53 20 4e 55 4c  HEN new.a IS NUL
1e90: 4c 20 42 45 47 49 4e 20 53 45 4c 45 43 54 20 31  L BEGIN SELECT 1
1ea0: 2c 20 32 2c 20 33 3b 20 45 4e 44 7d 0a 7d 0a 0a  , 2, 3; END}.}..
1eb0: 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  #---------------
1ec0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1ed0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1ee0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1ef0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 72 65 73 65 74  ----------.reset
1f00: 5f 64 62 0a 69 66 63 61 70 61 62 6c 65 20 66 74  _db.ifcapable ft
1f10: 73 35 20 7b 0a 20 20 64 6f 5f 65 78 65 63 73 71  s5 {.  do_execsq
1f20: 6c 5f 74 65 73 74 20 31 30 2e 30 20 7b 0a 20 20  l_test 10.0 {.  
1f30: 20 20 43 52 45 41 54 45 20 56 49 52 54 55 41 4c    CREATE VIRTUAL
1f40: 20 54 41 42 4c 45 20 66 66 66 20 55 53 49 4e 47   TABLE fff USING
1f50: 20 66 74 73 35 28 78 2c 20 79 2c 20 7a 29 3b 0a   fts5(x, y, z);.
1f60: 20 20 7d 0a 0a 20 20 64 6f 5f 65 78 65 63 73 71    }..  do_execsq
1f70: 6c 5f 74 65 73 74 20 31 30 2e 31 20 7b 0a 20 20  l_test 10.1 {.  
1f80: 20 20 42 45 47 49 4e 3b 0a 20 20 20 20 20 20 49    BEGIN;.      I
1f90: 4e 53 45 52 54 20 49 4e 54 4f 20 66 66 66 20 56  NSERT INTO fff V
1fa0: 41 4c 55 45 53 28 27 61 27 2c 20 27 62 27 2c 20  ALUES('a', 'b', 
1fb0: 27 63 27 29 3b 0a 20 20 20 20 20 20 41 4c 54 45  'c');.      ALTE
1fc0: 52 20 54 41 42 4c 45 20 66 66 66 20 52 45 4e 41  R TABLE fff RENA
1fd0: 4d 45 20 54 4f 20 67 67 67 3b 0a 20 20 20 20 43  ME TO ggg;.    C
1fe0: 4f 4d 4d 49 54 3b 0a 20 20 7d 0a 0a 20 20 64 6f  OMMIT;.  }..  do
1ff0: 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 31 30  _execsql_test 10
2000: 2e 32 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  .2 {.    SELECT 
2010: 2a 20 46 52 4f 4d 20 67 67 67 3b 0a 20 20 7d 20  * FROM ggg;.  } 
2020: 7b 61 20 62 20 63 7d 0a 7d 0a 0a 23 2d 2d 2d 2d  {a b c}.}..#----
2030: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2040: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2050: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2060: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2070: 2d 2d 2d 2d 2d 0a 72 65 73 65 74 5f 64 62 0a 66  -----.reset_db.f
2080: 6f 72 63 65 64 65 6c 65 74 65 20 74 65 73 74 2e  orcedelete test.
2090: 64 62 32 0a 64 62 20 66 75 6e 63 20 74 72 69 67  db2.db func trig
20a0: 67 65 72 20 74 72 69 67 67 65 72 0a 73 65 74 20  ger trigger.set 
20b0: 3a 3a 74 72 69 67 67 65 72 20 5b 6c 69 73 74 5d  ::trigger [list]
20c0: 0a 70 72 6f 63 20 74 72 69 67 67 65 72 20 7b 61  .proc trigger {a
20d0: 72 67 73 7d 20 7b 0a 20 20 6c 61 70 70 65 6e 64  rgs} {.  lappend
20e0: 20 3a 3a 74 72 69 67 67 65 72 20 24 61 72 67 73   ::trigger $args
20f0: 0a 7d 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65  .}.do_execsql_te
2100: 73 74 20 31 31 2e 30 20 7b 0a 20 20 41 54 54 41  st 11.0 {.  ATTA
2110: 43 48 20 27 74 65 73 74 2e 64 62 32 27 20 41 53  CH 'test.db2' AS
2120: 20 61 75 78 3b 0a 20 20 43 52 45 41 54 45 20 54   aux;.  CREATE T
2130: 41 42 4c 45 20 61 75 78 2e 74 31 28 61 2c 20 62  ABLE aux.t1(a, b
2140: 2c 20 63 29 3b 0a 20 20 43 52 45 41 54 45 20 54  , c);.  CREATE T
2150: 41 42 4c 45 20 6d 61 69 6e 2e 74 31 28 61 2c 20  ABLE main.t1(a, 
2160: 62 2c 20 63 29 3b 0a 20 20 43 52 45 41 54 45 20  b, c);.  CREATE 
2170: 54 45 4d 50 20 54 52 49 47 47 45 52 20 74 72 20  TEMP TRIGGER tr 
2180: 41 46 54 45 52 20 49 4e 53 45 52 54 20 4f 4e 20  AFTER INSERT ON 
2190: 61 75 78 2e 74 31 20 42 45 47 49 4e 0a 20 20 20  aux.t1 BEGIN.   
21a0: 20 53 45 4c 45 43 54 20 74 72 69 67 67 65 72 28   SELECT trigger(
21b0: 6e 65 77 2e 61 2c 20 6e 65 77 2e 62 2c 20 6e 65  new.a, new.b, ne
21c0: 77 2e 63 29 3b 0a 20 20 45 4e 44 3b 0a 7d 0a 0a  w.c);.  END;.}..
21d0: 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20  do_execsql_test 
21e0: 31 31 2e 31 20 7b 0a 20 20 49 4e 53 45 52 54 20  11.1 {.  INSERT 
21f0: 49 4e 54 4f 20 6d 61 69 6e 2e 74 31 20 56 41 4c  INTO main.t1 VAL
2200: 55 45 53 28 31 2c 20 32 2c 20 33 29 3b 0a 20 20  UES(1, 2, 3);.  
2210: 49 4e 53 45 52 54 20 49 4e 54 4f 20 61 75 78 2e  INSERT INTO aux.
2220: 74 31 20 56 41 4c 55 45 53 28 34 2c 20 35 2c 20  t1 VALUES(4, 5, 
2230: 36 29 3b 0a 7d 0a 64 6f 5f 74 65 73 74 20 31 31  6);.}.do_test 11
2240: 2e 32 20 7b 20 73 65 74 20 3a 3a 74 72 69 67 67  .2 { set ::trigg
2250: 65 72 20 7d 20 7b 7b 34 20 35 20 36 7d 7d 0a 0a  er } {{4 5 6}}..
2260: 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20  do_execsql_test 
2270: 31 31 2e 33 20 7b 0a 20 20 53 45 4c 45 43 54 20  11.3 {.  SELECT 
2280: 6e 61 6d 65 2c 20 74 62 6c 5f 6e 61 6d 65 20 46  name, tbl_name F
2290: 52 4f 4d 20 73 71 6c 69 74 65 5f 74 65 6d 70 5f  ROM sqlite_temp_
22a0: 6d 61 73 74 65 72 3b 0a 7d 20 7b 74 72 20 74 31  master;.} {tr t1
22b0: 7d 0a 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65  }..do_execsql_te
22c0: 73 74 20 31 31 2e 34 20 7b 0a 20 20 41 4c 54 45  st 11.4 {.  ALTE
22d0: 52 20 54 41 42 4c 45 20 6d 61 69 6e 2e 74 31 20  R TABLE main.t1 
22e0: 52 45 4e 41 4d 45 20 54 4f 20 74 32 3b 0a 20 20  RENAME TO t2;.  
22f0: 53 45 4c 45 43 54 20 6e 61 6d 65 2c 20 74 62 6c  SELECT name, tbl
2300: 5f 6e 61 6d 65 20 46 52 4f 4d 20 73 71 6c 69 74  _name FROM sqlit
2310: 65 5f 74 65 6d 70 5f 6d 61 73 74 65 72 3b 0a 7d  e_temp_master;.}
2320: 20 7b 74 72 20 74 31 7d 0a 0a 64 6f 5f 65 78 65   {tr t1}..do_exe
2330: 63 73 71 6c 5f 74 65 73 74 20 31 31 2e 35 20 7b  csql_test 11.5 {
2340: 0a 20 20 41 4c 54 45 52 20 54 41 42 4c 45 20 61  .  ALTER TABLE a
2350: 75 78 2e 74 31 20 52 45 4e 41 4d 45 20 54 4f 20  ux.t1 RENAME TO 
2360: 74 32 3b 0a 20 20 53 45 4c 45 43 54 20 6e 61 6d  t2;.  SELECT nam
2370: 65 2c 20 74 62 6c 5f 6e 61 6d 65 20 46 52 4f 4d  e, tbl_name FROM
2380: 20 73 71 6c 69 74 65 5f 74 65 6d 70 5f 6d 61 73   sqlite_temp_mas
2390: 74 65 72 3b 0a 7d 20 7b 74 72 20 74 32 7d 0a 0a  ter;.} {tr t2}..
23a0: 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20  do_execsql_test 
23b0: 31 31 2e 36 20 7b 0a 20 20 49 4e 53 45 52 54 20  11.6 {.  INSERT 
23c0: 49 4e 54 4f 20 61 75 78 2e 74 32 20 56 41 4c 55  INTO aux.t2 VALU
23d0: 45 53 28 37 2c 20 38 2c 20 39 29 3b 0a 7d 0a 64  ES(7, 8, 9);.}.d
23e0: 6f 5f 74 65 73 74 20 31 31 2e 37 20 7b 20 73 65  o_test 11.7 { se
23f0: 74 20 3a 3a 74 72 69 67 67 65 72 20 7d 20 7b 7b  t ::trigger } {{
2400: 34 20 35 20 36 7d 20 7b 37 20 38 20 39 7d 7d 0a  4 5 6} {7 8 9}}.
2410: 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  .#--------------
2420: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2430: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2440: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2450: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 72 65 73 65  -----------.rese
2460: 74 5f 64 62 0a 64 6f 5f 65 78 65 63 73 71 6c 5f  t_db.do_execsql_
2470: 74 65 73 74 20 31 32 2e 30 20 7b 0a 20 20 43 52  test 12.0 {.  CR
2480: 45 41 54 45 20 54 41 42 4c 45 20 74 31 28 61 29  EATE TABLE t1(a)
2490: 3b 0a 20 20 43 52 45 41 54 45 20 54 41 42 4c 45  ;.  CREATE TABLE
24a0: 20 74 32 28 77 29 3b 0a 20 20 43 52 45 41 54 45   t2(w);.  CREATE
24b0: 20 54 52 49 47 47 45 52 20 74 65 6d 70 2e 72 31   TRIGGER temp.r1
24c0: 20 41 46 54 45 52 20 49 4e 53 45 52 54 20 4f 4e   AFTER INSERT ON
24d0: 20 6d 61 69 6e 2e 74 32 20 42 45 47 49 4e 0a 20   main.t2 BEGIN. 
24e0: 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74     INSERT INTO t
24f0: 31 28 61 29 20 56 41 4c 55 45 53 28 6e 65 77 2e  1(a) VALUES(new.
2500: 77 29 3b 0a 20 20 45 4e 44 3b 0a 20 20 43 52 45  w);.  END;.  CRE
2510: 41 54 45 20 54 45 4d 50 20 54 41 42 4c 45 20 74  ATE TEMP TABLE t
2520: 32 28 78 29 3b 0a 7d 0a 0a 64 6f 5f 65 78 65 63  2(x);.}..do_exec
2530: 73 71 6c 5f 74 65 73 74 20 31 32 2e 31 20 7b 0a  sql_test 12.1 {.
2540: 20 20 41 4c 54 45 52 20 54 41 42 4c 45 20 6d 61    ALTER TABLE ma
2550: 69 6e 2e 74 32 20 52 45 4e 41 4d 45 20 54 4f 20  in.t2 RENAME TO 
2560: 74 33 3b 0a 7d 0a 0a 64 6f 5f 65 78 65 63 73 71  t3;.}..do_execsq
2570: 6c 5f 74 65 73 74 20 31 32 2e 32 20 7b 0a 20 20  l_test 12.2 {.  
2580: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 33 20 56  INSERT INTO t3 V
2590: 41 4c 55 45 53 28 27 57 57 57 27 29 3b 0a 20 20  ALUES('WWW');.  
25a0: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31  SELECT * FROM t1
25b0: 3b 0a 7d 20 7b 57 57 57 7d 0a 0a 66 69 6e 69 73  ;.} {WWW}..finis
25c0: 68 5f 74 65 73 74 0a 0a                          h_test..