/ Hex Artifact Content
Login

Artifact 7b2cd79c7a17ae6750e75ec1a7846712a69c9d18:


0000: 23 20 32 30 31 31 20 44 65 63 65 6d 62 65 72 20  # 2011 December 
0010: 39 0a 23 0a 23 20 54 68 65 20 61 75 74 68 6f 72  9.#.# 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 0a 23 0a 23 20 54 68 69 73 20 66 69 6c  ry..#.# This fil
01b0: 65 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74 65 73  e implements tes
01c0: 74 73 20 74 6f 20 76 65 72 69 66 79 20 74 68 61  ts to verify tha
01d0: 74 20 74 69 63 6b 65 74 20 5b 37 62 62 66 62 37  t ticket [7bbfb7
01e0: 64 34 34 32 5d 20 68 61 73 20 62 65 65 6e 0a 23  d442] has been.#
01f0: 20 66 69 78 65 64 2e 20 20 0a 23 0a 0a 73 65 74   fixed.  .#..set
0200: 20 74 65 73 74 64 69 72 20 5b 66 69 6c 65 20 64   testdir [file d
0210: 69 72 6e 61 6d 65 20 24 61 72 67 76 30 5d 0a 73  irname $argv0].s
0220: 6f 75 72 63 65 20 24 74 65 73 74 64 69 72 2f 74  ource $testdir/t
0230: 65 73 74 65 72 2e 74 63 6c 0a 73 65 74 20 74 65  ester.tcl.set te
0240: 73 74 70 72 65 66 69 78 20 74 6b 74 2d 37 62 62  stprefix tkt-7bb
0250: 66 62 37 64 34 34 32 0a 0a 64 6f 5f 65 78 65 63  fb7d442..do_exec
0260: 73 71 6c 5f 74 65 73 74 20 31 2e 31 20 7b 0a 20  sql_test 1.1 {. 
0270: 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 31   CREATE TABLE t1
0280: 28 61 2c 20 62 29 3b 0a 20 20 49 4e 53 45 52 54  (a, b);.  INSERT
0290: 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28   INTO t1 VALUES(
02a0: 31 2c 20 27 6f 6e 65 27 29 3b 0a 20 20 49 4e 53  1, 'one');.  INS
02b0: 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55  ERT INTO t1 VALU
02c0: 45 53 28 32 2c 20 27 74 77 6f 27 29 3b 0a 20 20  ES(2, 'two');.  
02d0: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56  INSERT INTO t1 V
02e0: 41 4c 55 45 53 28 33 2c 20 27 74 68 72 65 65 27  ALUES(3, 'three'
02f0: 29 3b 0a 0a 20 20 43 52 45 41 54 45 20 54 41 42  );..  CREATE TAB
0300: 4c 45 20 74 32 28 63 2c 20 64 29 3b 0a 20 20 49  LE t2(c, d);.  I
0310: 4e 53 45 52 54 20 49 4e 54 4f 20 74 32 20 56 41  NSERT INTO t2 VA
0320: 4c 55 45 53 28 27 6f 6e 65 27 2c 20 27 49 27 29  LUES('one', 'I')
0330: 3b 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20  ;.  INSERT INTO 
0340: 74 32 20 56 41 4c 55 45 53 28 27 74 77 6f 27 2c  t2 VALUES('two',
0350: 20 27 49 49 27 29 3b 0a 20 20 49 4e 53 45 52 54   'II');.  INSERT
0360: 20 49 4e 54 4f 20 74 32 20 56 41 4c 55 45 53 28   INTO t2 VALUES(
0370: 27 74 68 72 65 65 27 2c 20 27 49 49 49 27 29 3b  'three', 'III');
0380: 0a 0a 20 20 43 52 45 41 54 45 20 54 41 42 4c 45  ..  CREATE TABLE
0390: 20 74 33 28 74 33 5f 61 20 50 52 49 4d 41 52 59   t3(t3_a PRIMARY
03a0: 20 4b 45 59 2c 20 74 33 5f 64 29 3b 0a 20 20 43   KEY, t3_d);.  C
03b0: 52 45 41 54 45 20 54 52 49 47 47 45 52 20 74 33  REATE TRIGGER t3
03c0: 74 20 41 46 54 45 52 20 49 4e 53 45 52 54 20 4f  t AFTER INSERT O
03d0: 4e 20 74 33 20 57 48 45 4e 20 6e 65 77 2e 74 33  N t3 WHEN new.t3
03e0: 5f 64 20 49 53 20 4e 55 4c 4c 20 42 45 47 49 4e  _d IS NULL BEGIN
03f0: 0a 20 20 20 20 55 50 44 41 54 45 20 74 33 20 53  .    UPDATE t3 S
0400: 45 54 20 74 33 5f 64 20 3d 20 28 0a 20 20 20 20  ET t3_d = (.    
0410: 20 20 53 45 4c 45 43 54 20 64 20 46 52 4f 4d 20    SELECT d FROM 
0420: 0a 20 20 20 20 20 20 20 20 28 53 45 4c 45 43 54  .        (SELECT
0430: 20 2a 20 46 52 4f 4d 20 74 32 20 57 48 45 52 45   * FROM t2 WHERE
0440: 20 28 6e 65 77 2e 74 33 5f 61 25 32 29 3d 28 72   (new.t3_a%2)=(r
0450: 6f 77 69 64 25 32 29 20 4c 49 4d 49 54 20 31 30  owid%2) LIMIT 10
0460: 29 2c 0a 20 20 20 20 20 20 20 20 28 53 45 4c 45  ),.        (SELE
0470: 43 54 20 2a 20 46 52 4f 4d 20 74 31 20 57 48 45  CT * FROM t1 WHE
0480: 52 45 20 28 6e 65 77 2e 74 33 5f 61 25 32 29 3d  RE (new.t3_a%2)=
0490: 28 72 6f 77 69 64 25 32 29 20 4c 49 4d 49 54 20  (rowid%2) LIMIT 
04a0: 31 30 29 0a 20 20 20 20 20 20 57 48 45 52 45 20  10).      WHERE 
04b0: 61 20 3d 20 6e 65 77 2e 74 33 5f 61 20 41 4e 44  a = new.t3_a AND
04c0: 20 62 20 3d 20 63 0a 20 20 20 20 29 20 57 48 45   b = c.    ) WHE
04d0: 52 45 20 74 33 5f 61 20 3d 20 6e 65 77 2e 74 33  RE t3_a = new.t3
04e0: 5f 61 3b 0a 20 20 45 4e 44 3b 0a 7d 0a 0a 64 6f  _a;.  END;.}..do
04f0: 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 31 2e  _execsql_test 1.
0500: 32 20 7b 0a 20 20 49 4e 53 45 52 54 20 49 4e 54  2 {.  INSERT INT
0510: 4f 20 74 33 28 74 33 5f 61 29 20 56 41 4c 55 45  O t3(t3_a) VALUE
0520: 53 28 31 29 3b 0a 20 20 49 4e 53 45 52 54 20 49  S(1);.  INSERT I
0530: 4e 54 4f 20 74 33 28 74 33 5f 61 29 20 56 41 4c  NTO t3(t3_a) VAL
0540: 55 45 53 28 32 29 3b 0a 20 20 49 4e 53 45 52 54  UES(2);.  INSERT
0550: 20 49 4e 54 4f 20 74 33 28 74 33 5f 61 29 20 56   INTO t3(t3_a) V
0560: 41 4c 55 45 53 28 33 29 3b 0a 20 20 53 45 4c 45  ALUES(3);.  SELE
0570: 43 54 20 2a 20 46 52 4f 4d 20 74 33 3b 0a 7d 20  CT * FROM t3;.} 
0580: 7b 31 20 49 20 32 20 49 49 20 33 20 49 49 49 7d  {1 I 2 II 3 III}
0590: 0a 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73  ..do_execsql_tes
05a0: 74 20 31 2e 33 20 7b 20 44 45 4c 45 54 45 20 46  t 1.3 { DELETE F
05b0: 52 4f 4d 20 74 33 20 7d 0a 0a 69 66 63 61 70 61  ROM t3 }..ifcapa
05c0: 62 6c 65 20 63 6f 6d 70 6f 75 6e 64 20 7b 0a 20  ble compound {. 
05d0: 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74   do_execsql_test
05e0: 20 31 2e 34 20 7b 0a 20 20 20 20 49 4e 53 45 52   1.4 {.    INSER
05f0: 54 20 49 4e 54 4f 20 74 33 28 74 33 5f 61 29 20  T INTO t3(t3_a) 
0600: 53 45 4c 45 43 54 20 31 20 55 4e 49 4f 4e 20 53  SELECT 1 UNION S
0610: 45 4c 45 43 54 20 32 20 55 4e 49 4f 4e 20 53 45  ELECT 2 UNION SE
0620: 4c 45 43 54 20 33 3b 0a 20 20 20 20 53 45 4c 45  LECT 3;.    SELE
0630: 43 54 20 2a 20 46 52 4f 4d 20 74 33 3b 0a 20 20  CT * FROM t3;.  
0640: 7d 20 7b 31 20 49 20 32 20 49 49 20 33 20 49 49  } {1 I 2 II 3 II
0650: 49 7d 0a 7d 0a 0a 0a 0a 23 2d 2d 2d 2d 2d 2d 2d  I}.}....#-------
0660: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0670: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0680: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0690: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
06a0: 2d 2d 0a 23 20 54 68 65 20 66 6f 6c 6c 6f 77 69  --.# The followi
06b0: 6e 67 20 74 65 73 74 20 63 61 73 65 20 2d 20 32  ng test case - 2
06c0: 2e 2a 20 2d 20 69 73 20 66 72 6f 6d 20 74 68 65  .* - is from the
06d0: 20 6f 72 69 67 69 6e 61 6c 20 62 75 67 20 72 65   original bug re
06e0: 70 6f 72 74 20 61 73 20 0a 23 20 70 6f 73 74 65  port as .# poste
06f0: 64 20 74 6f 20 74 68 65 20 6d 61 69 6c 69 6e 67  d to the mailing
0700: 20 6c 69 73 74 2e 0a 23 0a 64 6f 5f 65 78 65 63   list..#.do_exec
0710: 73 71 6c 5f 74 65 73 74 20 32 2e 31 20 7b 0a 20  sql_test 2.1 {. 
0720: 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 49 6e   CREATE TABLE In
0730: 76 65 6e 74 6f 72 79 43 6f 6e 74 72 6f 6c 20 28  ventoryControl (
0740: 0a 20 20 20 20 49 6e 76 65 6e 74 6f 72 79 43 6f  .    InventoryCo
0750: 6e 74 72 6f 6c 49 64 20 49 4e 54 45 47 45 52 20  ntrolId INTEGER 
0760: 50 52 49 4d 41 52 59 20 4b 45 59 20 41 55 54 4f  PRIMARY KEY AUTO
0770: 49 4e 43 52 45 4d 45 4e 54 2c 0a 20 20 20 20 53  INCREMENT,.    S
0780: 4b 55 20 49 4e 54 45 47 45 52 20 4e 4f 54 20 4e  KU INTEGER NOT N
0790: 55 4c 4c 2c 0a 20 20 20 20 56 61 72 69 61 6e 74  ULL,.    Variant
07a0: 20 49 4e 54 45 47 45 52 20 4e 4f 54 20 4e 55 4c   INTEGER NOT NUL
07b0: 4c 20 44 45 46 41 55 4c 54 20 30 2c 0a 20 20 20  L DEFAULT 0,.   
07c0: 20 43 6f 6e 74 72 6f 6c 44 61 74 65 20 44 41 54   ControlDate DAT
07d0: 45 20 4e 4f 54 20 4e 55 4c 4c 2c 0a 20 20 20 20  E NOT NULL,.    
07e0: 43 6f 6e 74 72 6f 6c 53 74 61 74 65 20 49 4e 54  ControlState INT
07f0: 45 47 45 52 20 4e 4f 54 20 4e 55 4c 4c 20 44 45  EGER NOT NULL DE
0800: 46 41 55 4c 54 20 2d 31 2c 0a 20 20 20 20 44 65  FAULT -1,.    De
0810: 6c 69 76 65 72 65 64 51 74 79 20 56 41 52 43 48  liveredQty VARCH
0820: 41 52 28 33 30 29 0a 20 20 29 3b 0a 20 20 0a 20  AR(30).  );.  . 
0830: 20 43 52 45 41 54 45 20 54 52 49 47 47 45 52 20   CREATE TRIGGER 
0840: 54 47 52 5f 49 6e 76 65 6e 74 6f 72 79 43 6f 6e  TGR_InventoryCon
0850: 74 72 6f 6c 5f 41 66 74 65 72 49 6e 73 65 72 74  trol_AfterInsert
0860: 0a 20 20 41 46 54 45 52 20 49 4e 53 45 52 54 20  .  AFTER INSERT 
0870: 4f 4e 20 49 6e 76 65 6e 74 6f 72 79 43 6f 6e 74  ON InventoryCont
0880: 72 6f 6c 20 0a 20 20 46 4f 52 20 45 41 43 48 20  rol .  FOR EACH 
0890: 52 4f 57 20 57 48 45 4e 20 4e 45 57 2e 43 6f 6e  ROW WHEN NEW.Con
08a0: 74 72 6f 6c 53 74 61 74 65 3d 2d 31 20 42 45 47  trolState=-1 BEG
08b0: 49 4e 20 0a 0a 20 20 49 4e 53 45 52 54 20 4f 52  IN ..  INSERT OR
08c0: 20 52 45 50 4c 41 43 45 20 49 4e 54 4f 20 49 6e   REPLACE INTO In
08d0: 76 65 6e 74 6f 72 79 43 6f 6e 74 72 6f 6c 28 0a  ventoryControl(.
08e0: 20 20 20 20 20 20 20 20 49 6e 76 65 6e 74 6f 72          Inventor
08f0: 79 43 6f 6e 74 72 6f 6c 49 64 2c 53 4b 55 2c 56  yControlId,SKU,V
0900: 61 72 69 61 6e 74 2c 43 6f 6e 74 72 6f 6c 44 61  ariant,ControlDa
0910: 74 65 2c 43 6f 6e 74 72 6f 6c 53 74 61 74 65 2c  te,ControlState,
0920: 44 65 6c 69 76 65 72 65 64 51 74 79 0a 20 20 29  DeliveredQty.  )
0930: 20 53 45 4c 45 43 54 0a 20 20 20 20 20 20 20 20   SELECT.        
0940: 20 20 54 31 2e 49 6e 76 65 6e 74 6f 72 79 43 6f    T1.InventoryCo
0950: 6e 74 72 6f 6c 49 64 20 41 53 20 49 6e 76 65 6e  ntrolId AS Inven
0960: 74 6f 72 79 43 6f 6e 74 72 6f 6c 49 64 2c 0a 20  toryControlId,. 
0970: 20 20 20 20 20 20 20 20 20 54 31 2e 53 4b 55 20           T1.SKU 
0980: 41 53 20 53 4b 55 2c 0a 20 20 20 20 20 20 20 20  AS SKU,.        
0990: 20 20 54 31 2e 56 61 72 69 61 6e 74 20 41 53 20    T1.Variant AS 
09a0: 56 61 72 69 61 6e 74 2c 0a 20 20 20 20 20 20 20  Variant,.       
09b0: 20 20 20 54 31 2e 43 6f 6e 74 72 6f 6c 44 61 74     T1.ControlDat
09c0: 65 20 41 53 20 43 6f 6e 74 72 6f 6c 44 61 74 65  e AS ControlDate
09d0: 2c 0a 20 20 20 20 20 20 20 20 20 20 31 20 41 53  ,.          1 AS
09e0: 20 43 6f 6e 74 72 6f 6c 53 74 61 74 65 2c 0a 20   ControlState,. 
09f0: 20 20 20 20 20 20 20 20 20 43 4f 41 4c 45 53 43           COALESC
0a00: 45 28 54 32 2e 44 65 6c 69 76 65 72 65 64 51 74  E(T2.DeliveredQt
0a10: 79 2c 30 29 20 41 53 20 44 65 6c 69 76 65 72 65  y,0) AS Delivere
0a20: 64 51 74 79 0a 20 20 20 20 20 20 46 52 4f 4d 20  dQty.      FROM 
0a30: 28 0a 20 20 20 20 20 20 20 20 20 20 53 45 4c 45  (.          SELE
0a40: 43 54 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  CT.             
0a50: 20 4e 45 57 2e 49 6e 76 65 6e 74 6f 72 79 43 6f   NEW.InventoryCo
0a60: 6e 74 72 6f 6c 49 64 20 41 53 20 49 6e 76 65 6e  ntrolId AS Inven
0a70: 74 6f 72 79 43 6f 6e 74 72 6f 6c 49 64 2c 0a 20  toryControlId,. 
0a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 49 49 2e               II.
0a90: 53 4b 55 20 41 53 20 53 4b 55 2c 0a 20 20 20 20  SKU AS SKU,.    
0aa0: 20 20 20 20 20 20 20 20 20 20 49 49 2e 56 61 72            II.Var
0ab0: 69 61 6e 74 20 41 53 20 56 61 72 69 61 6e 74 2c  iant AS Variant,
0ac0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43  .              C
0ad0: 4f 41 4c 45 53 43 45 28 4c 61 73 74 43 6c 6f 73  OALESCE(LastClos
0ae0: 65 64 49 43 2e 43 6f 6e 74 72 6f 6c 44 61 74 65  edIC.ControlDate
0af0: 2c 4e 45 57 2e 43 6f 6e 74 72 6f 6c 44 61 74 65  ,NEW.ControlDate
0b00: 29 20 41 53 20 43 6f 6e 74 72 6f 6c 44 61 74 65  ) AS ControlDate
0b10: 0a 20 20 20 20 20 20 20 20 20 20 46 52 4f 4d 0a  .          FROM.
0b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
0b30: 76 65 6e 74 6f 72 79 49 74 65 6d 20 49 49 0a 20  ventoryItem II. 
0b40: 20 20 20 20 20 20 20 20 20 4c 45 46 54 20 4a 4f           LEFT JO
0b50: 49 4e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  IN.             
0b60: 20 49 6e 76 65 6e 74 6f 72 79 43 6f 6e 74 72 6f   InventoryContro
0b70: 6c 20 4c 61 73 74 43 6c 6f 73 65 64 49 43 0a 20  l LastClosedIC. 
0b80: 20 20 20 20 20 20 20 20 20 20 20 20 20 4f 4e 20               ON 
0b90: 20 4c 61 73 74 43 6c 6f 73 65 64 49 43 2e 49 6e   LastClosedIC.In
0ba0: 76 65 6e 74 6f 72 79 43 6f 6e 74 72 6f 6c 49 64  ventoryControlId
0bb0: 20 49 4e 20 28 20 53 45 4c 45 43 54 20 39 39 39   IN ( SELECT 999
0bc0: 39 39 20 29 0a 20 20 20 20 20 20 20 20 20 20 57  99 ).          W
0bd0: 48 45 52 45 0a 20 20 20 20 20 20 20 20 20 20 20  HERE.           
0be0: 20 20 20 49 49 2e 53 4b 55 3d 4e 45 57 2e 53 4b     II.SKU=NEW.SK
0bf0: 55 20 41 4e 44 0a 20 20 20 20 20 20 20 20 20 20  U AND.          
0c00: 20 20 20 20 49 49 2e 56 61 72 69 61 6e 74 3d 4e      II.Variant=N
0c10: 45 57 2e 56 61 72 69 61 6e 74 0a 20 20 20 20 20  EW.Variant.     
0c20: 20 29 20 20 20 54 31 0a 20 20 20 20 20 20 4c 45   )   T1.      LE
0c30: 46 54 20 4a 4f 49 4e 20 28 0a 20 20 20 20 20 20  FT JOIN (.      
0c40: 20 20 20 20 53 45 4c 45 43 54 0a 20 20 20 20 20      SELECT.     
0c50: 20 20 20 20 20 20 20 20 20 54 44 2e 53 4b 55 20           TD.SKU 
0c60: 41 53 20 53 4b 55 2c 0a 20 20 20 20 20 20 20 20  AS SKU,.        
0c70: 20 20 20 20 20 20 54 44 2e 56 61 72 69 61 6e 74        TD.Variant
0c80: 20 41 53 20 56 61 72 69 61 6e 74 2c 0a 20 20 20   AS Variant,.   
0c90: 20 20 20 20 20 20 20 20 20 20 20 31 30 20 41 53             10 AS
0ca0: 20 44 65 6c 69 76 65 72 65 64 51 74 79 0a 20 20   DeliveredQty.  
0cb0: 20 20 20 20 20 20 20 20 46 52 4f 4d 0a 20 20 20          FROM.   
0cc0: 20 20 20 20 20 20 20 20 20 20 20 54 72 61 6e 73             Trans
0cd0: 61 63 74 69 6f 6e 44 65 74 61 69 6c 20 54 44 0a  actionDetail TD.
0ce0: 20 20 20 20 20 20 20 20 20 20 57 48 45 52 45 0a            WHERE.
0cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 44                TD
0d00: 2e 53 4b 55 3d 4e 45 57 2e 53 4b 55 20 41 4e 44  .SKU=NEW.SKU AND
0d10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54  .              T
0d20: 44 2e 56 61 72 69 61 6e 74 3d 4e 45 57 2e 56 61  D.Variant=NEW.Va
0d30: 72 69 61 6e 74 0a 20 20 20 20 20 20 29 20 20 20  riant.      )   
0d40: 54 32 0a 20 20 20 20 20 20 4f 4e 20 20 54 32 2e  T2.      ON  T2.
0d50: 53 4b 55 3d 54 31 2e 53 4b 55 20 41 4e 44 0a 20  SKU=T1.SKU AND. 
0d60: 20 20 20 20 20 20 20 20 20 54 32 2e 56 61 72 69           T2.Vari
0d70: 61 6e 74 3d 54 31 2e 56 61 72 69 61 6e 74 3b 0a  ant=T1.Variant;.
0d80: 20 20 45 4e 44 3b 0a 20 20 0a 20 20 43 52 45 41    END;.  .  CREA
0d90: 54 45 20 54 41 42 4c 45 20 49 6e 76 65 6e 74 6f  TE TABLE Invento
0da0: 72 79 49 74 65 6d 20 28 0a 20 20 20 20 53 4b 55  ryItem (.    SKU
0db0: 20 49 4e 54 45 47 45 52 20 4e 4f 54 20 4e 55 4c   INTEGER NOT NUL
0dc0: 4c 2c 0a 20 20 20 20 56 61 72 69 61 6e 74 20 49  L,.    Variant I
0dd0: 4e 54 45 47 45 52 20 4e 4f 54 20 4e 55 4c 4c 20  NTEGER NOT NULL 
0de0: 44 45 46 41 55 4c 54 20 30 2c 0a 20 20 20 20 44  DEFAULT 0,.    D
0df0: 65 70 74 43 6f 64 65 20 49 4e 54 45 47 45 52 20  eptCode INTEGER 
0e00: 4e 4f 54 20 4e 55 4c 4c 2c 0a 20 20 20 20 47 72  NOT NULL,.    Gr
0e10: 6f 75 70 43 6f 64 65 20 49 4e 54 45 47 45 52 20  oupCode INTEGER 
0e20: 4e 4f 54 20 4e 55 4c 4c 2c 0a 20 20 20 20 49 74  NOT NULL,.    It
0e30: 65 6d 44 65 73 63 72 69 70 74 69 6f 6e 20 56 41  emDescription VA
0e40: 52 43 48 41 52 28 31 32 30 29 20 4e 4f 54 20 4e  RCHAR(120) NOT N
0e50: 55 4c 4c 2c 0a 20 20 20 20 50 52 49 4d 41 52 59  ULL,.    PRIMARY
0e60: 20 4b 45 59 28 53 4b 55 2c 20 56 61 72 69 61 6e   KEY(SKU, Varian
0e70: 74 29 0a 20 20 29 3b 0a 20 20 0a 20 20 49 4e 53  t).  );.  .  INS
0e80: 45 52 54 20 49 4e 54 4f 20 49 6e 76 65 6e 74 6f  ERT INTO Invento
0e90: 72 79 49 74 65 6d 20 56 41 4c 55 45 53 28 32 32  ryItem VALUES(22
0ea0: 30 2c 30 2c 31 2c 31 37 30 2c 27 53 63 6f 74 68  0,0,1,170,'Scoth
0eb0: 20 54 61 6d 70 6f 6e 20 52 65 63 75 72 65 72 27   Tampon Recurer'
0ec0: 29 3b 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f  );.  INSERT INTO
0ed0: 20 49 6e 76 65 6e 74 6f 72 79 49 74 65 6d 20 56   InventoryItem V
0ee0: 41 4c 55 45 53 28 33 31 2c 30 2c 31 2c 31 31 30  ALUES(31,0,1,110
0ef0: 2c 27 46 72 6f 6d 61 67 65 27 29 3b 0a 20 20 0a  ,'Fromage');.  .
0f00: 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 54    CREATE TABLE T
0f10: 72 61 6e 73 61 63 74 69 6f 6e 44 65 74 61 69 6c  ransactionDetail
0f20: 20 28 0a 20 20 20 20 54 72 61 6e 73 61 63 74 69   (.    Transacti
0f30: 6f 6e 49 64 20 49 4e 54 45 47 45 52 20 4e 4f 54  onId INTEGER NOT
0f40: 20 4e 55 4c 4c 2c 0a 20 20 20 20 53 4b 55 20 49   NULL,.    SKU I
0f50: 4e 54 45 47 45 52 20 4e 4f 54 20 4e 55 4c 4c 2c  NTEGER NOT NULL,
0f60: 0a 20 20 20 20 56 61 72 69 61 6e 74 20 49 4e 54  .    Variant INT
0f70: 45 47 45 52 20 4e 4f 54 20 4e 55 4c 4c 20 44 45  EGER NOT NULL DE
0f80: 46 41 55 4c 54 20 30 2c 0a 20 20 20 20 50 52 49  FAULT 0,.    PRI
0f90: 4d 41 52 59 20 4b 45 59 28 54 72 61 6e 73 61 63  MARY KEY(Transac
0fa0: 74 69 6f 6e 49 64 2c 20 53 4b 55 2c 20 56 61 72  tionId, SKU, Var
0fb0: 69 61 6e 74 29 0a 20 20 29 3b 0a 20 20 49 4e 53  iant).  );.  INS
0fc0: 45 52 54 20 49 4e 54 4f 20 54 72 61 6e 73 61 63  ERT INTO Transac
0fd0: 74 69 6f 6e 44 65 74 61 69 6c 28 54 72 61 6e 73  tionDetail(Trans
0fe0: 61 63 74 69 6f 6e 49 64 2c 20 53 4b 55 2c 20 56  actionId, SKU, V
0ff0: 61 72 69 61 6e 74 29 20 56 41 4c 55 45 53 28 34  ariant) VALUES(4
1000: 34 2c 20 33 31 2c 20 30 29 3b 0a 20 20 0a 20 20  4, 31, 0);.  .  
1010: 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 49  .  INSERT INTO I
1020: 6e 76 65 6e 74 6f 72 79 43 6f 6e 74 72 6f 6c 28  nventoryControl(
1030: 53 4b 55 2c 20 56 61 72 69 61 6e 74 2c 20 43 6f  SKU, Variant, Co
1040: 6e 74 72 6f 6c 44 61 74 65 29 20 53 45 4c 45 43  ntrolDate) SELEC
1050: 54 20 0a 20 20 20 20 20 20 49 49 2e 53 4b 55 20  T .      II.SKU 
1060: 41 53 20 53 4b 55 2c 20 49 49 2e 56 61 72 69 61  AS SKU, II.Varia
1070: 6e 74 20 41 53 20 56 61 72 69 61 6e 74 2c 20 27  nt AS Variant, '
1080: 32 30 31 31 2d 30 38 2d 33 30 27 20 41 53 20 43  2011-08-30' AS C
1090: 6f 6e 74 72 6f 6c 44 61 74 65 20 0a 20 20 20 20  ontrolDate .    
10a0: 20 20 46 52 4f 4d 20 49 6e 76 65 6e 74 6f 72 79    FROM Inventory
10b0: 49 74 65 6d 20 49 49 3b 0a 7d 0a 0a 64 6f 5f 65  Item II;.}..do_e
10c0: 78 65 63 73 71 6c 5f 74 65 73 74 20 32 2e 32 20  xecsql_test 2.2 
10d0: 7b 0a 20 20 53 45 4c 45 43 54 20 53 4b 55 2c 20  {.  SELECT SKU, 
10e0: 44 65 6c 69 76 65 72 65 64 51 74 79 20 46 52 4f  DeliveredQty FRO
10f0: 4d 20 49 6e 76 65 6e 74 6f 72 79 43 6f 6e 74 72  M InventoryContr
1100: 6f 6c 20 57 48 45 52 45 20 53 4b 55 3d 33 31 0a  ol WHERE SKU=31.
1110: 7d 20 7b 33 31 20 31 30 7d 0a 0a 64 6f 5f 65 78  } {31 10}..do_ex
1120: 65 63 73 71 6c 5f 74 65 73 74 20 32 2e 33 20 7b  ecsql_test 2.3 {
1130: 0a 20 20 53 45 4c 45 43 54 20 43 41 53 45 20 57  .  SELECT CASE W
1140: 48 45 4e 20 44 65 6c 69 76 65 72 65 64 51 74 79  HEN DeliveredQty
1150: 3d 31 30 20 54 48 45 4e 20 22 54 45 53 54 20 50  =10 THEN "TEST P
1160: 41 53 53 45 44 21 22 20 45 4c 53 45 20 22 54 45  ASSED!" ELSE "TE
1170: 53 54 20 46 41 49 4c 45 44 21 22 20 45 4e 44 20  ST FAILED!" END 
1180: 0a 20 20 46 52 4f 4d 20 49 6e 76 65 6e 74 6f 72  .  FROM Inventor
1190: 79 43 6f 6e 74 72 6f 6c 20 57 48 45 52 45 20 53  yControl WHERE S
11a0: 4b 55 3d 33 31 3b 20 0a 7d 20 7b 7b 54 45 53 54  KU=31; .} {{TEST
11b0: 20 50 41 53 53 45 44 21 7d 7d 0a 0a 0a 66 69 6e   PASSED!}}...fin
11c0: 69 73 68 5f 74 65 73 74 0a                       ish_test.