/ Hex Artifact Content
Login

Artifact 72ea6056811fd234f80d923f977c196089947381:


0000: 23 20 32 30 30 35 20 4a 61 6e 75 61 72 79 20 31  # 2005 January 1
0010: 33 0a 23 0a 23 20 54 68 65 20 61 75 74 68 6f 72  3.#.# The author
0020: 20 64 69 73 63 6c 61 69 6d 73 20 63 6f 70 79 72   disclaims copyr
0030: 69 67 68 74 20 74 6f 20 74 68 69 73 20 73 6f 75  ight to this sou
0040: 72 63 65 20 63 6f 64 65 2e 20 20 49 6e 20 70 6c  rce code.  In pl
0050: 61 63 65 20 6f 66 0a 23 20 61 20 6c 65 67 61 6c  ace of.# a legal
0060: 20 6e 6f 74 69 63 65 2c 20 68 65 72 65 20 69 73   notice, here is
0070: 20 61 20 62 6c 65 73 73 69 6e 67 3a 0a 23 0a 23   a blessing:.#.#
0080: 20 20 20 20 4d 61 79 20 79 6f 75 20 64 6f 20 67      May you do g
0090: 6f 6f 64 20 61 6e 64 20 6e 6f 74 20 65 76 69 6c  ood and not evil
00a0: 2e 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20 66  ..#    May you f
00b0: 69 6e 64 20 66 6f 72 67 69 76 65 6e 65 73 73 20  ind forgiveness 
00c0: 66 6f 72 20 79 6f 75 72 73 65 6c 66 20 61 6e 64  for yourself and
00d0: 20 66 6f 72 67 69 76 65 20 6f 74 68 65 72 73 2e   forgive others.
00e0: 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20 73 68  .#    May you sh
00f0: 61 72 65 20 66 72 65 65 6c 79 2c 20 6e 65 76 65  are freely, neve
0100: 72 20 74 61 6b 69 6e 67 20 6d 6f 72 65 20 74 68  r taking more th
0110: 61 6e 20 79 6f 75 20 67 69 76 65 2e 0a 23 0a 23  an 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 0a 23 20 54 68 69 73 20 66  *******.# This f
0170: 69 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 73 20 72  ile implements r
0180: 65 67 72 65 73 73 69 6f 6e 20 74 65 73 74 73 20  egression tests 
0190: 66 6f 72 20 53 51 4c 69 74 65 20 6c 69 62 72 61  for SQLite libra
01a0: 72 79 2e 20 20 54 68 65 0a 23 20 66 6f 63 75 73  ry.  The.# focus
01b0: 20 6f 66 20 74 68 69 73 20 66 69 6c 65 20 69 73   of this file is
01c0: 20 74 65 73 74 69 6e 67 20 63 6f 72 6e 65 72 20   testing corner 
01d0: 63 61 73 65 73 20 6f 66 20 74 68 65 20 49 4e 53  cases of the INS
01e0: 45 52 54 20 73 74 61 74 65 6d 65 6e 74 2e 0a 23  ERT statement..#
01f0: 0a 23 20 24 49 64 3a 20 69 6e 73 65 72 74 33 2e  .# $Id: insert3.
0200: 74 65 73 74 2c 76 20 31 2e 36 20 32 30 30 37 2f  test,v 1.6 2007/
0210: 30 34 2f 31 36 20 31 37 3a 30 37 3a 35 35 20 64  04/16 17:07:55 d
0220: 72 68 20 45 78 70 20 24 0a 0a 73 65 74 20 74 65  rh Exp $..set te
0230: 73 74 64 69 72 20 5b 66 69 6c 65 20 64 69 72 6e  stdir [file dirn
0240: 61 6d 65 20 24 61 72 67 76 30 5d 0a 73 6f 75 72  ame $argv0].sour
0250: 63 65 20 24 74 65 73 74 64 69 72 2f 74 65 73 74  ce $testdir/test
0260: 65 72 2e 74 63 6c 0a 0a 23 20 41 6c 6c 20 74 68  er.tcl..# All th
0270: 65 20 74 65 73 74 73 20 69 6e 20 74 68 69 73 20  e tests in this 
0280: 66 69 6c 65 20 72 65 71 75 69 72 65 20 74 72 69  file require tri
0290: 67 67 65 72 20 73 75 70 70 6f 72 74 0a 23 0a 69  gger support.#.i
02a0: 66 63 61 70 61 62 6c 65 20 7b 74 72 69 67 67 65  fcapable {trigge
02b0: 72 7d 20 7b 0a 0a 23 20 43 72 65 61 74 65 20 61  r} {..# Create a
02c0: 20 74 61 62 6c 65 20 61 6e 64 20 61 20 63 6f 72   table and a cor
02d0: 72 65 73 70 6f 6e 64 69 6e 67 20 69 6e 73 65 72  responding inser
02e0: 74 20 74 72 69 67 67 65 72 2e 20 20 44 6f 20 61  t trigger.  Do a
02f0: 20 73 65 6c 66 2d 69 6e 73 65 72 74 0a 23 20 69   self-insert.# i
0300: 6e 74 6f 20 74 68 65 20 74 61 62 6c 65 2e 0a 23  nto the table..#
0310: 0a 64 6f 5f 74 65 73 74 20 69 6e 73 65 72 74 33  .do_test insert3
0320: 2d 31 2e 30 20 7b 0a 20 20 65 78 65 63 73 71 6c  -1.0 {.  execsql
0330: 20 7b 0a 20 20 20 20 43 52 45 41 54 45 20 54 41   {.    CREATE TA
0340: 42 4c 45 20 74 31 28 61 2c 62 29 3b 0a 20 20 20  BLE t1(a,b);.   
0350: 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 6c 6f   CREATE TABLE lo
0360: 67 28 78 20 55 4e 49 51 55 45 2c 20 79 29 3b 0a  g(x UNIQUE, y);.
0370: 20 20 20 20 43 52 45 41 54 45 20 54 52 49 47 47      CREATE TRIGG
0380: 45 52 20 72 31 20 41 46 54 45 52 20 49 4e 53 45  ER r1 AFTER INSE
0390: 52 54 20 4f 4e 20 74 31 20 42 45 47 49 4e 0a 20  RT ON t1 BEGIN. 
03a0: 20 20 20 20 20 55 50 44 41 54 45 20 6c 6f 67 20       UPDATE log 
03b0: 53 45 54 20 79 3d 79 2b 31 20 57 48 45 52 45 20  SET y=y+1 WHERE 
03c0: 78 3d 6e 65 77 2e 61 3b 0a 20 20 20 20 20 20 49  x=new.a;.      I
03d0: 4e 53 45 52 54 20 4f 52 20 49 47 4e 4f 52 45 20  NSERT OR IGNORE 
03e0: 49 4e 54 4f 20 6c 6f 67 20 56 41 4c 55 45 53 28  INTO log VALUES(
03f0: 6e 65 77 2e 61 2c 20 31 29 3b 0a 20 20 20 20 45  new.a, 1);.    E
0400: 4e 44 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49  ND;.    INSERT I
0410: 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28 27 68  NTO t1 VALUES('h
0420: 65 6c 6c 6f 27 2c 27 77 6f 72 6c 64 27 29 3b 0a  ello','world');.
0430: 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20      INSERT INTO 
0440: 74 31 20 56 41 4c 55 45 53 28 35 2c 31 30 29 3b  t1 VALUES(5,10);
0450: 0a 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52  .    SELECT * FR
0460: 4f 4d 20 6c 6f 67 20 4f 52 44 45 52 20 42 59 20  OM log ORDER BY 
0470: 78 3b 0a 20 20 7d 0a 7d 20 7b 35 20 31 20 68 65  x;.  }.} {5 1 he
0480: 6c 6c 6f 20 31 7d 0a 64 6f 5f 74 65 73 74 20 69  llo 1}.do_test i
0490: 6e 73 65 72 74 33 2d 31 2e 31 20 7b 0a 20 20 65  nsert3-1.1 {.  e
04a0: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 49 4e 53  xecsql {.    INS
04b0: 45 52 54 20 49 4e 54 4f 20 74 31 20 53 45 4c 45  ERT INTO t1 SELE
04c0: 43 54 20 61 2c 20 62 2b 31 30 20 46 52 4f 4d 20  CT a, b+10 FROM 
04d0: 74 31 3b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a  t1;.    SELECT *
04e0: 20 46 52 4f 4d 20 6c 6f 67 20 4f 52 44 45 52 20   FROM log ORDER 
04f0: 42 59 20 78 3b 0a 20 20 7d 0a 7d 20 7b 35 20 32  BY x;.  }.} {5 2
0500: 20 68 65 6c 6c 6f 20 32 7d 0a 64 6f 5f 74 65 73   hello 2}.do_tes
0510: 74 20 69 6e 73 65 72 74 33 2d 31 2e 32 20 7b 0a  t insert3-1.2 {.
0520: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
0530: 43 52 45 41 54 45 20 54 41 42 4c 45 20 6c 6f 67  CREATE TABLE log
0540: 32 28 78 20 50 52 49 4d 41 52 59 20 4b 45 59 2c  2(x PRIMARY KEY,
0550: 79 29 3b 0a 20 20 20 20 43 52 45 41 54 45 20 54  y);.    CREATE T
0560: 52 49 47 47 45 52 20 72 32 20 42 45 46 4f 52 45  RIGGER r2 BEFORE
0570: 20 49 4e 53 45 52 54 20 4f 4e 20 74 31 20 42 45   INSERT ON t1 BE
0580: 47 49 4e 0a 20 20 20 20 20 20 55 50 44 41 54 45  GIN.      UPDATE
0590: 20 6c 6f 67 32 20 53 45 54 20 79 3d 79 2b 31 20   log2 SET y=y+1 
05a0: 57 48 45 52 45 20 78 3d 6e 65 77 2e 62 3b 0a 20  WHERE x=new.b;. 
05b0: 20 20 20 20 20 49 4e 53 45 52 54 20 4f 52 20 49       INSERT OR I
05c0: 47 4e 4f 52 45 20 49 4e 54 4f 20 6c 6f 67 32 20  GNORE INTO log2 
05d0: 56 41 4c 55 45 53 28 6e 65 77 2e 62 2c 31 29 3b  VALUES(new.b,1);
05e0: 0a 20 20 20 20 45 4e 44 3b 0a 20 20 20 20 49 4e  .    END;.    IN
05f0: 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c  SERT INTO t1 VAL
0600: 55 45 53 28 34 35 33 2c 27 68 69 27 29 3b 0a 20  UES(453,'hi');. 
0610: 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d     SELECT * FROM
0620: 20 6c 6f 67 20 4f 52 44 45 52 20 42 59 20 78 3b   log ORDER BY x;
0630: 0a 20 20 7d 0a 7d 20 7b 35 20 32 20 34 35 33 20  .  }.} {5 2 453 
0640: 31 20 68 65 6c 6c 6f 20 32 7d 0a 64 6f 5f 74 65  1 hello 2}.do_te
0650: 73 74 20 69 6e 73 65 72 74 33 2d 31 2e 33 20 7b  st insert3-1.3 {
0660: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
0670: 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 6c   SELECT * FROM l
0680: 6f 67 32 20 4f 52 44 45 52 20 42 59 20 78 3b 0a  og2 ORDER BY x;.
0690: 20 20 7d 0a 7d 20 7b 68 69 20 31 7d 0a 69 66 63    }.} {hi 1}.ifc
06a0: 61 70 61 62 6c 65 20 63 6f 6d 70 6f 75 6e 64 20  apable compound 
06b0: 7b 0a 20 20 64 6f 5f 74 65 73 74 20 69 6e 73 65  {.  do_test inse
06c0: 72 74 33 2d 31 2e 34 2e 31 20 7b 0a 20 20 20 20  rt3-1.4.1 {.    
06d0: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 20 20  execsql {.      
06e0: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 53  INSERT INTO t1 S
06f0: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 3b  ELECT * FROM t1;
0700: 0a 20 20 20 20 20 20 53 45 4c 45 43 54 20 27 61  .      SELECT 'a
0710: 3a 27 2c 20 78 2c 20 79 20 46 52 4f 4d 20 6c 6f  :', x, y FROM lo
0720: 67 20 55 4e 49 4f 4e 20 41 4c 4c 20 0a 20 20 20  g UNION ALL .   
0730: 20 20 20 20 20 20 20 53 45 4c 45 43 54 20 27 62         SELECT 'b
0740: 3a 27 2c 20 78 2c 20 79 20 46 52 4f 4d 20 6c 6f  :', x, y FROM lo
0750: 67 32 20 4f 52 44 45 52 20 42 59 20 78 3b 0a 20  g2 ORDER BY x;. 
0760: 20 20 20 7d 0a 20 20 7d 20 7b 61 3a 20 35 20 34     }.  } {a: 5 4
0770: 20 62 3a 20 31 30 20 32 20 62 3a 20 32 30 20 31   b: 10 2 b: 20 1
0780: 20 61 3a 20 34 35 33 20 32 20 61 3a 20 68 65 6c   a: 453 2 a: hel
0790: 6c 6f 20 34 20 62 3a 20 68 69 20 32 20 62 3a 20  lo 4 b: hi 2 b: 
07a0: 77 6f 72 6c 64 20 31 7d 0a 20 20 64 6f 5f 74 65  world 1}.  do_te
07b0: 73 74 20 69 6e 73 65 72 74 33 2d 31 2e 34 2e 32  st insert3-1.4.2
07c0: 20 7b 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b   {.    execsql {
07d0: 0a 20 20 20 20 20 20 53 45 4c 45 43 54 20 27 61  .      SELECT 'a
07e0: 3a 27 2c 20 78 2c 20 79 20 46 52 4f 4d 20 6c 6f  :', x, y FROM lo
07f0: 67 20 55 4e 49 4f 4e 20 41 4c 4c 20 0a 20 20 20  g UNION ALL .   
0800: 20 20 20 20 20 20 20 53 45 4c 45 43 54 20 27 62         SELECT 'b
0810: 3a 27 2c 20 78 2c 20 79 20 46 52 4f 4d 20 6c 6f  :', x, y FROM lo
0820: 67 32 20 4f 52 44 45 52 20 42 59 20 78 2c 20 79  g2 ORDER BY x, y
0830: 3b 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 61 3a 20  ;.    }.  } {a: 
0840: 35 20 34 20 62 3a 20 31 30 20 32 20 62 3a 20 32  5 4 b: 10 2 b: 2
0850: 30 20 31 20 61 3a 20 34 35 33 20 32 20 61 3a 20  0 1 a: 453 2 a: 
0860: 68 65 6c 6c 6f 20 34 20 62 3a 20 68 69 20 32 20  hello 4 b: hi 2 
0870: 62 3a 20 77 6f 72 6c 64 20 31 7d 0a 20 20 64 6f  b: world 1}.  do
0880: 5f 74 65 73 74 20 69 6e 73 65 72 74 33 2d 31 2e  _test insert3-1.
0890: 35 20 7b 0a 20 20 20 20 65 78 65 63 73 71 6c 20  5 {.    execsql 
08a0: 7b 0a 20 20 20 20 20 20 49 4e 53 45 52 54 20 49  {.      INSERT I
08b0: 4e 54 4f 20 74 31 28 61 29 20 56 41 4c 55 45 53  NTO t1(a) VALUES
08c0: 28 27 78 79 7a 27 29 3b 0a 20 20 20 20 20 20 53  ('xyz');.      S
08d0: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 6c 6f 67  ELECT * FROM log
08e0: 20 4f 52 44 45 52 20 42 59 20 78 3b 0a 20 20 20   ORDER BY x;.   
08f0: 20 7d 0a 20 20 7d 20 7b 35 20 34 20 34 35 33 20   }.  } {5 4 453 
0900: 32 20 68 65 6c 6c 6f 20 34 20 78 79 7a 20 31 7d  2 hello 4 xyz 1}
0910: 0a 7d 0a 0a 64 6f 5f 74 65 73 74 20 69 6e 73 65  .}..do_test inse
0920: 72 74 33 2d 32 2e 31 20 7b 0a 20 20 65 78 65 63  rt3-2.1 {.  exec
0930: 73 71 6c 20 7b 0a 20 20 20 20 43 52 45 41 54 45  sql {.    CREATE
0940: 20 54 41 42 4c 45 20 74 32 28 0a 20 20 20 20 20   TABLE t2(.     
0950: 20 61 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41   a INTEGER PRIMA
0960: 52 59 20 4b 45 59 2c 0a 20 20 20 20 20 20 62 20  RY KEY,.      b 
0970: 44 45 46 41 55 4c 54 20 27 62 27 2c 0a 20 20 20  DEFAULT 'b',.   
0980: 20 20 20 63 20 44 45 46 41 55 4c 54 20 27 63 27     c DEFAULT 'c'
0990: 0a 20 20 20 20 29 3b 0a 20 20 20 20 43 52 45 41  .    );.    CREA
09a0: 54 45 20 54 41 42 4c 45 20 74 32 64 75 70 28 61  TE TABLE t2dup(a
09b0: 2c 62 2c 63 29 3b 0a 20 20 20 20 43 52 45 41 54  ,b,c);.    CREAT
09c0: 45 20 54 52 49 47 47 45 52 20 74 32 72 31 20 42  E TRIGGER t2r1 B
09d0: 45 46 4f 52 45 20 49 4e 53 45 52 54 20 4f 4e 20  EFORE INSERT ON 
09e0: 74 32 20 42 45 47 49 4e 0a 20 20 20 20 20 20 49  t2 BEGIN.      I
09f0: 4e 53 45 52 54 20 49 4e 54 4f 20 74 32 64 75 70  NSERT INTO t2dup
0a00: 28 61 2c 62 2c 63 29 20 56 41 4c 55 45 53 28 6e  (a,b,c) VALUES(n
0a10: 65 77 2e 61 2c 6e 65 77 2e 62 2c 6e 65 77 2e 63  ew.a,new.b,new.c
0a20: 29 3b 0a 20 20 20 20 45 4e 44 3b 0a 20 20 20 20  );.    END;.    
0a30: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 32 28 61  INSERT INTO t2(a
0a40: 29 20 56 41 4c 55 45 53 28 31 32 33 29 3b 0a 20  ) VALUES(123);. 
0a50: 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74     INSERT INTO t
0a60: 32 28 62 29 20 56 41 4c 55 45 53 28 32 33 34 29  2(b) VALUES(234)
0a70: 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54  ;.    INSERT INT
0a80: 4f 20 74 32 28 63 29 20 56 41 4c 55 45 53 28 33  O t2(c) VALUES(3
0a90: 34 35 29 3b 0a 20 20 20 20 53 45 4c 45 43 54 20  45);.    SELECT 
0aa0: 2a 20 46 52 4f 4d 20 74 32 64 75 70 3b 0a 20 20  * FROM t2dup;.  
0ab0: 7d 0a 7d 20 7b 31 32 33 20 62 20 63 20 2d 31 20  }.} {123 b c -1 
0ac0: 32 33 34 20 63 20 2d 31 20 62 20 33 34 35 7d 0a  234 c -1 b 345}.
0ad0: 64 6f 5f 74 65 73 74 20 69 6e 73 65 72 74 33 2d  do_test insert3-
0ae0: 32 2e 32 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  2.2 {.  execsql 
0af0: 7b 0a 20 20 20 20 44 45 4c 45 54 45 20 46 52 4f  {.    DELETE FRO
0b00: 4d 20 74 32 64 75 70 3b 0a 20 20 20 20 49 4e 53  M t2dup;.    INS
0b10: 45 52 54 20 49 4e 54 4f 20 74 32 28 61 29 20 53  ERT INTO t2(a) S
0b20: 45 4c 45 43 54 20 31 20 46 52 4f 4d 20 74 31 20  ELECT 1 FROM t1 
0b30: 4c 49 4d 49 54 20 31 3b 0a 20 20 20 20 49 4e 53  LIMIT 1;.    INS
0b40: 45 52 54 20 49 4e 54 4f 20 74 32 28 62 29 20 53  ERT INTO t2(b) S
0b50: 45 4c 45 43 54 20 39 38 37 20 46 52 4f 4d 20 74  ELECT 987 FROM t
0b60: 31 20 4c 49 4d 49 54 20 31 3b 0a 20 20 20 20 49  1 LIMIT 1;.    I
0b70: 4e 53 45 52 54 20 49 4e 54 4f 20 74 32 28 63 29  NSERT INTO t2(c)
0b80: 20 53 45 4c 45 43 54 20 38 37 36 20 46 52 4f 4d   SELECT 876 FROM
0b90: 20 74 31 20 4c 49 4d 49 54 20 31 3b 0a 20 20 20   t1 LIMIT 1;.   
0ba0: 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74   SELECT * FROM t
0bb0: 32 64 75 70 3b 0a 20 20 7d 0a 7d 20 7b 31 20 62  2dup;.  }.} {1 b
0bc0: 20 63 20 2d 31 20 39 38 37 20 63 20 2d 31 20 62   c -1 987 c -1 b
0bd0: 20 38 37 36 7d 0a 0a 23 20 54 65 73 74 20 66 6f   876}..# Test fo
0be0: 72 20 70 72 6f 70 65 72 20 64 65 74 65 63 74 69  r proper detecti
0bf0: 6f 6e 20 6f 66 20 6d 61 6c 66 6f 72 6d 65 64 20  on of malformed 
0c00: 57 48 45 4e 20 63 6c 61 75 73 65 73 20 6f 6e 20  WHEN clauses on 
0c10: 49 4e 53 45 52 54 20 74 72 69 67 67 65 72 73 2e  INSERT triggers.
0c20: 0a 23 0a 64 6f 5f 74 65 73 74 20 69 6e 73 65 72  .#.do_test inser
0c30: 74 33 2d 33 2e 31 20 7b 0a 20 20 65 78 65 63 73  t3-3.1 {.  execs
0c40: 71 6c 20 7b 0a 20 20 20 20 43 52 45 41 54 45 20  ql {.    CREATE 
0c50: 54 41 42 4c 45 20 74 33 28 61 2c 62 2c 63 29 3b  TABLE t3(a,b,c);
0c60: 0a 20 20 20 20 43 52 45 41 54 45 20 54 52 49 47  .    CREATE TRIG
0c70: 47 45 52 20 74 33 72 31 20 42 45 46 4f 52 45 20  GER t3r1 BEFORE 
0c80: 49 4e 53 45 52 54 20 6f 6e 20 74 33 20 57 48 45  INSERT on t3 WHE
0c90: 4e 20 6e 6f 73 75 63 68 63 6f 6c 20 42 45 47 49  N nosuchcol BEGI
0ca0: 4e 0a 20 20 20 20 20 20 53 45 4c 45 43 54 20 27  N.      SELECT '
0cb0: 69 6c 6c 65 67 61 6c 20 57 48 45 4e 20 63 6c 61  illegal WHEN cla
0cc0: 75 73 65 27 3b 0a 20 20 20 20 45 4e 44 3b 0a 20  use';.    END;. 
0cd0: 20 7d 0a 7d 20 7b 7d 0a 64 6f 5f 74 65 73 74 20   }.} {}.do_test 
0ce0: 69 6e 73 65 72 74 33 2d 33 2e 32 20 7b 0a 20 20  insert3-3.2 {.  
0cf0: 63 61 74 63 68 73 71 6c 20 7b 0a 20 20 20 20 49  catchsql {.    I
0d00: 4e 53 45 52 54 20 49 4e 54 4f 20 74 33 20 56 41  NSERT INTO t3 VA
0d10: 4c 55 45 53 28 31 2c 32 2c 33 29 0a 20 20 7d 0a  LUES(1,2,3).  }.
0d20: 7d 20 7b 31 20 7b 6e 6f 20 73 75 63 68 20 63 6f  } {1 {no such co
0d30: 6c 75 6d 6e 3a 20 6e 6f 73 75 63 68 63 6f 6c 7d  lumn: nosuchcol}
0d40: 7d 0a 64 6f 5f 74 65 73 74 20 69 6e 73 65 72 74  }.do_test insert
0d50: 33 2d 33 2e 33 20 7b 0a 20 20 65 78 65 63 73 71  3-3.3 {.  execsq
0d60: 6c 20 7b 0a 20 20 20 20 43 52 45 41 54 45 20 54  l {.    CREATE T
0d70: 41 42 4c 45 20 74 34 28 61 2c 62 2c 63 29 3b 0a  ABLE t4(a,b,c);.
0d80: 20 20 20 20 43 52 45 41 54 45 20 54 52 49 47 47      CREATE TRIGG
0d90: 45 52 20 74 34 72 31 20 41 46 54 45 52 20 49 4e  ER t4r1 AFTER IN
0da0: 53 45 52 54 20 6f 6e 20 74 34 20 57 48 45 4e 20  SERT on t4 WHEN 
0db0: 6e 6f 73 75 63 68 63 6f 6c 20 42 45 47 49 4e 0a  nosuchcol BEGIN.
0dc0: 20 20 20 20 20 20 53 45 4c 45 43 54 20 27 69 6c        SELECT 'il
0dd0: 6c 65 67 61 6c 20 57 48 45 4e 20 63 6c 61 75 73  legal WHEN claus
0de0: 65 27 3b 0a 20 20 20 20 45 4e 44 3b 0a 20 20 7d  e';.    END;.  }
0df0: 0a 7d 20 7b 7d 0a 64 6f 5f 74 65 73 74 20 69 6e  .} {}.do_test in
0e00: 73 65 72 74 33 2d 33 2e 34 20 7b 0a 20 20 63 61  sert3-3.4 {.  ca
0e10: 74 63 68 73 71 6c 20 7b 0a 20 20 20 20 49 4e 53  tchsql {.    INS
0e20: 45 52 54 20 49 4e 54 4f 20 74 34 20 56 41 4c 55  ERT INTO t4 VALU
0e30: 45 53 28 31 2c 32 2c 33 29 0a 20 20 7d 0a 7d 20  ES(1,2,3).  }.} 
0e40: 7b 31 20 7b 6e 6f 20 73 75 63 68 20 63 6f 6c 75  {1 {no such colu
0e50: 6d 6e 3a 20 6e 6f 73 75 63 68 63 6f 6c 7d 7d 0a  mn: nosuchcol}}.
0e60: 0a 7d 20 3b 23 20 69 66 63 61 70 61 62 6c 65 20  .} ;# ifcapable 
0e70: 7b 74 72 69 67 67 65 72 7d 0a 0a 23 20 54 65 73  {trigger}..# Tes
0e80: 74 73 20 66 6f 72 20 74 68 65 20 49 4e 53 45 52  ts for the INSER
0e90: 54 20 49 4e 54 4f 20 2e 2e 2e 20 44 45 46 41 55  T INTO ... DEFAU
0ea0: 4c 54 20 56 41 4c 55 45 53 20 63 6f 6e 73 74 72  LT VALUES constr
0eb0: 75 63 74 0a 23 0a 64 6f 5f 74 65 73 74 20 69 6e  uct.#.do_test in
0ec0: 73 65 72 74 33 2d 33 2e 35 20 7b 0a 20 20 65 78  sert3-3.5 {.  ex
0ed0: 65 63 73 71 6c 20 7b 0a 20 20 20 20 43 52 45 41  ecsql {.    CREA
0ee0: 54 45 20 54 41 42 4c 45 20 74 35 28 0a 20 20 20  TE TABLE t5(.   
0ef0: 20 20 20 61 20 49 4e 54 45 47 45 52 20 50 52 49     a INTEGER PRI
0f00: 4d 41 52 59 20 4b 45 59 2c 0a 20 20 20 20 20 20  MARY KEY,.      
0f10: 62 20 44 45 46 41 55 4c 54 20 27 78 79 7a 27 0a  b DEFAULT 'xyz'.
0f20: 20 20 20 20 29 3b 0a 20 20 20 20 49 4e 53 45 52      );.    INSER
0f30: 54 20 49 4e 54 4f 20 74 35 20 44 45 46 41 55 4c  T INTO t5 DEFAUL
0f40: 54 20 56 41 4c 55 45 53 3b 0a 20 20 20 20 53 45  T VALUES;.    SE
0f50: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 35 3b 0a  LECT * FROM t5;.
0f60: 20 20 7d 0a 7d 20 7b 31 20 78 79 7a 7d 0a 64 6f    }.} {1 xyz}.do
0f70: 5f 74 65 73 74 20 69 6e 73 65 72 74 33 2d 33 2e  _test insert3-3.
0f80: 36 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  6 {.  execsql {.
0f90: 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20      INSERT INTO 
0fa0: 74 35 20 44 45 46 41 55 4c 54 20 56 41 4c 55 45  t5 DEFAULT VALUE
0fb0: 53 3b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a 20  S;.    SELECT * 
0fc0: 46 52 4f 4d 20 74 35 3b 0a 20 20 7d 0a 7d 20 7b  FROM t5;.  }.} {
0fd0: 31 20 78 79 7a 20 32 20 78 79 7a 7d 0a 64 6f 5f  1 xyz 2 xyz}.do_
0fe0: 74 65 73 74 20 69 6e 73 65 72 74 33 2d 33 2e 37  test insert3-3.7
0ff0: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
1000: 20 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20     CREATE TABLE 
1010: 74 36 28 78 2c 79 20 44 45 46 41 55 4c 54 20 34  t6(x,y DEFAULT 4
1020: 2e 33 2c 20 7a 20 44 45 46 41 55 4c 54 20 78 27  .3, z DEFAULT x'
1030: 36 38 36 39 27 29 3b 0a 20 20 20 20 49 4e 53 45  6869');.    INSE
1040: 52 54 20 49 4e 54 4f 20 74 36 20 44 45 46 41 55  RT INTO t6 DEFAU
1050: 4c 54 20 56 41 4c 55 45 53 3b 0a 20 20 20 20 53  LT VALUES;.    S
1060: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 36 3b  ELECT * FROM t6;
1070: 0a 20 20 7d 0a 7d 20 7b 7b 7d 20 34 2e 33 20 68  .  }.} {{} 4.3 h
1080: 69 7d 0a 64 62 20 63 6c 6f 73 65 0a 0a 66 69 6e  i}.db close..fin
1090: 69 73 68 5f 74 65 73 74 0a                       ish_test.