OLD | NEW |
| (Empty) |
1 # 2011 December 9 | |
2 # | |
3 # The author disclaims copyright to this source code. In place of | |
4 # a legal notice, here is a blessing: | |
5 # | |
6 # May you do good and not evil. | |
7 # May you find forgiveness for yourself and forgive others. | |
8 # May you share freely, never taking more than you give. | |
9 # | |
10 #*********************************************************************** | |
11 # This file implements regression tests for SQLite library. | |
12 # | |
13 # This file implements tests to verify that ticket [7bbfb7d442] has been | |
14 # fixed. | |
15 # | |
16 | |
17 set testdir [file dirname $argv0] | |
18 source $testdir/tester.tcl | |
19 set testprefix tkt-7bbfb7d442 | |
20 | |
21 do_execsql_test 1.1 { | |
22 CREATE TABLE t1(a, b); | |
23 INSERT INTO t1 VALUES(1, 'one'); | |
24 INSERT INTO t1 VALUES(2, 'two'); | |
25 INSERT INTO t1 VALUES(3, 'three'); | |
26 | |
27 CREATE TABLE t2(c, d); | |
28 INSERT INTO t2 VALUES('one', 'I'); | |
29 INSERT INTO t2 VALUES('two', 'II'); | |
30 INSERT INTO t2 VALUES('three', 'III'); | |
31 | |
32 CREATE TABLE t3(t3_a PRIMARY KEY, t3_d); | |
33 CREATE TRIGGER t3t AFTER INSERT ON t3 WHEN new.t3_d IS NULL BEGIN | |
34 UPDATE t3 SET t3_d = ( | |
35 SELECT d FROM | |
36 (SELECT * FROM t2 WHERE (new.t3_a%2)=(rowid%2) LIMIT 10), | |
37 (SELECT * FROM t1 WHERE (new.t3_a%2)=(rowid%2) LIMIT 10) | |
38 WHERE a = new.t3_a AND b = c | |
39 ) WHERE t3_a = new.t3_a; | |
40 END; | |
41 } | |
42 | |
43 do_execsql_test 1.2 { | |
44 INSERT INTO t3(t3_a) VALUES(1); | |
45 INSERT INTO t3(t3_a) VALUES(2); | |
46 INSERT INTO t3(t3_a) VALUES(3); | |
47 SELECT * FROM t3; | |
48 } {1 I 2 II 3 III} | |
49 | |
50 do_execsql_test 1.3 { DELETE FROM t3 } | |
51 | |
52 ifcapable compound { | |
53 do_execsql_test 1.4 { | |
54 INSERT INTO t3(t3_a) SELECT 1 UNION SELECT 2 UNION SELECT 3; | |
55 SELECT * FROM t3; | |
56 } {1 I 2 II 3 III} | |
57 } | |
58 | |
59 | |
60 | |
61 #------------------------------------------------------------------------- | |
62 # The following test case - 2.* - is from the original bug report as | |
63 # posted to the mailing list. | |
64 # | |
65 do_execsql_test 2.1 { | |
66 CREATE TABLE InventoryControl ( | |
67 InventoryControlId INTEGER PRIMARY KEY AUTOINCREMENT, | |
68 SKU INTEGER NOT NULL, | |
69 Variant INTEGER NOT NULL DEFAULT 0, | |
70 ControlDate DATE NOT NULL, | |
71 ControlState INTEGER NOT NULL DEFAULT -1, | |
72 DeliveredQty VARCHAR(30) | |
73 ); | |
74 | |
75 CREATE TRIGGER TGR_InventoryControl_AfterInsert | |
76 AFTER INSERT ON InventoryControl | |
77 FOR EACH ROW WHEN NEW.ControlState=-1 BEGIN | |
78 | |
79 INSERT OR REPLACE INTO InventoryControl( | |
80 InventoryControlId,SKU,Variant,ControlDate,ControlState,DeliveredQty | |
81 ) SELECT | |
82 T1.InventoryControlId AS InventoryControlId, | |
83 T1.SKU AS SKU, | |
84 T1.Variant AS Variant, | |
85 T1.ControlDate AS ControlDate, | |
86 1 AS ControlState, | |
87 COALESCE(T2.DeliveredQty,0) AS DeliveredQty | |
88 FROM ( | |
89 SELECT | |
90 NEW.InventoryControlId AS InventoryControlId, | |
91 II.SKU AS SKU, | |
92 II.Variant AS Variant, | |
93 COALESCE(LastClosedIC.ControlDate,NEW.ControlDate) AS ControlDate | |
94 FROM | |
95 InventoryItem II | |
96 LEFT JOIN | |
97 InventoryControl LastClosedIC | |
98 ON LastClosedIC.InventoryControlId IN ( SELECT 99999 ) | |
99 WHERE | |
100 II.SKU=NEW.SKU AND | |
101 II.Variant=NEW.Variant | |
102 ) T1 | |
103 LEFT JOIN ( | |
104 SELECT | |
105 TD.SKU AS SKU, | |
106 TD.Variant AS Variant, | |
107 10 AS DeliveredQty | |
108 FROM | |
109 TransactionDetail TD | |
110 WHERE | |
111 TD.SKU=NEW.SKU AND | |
112 TD.Variant=NEW.Variant | |
113 ) T2 | |
114 ON T2.SKU=T1.SKU AND | |
115 T2.Variant=T1.Variant; | |
116 END; | |
117 | |
118 CREATE TABLE InventoryItem ( | |
119 SKU INTEGER NOT NULL, | |
120 Variant INTEGER NOT NULL DEFAULT 0, | |
121 DeptCode INTEGER NOT NULL, | |
122 GroupCode INTEGER NOT NULL, | |
123 ItemDescription VARCHAR(120) NOT NULL, | |
124 PRIMARY KEY(SKU, Variant) | |
125 ); | |
126 | |
127 INSERT INTO InventoryItem VALUES(220,0,1,170,'Scoth Tampon Recurer'); | |
128 INSERT INTO InventoryItem VALUES(31,0,1,110,'Fromage'); | |
129 | |
130 CREATE TABLE TransactionDetail ( | |
131 TransactionId INTEGER NOT NULL, | |
132 SKU INTEGER NOT NULL, | |
133 Variant INTEGER NOT NULL DEFAULT 0, | |
134 PRIMARY KEY(TransactionId, SKU, Variant) | |
135 ); | |
136 INSERT INTO TransactionDetail(TransactionId, SKU, Variant) VALUES(44, 31, 0); | |
137 | |
138 | |
139 INSERT INTO InventoryControl(SKU, Variant, ControlDate) SELECT | |
140 II.SKU AS SKU, II.Variant AS Variant, '2011-08-30' AS ControlDate | |
141 FROM InventoryItem II; | |
142 } | |
143 | |
144 do_execsql_test 2.2 { | |
145 SELECT SKU, DeliveredQty FROM InventoryControl WHERE SKU=31 | |
146 } {31 10} | |
147 | |
148 do_execsql_test 2.3 { | |
149 SELECT CASE WHEN DeliveredQty=10 THEN "TEST PASSED!" ELSE "TEST FAILED!" END | |
150 FROM InventoryControl WHERE SKU=31; | |
151 } {{TEST PASSED!}} | |
152 | |
153 | |
154 finish_test | |
OLD | NEW |