/ Hex Artifact Content
Login

Artifact 3965ae11cc9cf6e334f9d7d3c1e20bf8d56254b1:


0000: 23 20 32 30 31 34 2d 30 33 2d 30 34 0a 23 0a 23  # 2014-03-04.#.#
0010: 20 54 68 65 20 61 75 74 68 6f 72 20 64 69 73 63   The author disc
0020: 6c 61 69 6d 73 20 63 6f 70 79 72 69 67 68 74 20  laims copyright 
0030: 74 6f 20 74 68 69 73 20 73 6f 75 72 63 65 20 63  to this source c
0040: 6f 64 65 2e 20 20 49 6e 20 70 6c 61 63 65 20 6f  ode.  In place o
0050: 66 0a 23 20 61 20 6c 65 67 61 6c 20 6e 6f 74 69  f.# a legal noti
0060: 63 65 2c 20 68 65 72 65 20 69 73 20 61 20 62 6c  ce, here is a bl
0070: 65 73 73 69 6e 67 3a 0a 23 0a 23 20 20 20 20 4d  essing:.#.#    M
0080: 61 79 20 79 6f 75 20 64 6f 20 67 6f 6f 64 20 61  ay you do good a
0090: 6e 64 20 6e 6f 74 20 65 76 69 6c 2e 0a 23 20 20  nd not evil..#  
00a0: 20 20 4d 61 79 20 79 6f 75 20 66 69 6e 64 20 66    May you find f
00b0: 6f 72 67 69 76 65 6e 65 73 73 20 66 6f 72 20 79  orgiveness for y
00c0: 6f 75 72 73 65 6c 66 20 61 6e 64 20 66 6f 72 67  ourself and forg
00d0: 69 76 65 20 6f 74 68 65 72 73 2e 0a 23 20 20 20  ive others..#   
00e0: 20 4d 61 79 20 79 6f 75 20 73 68 61 72 65 20 66   May you share f
00f0: 72 65 65 6c 79 2c 20 6e 65 76 65 72 20 74 61 6b  reely, never tak
0100: 69 6e 67 20 6d 6f 72 65 20 74 68 61 6e 20 79 6f  ing more than yo
0110: 75 20 67 69 76 65 2e 0a 23 0a 23 2a 2a 2a 2a 2a  u 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 0a 23 0a 23 20 54 68 69 73 20 66 69 6c 65  **.#.# This file
0170: 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74 65 73 74   implements test
0180: 73 20 74 6f 20 76 65 72 69 66 79 20 74 68 61 74  s to verify that
0190: 20 74 69 63 6b 65 74 20 5b 34 65 66 37 65 33 63   ticket [4ef7e3c
01a0: 66 63 61 5d 20 68 61 73 20 62 65 65 6e 0a 23 20  fca] has been.# 
01b0: 66 69 78 65 64 2e 0a 23 0a 0a 73 65 74 20 74 65  fixed..#..set te
01c0: 73 74 64 69 72 20 5b 66 69 6c 65 20 64 69 72 6e  stdir [file dirn
01d0: 61 6d 65 20 24 61 72 67 76 30 5d 0a 73 6f 75 72  ame $argv0].sour
01e0: 63 65 20 24 74 65 73 74 64 69 72 2f 74 65 73 74  ce $testdir/test
01f0: 65 72 2e 74 63 6c 0a 73 65 74 20 74 65 73 74 70  er.tcl.set testp
0200: 72 65 66 69 78 20 74 6b 74 2d 34 65 66 37 65 33  refix tkt-4ef7e3
0210: 63 66 63 61 0a 0a 64 6f 5f 63 61 74 63 68 73 71  cfca..do_catchsq
0220: 6c 5f 74 65 73 74 20 31 2e 31 20 7b 0a 20 20 43  l_test 1.1 {.  C
0230: 52 45 41 54 45 20 54 41 42 4c 45 20 78 28 61 29  REATE TABLE x(a)
0240: 3b 0a 20 20 43 52 45 41 54 45 20 54 52 49 47 47  ;.  CREATE TRIGG
0250: 45 52 20 74 20 41 46 54 45 52 20 49 4e 53 45 52  ER t AFTER INSER
0260: 54 20 4f 4e 20 78 20 42 45 47 49 4e 0a 20 20 20  T ON x BEGIN.   
0270: 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 78   SELECT * FROM x
0280: 20 57 48 45 52 45 20 61 62 63 2e 61 20 3d 20 31   WHERE abc.a = 1
0290: 3b 0a 20 20 45 4e 44 3b 0a 20 20 49 4e 53 45 52  ;.  END;.  INSER
02a0: 54 20 49 4e 54 4f 20 78 20 56 41 4c 55 45 53 28  T INTO x VALUES(
02b0: 27 61 73 73 65 72 74 27 29 3b 0a 7d 20 7b 31 20  'assert');.} {1 
02c0: 7b 6e 6f 20 73 75 63 68 20 63 6f 6c 75 6d 6e 3a  {no such column:
02d0: 20 61 62 63 2e 61 7d 7d 0a 0a 72 65 73 65 74 5f   abc.a}}..reset_
02e0: 64 62 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65  db.do_execsql_te
02f0: 73 74 20 32 2e 31 20 7b 0a 20 20 43 52 45 41 54  st 2.1 {.  CREAT
0300: 45 20 54 41 42 4c 45 20 77 28 61 29 3b 0a 20 20  E TABLE w(a);.  
0310: 43 52 45 41 54 45 20 54 41 42 4c 45 20 78 28 61  CREATE TABLE x(a
0320: 29 3b 0a 20 20 43 52 45 41 54 45 20 54 41 42 4c  );.  CREATE TABL
0330: 45 20 79 28 61 29 3b 0a 20 20 43 52 45 41 54 45  E y(a);.  CREATE
0340: 20 54 41 42 4c 45 20 7a 28 61 29 3b 0a 0a 20 20   TABLE z(a);..  
0350: 49 4e 53 45 52 54 20 49 4e 54 4f 20 78 28 61 29  INSERT INTO x(a)
0360: 20 56 41 4c 55 45 53 28 35 29 3b 0a 20 20 49 4e   VALUES(5);.  IN
0370: 53 45 52 54 20 49 4e 54 4f 20 79 28 61 29 20 56  SERT INTO y(a) V
0380: 41 4c 55 45 53 28 31 30 29 3b 0a 0a 20 20 43 52  ALUES(10);..  CR
0390: 45 41 54 45 20 54 52 49 47 47 45 52 20 74 20 41  EATE TRIGGER t A
03a0: 46 54 45 52 20 49 4e 53 45 52 54 20 4f 4e 20 77  FTER INSERT ON w
03b0: 20 42 45 47 49 4e 0a 20 20 20 20 49 4e 53 45 52   BEGIN.    INSER
03c0: 54 20 49 4e 54 4f 20 7a 0a 20 20 20 20 53 45 4c  T INTO z.    SEL
03d0: 45 43 54 20 28 53 45 4c 45 43 54 20 78 2e 61 20  ECT (SELECT x.a 
03e0: 2b 20 79 2e 61 20 46 52 4f 4d 20 79 29 20 46 52  + y.a FROM y) FR
03f0: 4f 4d 20 78 3b 0a 20 20 45 4e 44 3b 0a 20 20 49  OM x;.  END;.  I
0400: 4e 53 45 52 54 20 49 4e 54 4f 20 77 20 56 41 4c  NSERT INTO w VAL
0410: 55 45 53 28 27 69 6e 63 6f 72 72 65 63 74 27 29  UES('incorrect')
0420: 3b 0a 7d 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74  ;.}.do_execsql_t
0430: 65 73 74 20 32 2e 32 20 7b 0a 20 20 53 45 4c 45  est 2.2 {.  SELE
0440: 43 54 20 2a 20 46 52 4f 4d 20 7a 3b 0a 7d 20 7b  CT * FROM z;.} {
0450: 31 35 7d 0a 0a 72 65 73 65 74 5f 64 62 0a 64 6f  15}..reset_db.do
0460: 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 33 2e  _execsql_test 3.
0470: 31 20 7b 0a 20 20 43 52 45 41 54 45 20 54 41 42  1 {.  CREATE TAB
0480: 4c 45 20 77 28 61 29 3b 0a 20 20 43 52 45 41 54  LE w(a);.  CREAT
0490: 45 20 54 41 42 4c 45 20 78 28 62 29 3b 0a 20 20  E TABLE x(b);.  
04a0: 43 52 45 41 54 45 20 54 41 42 4c 45 20 79 28 61  CREATE TABLE y(a
04b0: 29 3b 0a 20 20 43 52 45 41 54 45 20 54 41 42 4c  );.  CREATE TABL
04c0: 45 20 7a 28 61 29 3b 0a 0a 20 20 49 4e 53 45 52  E z(a);..  INSER
04d0: 54 20 49 4e 54 4f 20 78 28 62 29 20 56 41 4c 55  T INTO x(b) VALU
04e0: 45 53 28 35 29 3b 0a 20 20 49 4e 53 45 52 54 20  ES(5);.  INSERT 
04f0: 49 4e 54 4f 20 79 28 61 29 20 56 41 4c 55 45 53  INTO y(a) VALUES
0500: 28 31 30 29 3b 0a 0a 20 20 43 52 45 41 54 45 20  (10);..  CREATE 
0510: 54 52 49 47 47 45 52 20 74 20 41 46 54 45 52 20  TRIGGER t AFTER 
0520: 49 4e 53 45 52 54 20 4f 4e 20 77 20 42 45 47 49  INSERT ON w BEGI
0530: 4e 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54  N.    INSERT INT
0540: 4f 20 7a 0a 20 20 20 20 53 45 4c 45 43 54 20 28  O z.    SELECT (
0550: 53 45 4c 45 43 54 20 78 2e 62 20 2b 20 79 2e 61  SELECT x.b + y.a
0560: 20 46 52 4f 4d 20 79 29 20 46 52 4f 4d 20 78 3b   FROM y) FROM x;
0570: 0a 20 20 45 4e 44 3b 0a 20 20 49 4e 53 45 52 54  .  END;.  INSERT
0580: 20 49 4e 54 4f 20 77 20 56 41 4c 55 45 53 28 27   INTO w VALUES('
0590: 61 73 73 65 72 74 27 29 3b 0a 7d 0a 64 6f 5f 65  assert');.}.do_e
05a0: 78 65 63 73 71 6c 5f 74 65 73 74 20 33 2e 32 20  xecsql_test 3.2 
05b0: 7b 0a 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f  {.  SELECT * FRO
05c0: 4d 20 7a 3b 0a 7d 20 7b 31 35 7d 0a 0a 66 69 6e  M z;.} {15}..fin
05d0: 69 73 68 5f 74 65 73 74 0a                       ish_test.