Annotation of embedaddon/sqlite3/test/tkt-7bbfb7d442.test, revision 1.1
1.1 ! misho 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: do_execsql_test 1.4 {
! 53: INSERT INTO t3(t3_a) SELECT 1 UNION SELECT 2 UNION SELECT 3;
! 54: SELECT * FROM t3;
! 55: } {1 I 2 II 3 III}
! 56:
! 57:
! 58:
! 59: #-------------------------------------------------------------------------
! 60: # The following test case - 2.* - is from the original bug report as
! 61: # posted to the mailing list.
! 62: #
! 63: do_execsql_test 2.1 {
! 64: CREATE TABLE InventoryControl (
! 65: InventoryControlId INTEGER PRIMARY KEY AUTOINCREMENT,
! 66: SKU INTEGER NOT NULL,
! 67: Variant INTEGER NOT NULL DEFAULT 0,
! 68: ControlDate DATE NOT NULL,
! 69: ControlState INTEGER NOT NULL DEFAULT -1,
! 70: DeliveredQty VARCHAR(30)
! 71: );
! 72:
! 73: CREATE TRIGGER TGR_InventoryControl_AfterInsert
! 74: AFTER INSERT ON InventoryControl
! 75: FOR EACH ROW WHEN NEW.ControlState=-1 BEGIN
! 76:
! 77: INSERT OR REPLACE INTO InventoryControl(
! 78: InventoryControlId,SKU,Variant,ControlDate,ControlState,DeliveredQty
! 79: ) SELECT
! 80: T1.InventoryControlId AS InventoryControlId,
! 81: T1.SKU AS SKU,
! 82: T1.Variant AS Variant,
! 83: T1.ControlDate AS ControlDate,
! 84: 1 AS ControlState,
! 85: COALESCE(T2.DeliveredQty,0) AS DeliveredQty
! 86: FROM (
! 87: SELECT
! 88: NEW.InventoryControlId AS InventoryControlId,
! 89: II.SKU AS SKU,
! 90: II.Variant AS Variant,
! 91: COALESCE(LastClosedIC.ControlDate,NEW.ControlDate) AS ControlDate
! 92: FROM
! 93: InventoryItem II
! 94: LEFT JOIN
! 95: InventoryControl LastClosedIC
! 96: ON LastClosedIC.InventoryControlId IN ( SELECT 99999 )
! 97: WHERE
! 98: II.SKU=NEW.SKU AND
! 99: II.Variant=NEW.Variant
! 100: ) T1
! 101: LEFT JOIN (
! 102: SELECT
! 103: TD.SKU AS SKU,
! 104: TD.Variant AS Variant,
! 105: 10 AS DeliveredQty
! 106: FROM
! 107: TransactionDetail TD
! 108: WHERE
! 109: TD.SKU=NEW.SKU AND
! 110: TD.Variant=NEW.Variant
! 111: ) T2
! 112: ON T2.SKU=T1.SKU AND
! 113: T2.Variant=T1.Variant;
! 114: END;
! 115:
! 116: CREATE TABLE InventoryItem (
! 117: SKU INTEGER NOT NULL,
! 118: Variant INTEGER NOT NULL DEFAULT 0,
! 119: DeptCode INTEGER NOT NULL,
! 120: GroupCode INTEGER NOT NULL,
! 121: ItemDescription VARCHAR(120) NOT NULL,
! 122: PRIMARY KEY(SKU, Variant)
! 123: );
! 124:
! 125: INSERT INTO InventoryItem VALUES(220,0,1,170,'Scoth Tampon Recurer');
! 126: INSERT INTO InventoryItem VALUES(31,0,1,110,'Fromage');
! 127:
! 128: CREATE TABLE TransactionDetail (
! 129: TransactionId INTEGER NOT NULL,
! 130: SKU INTEGER NOT NULL,
! 131: Variant INTEGER NOT NULL DEFAULT 0,
! 132: PRIMARY KEY(TransactionId, SKU, Variant)
! 133: );
! 134: INSERT INTO TransactionDetail(TransactionId, SKU, Variant) VALUES(44, 31, 0);
! 135:
! 136:
! 137: INSERT INTO InventoryControl(SKU, Variant, ControlDate) SELECT
! 138: II.SKU AS SKU, II.Variant AS Variant, '2011-08-30' AS ControlDate
! 139: FROM InventoryItem II;
! 140: }
! 141:
! 142: do_execsql_test 2.2 {
! 143: SELECT SKU, DeliveredQty FROM InventoryControl WHERE SKU=31
! 144: } {31 10}
! 145:
! 146: do_execsql_test 2.3 {
! 147: SELECT CASE WHEN DeliveredQty=10 THEN "TEST PASSED!" ELSE "TEST FAILED!" END
! 148: FROM InventoryControl WHERE SKU=31;
! 149: } {{TEST PASSED!}}
! 150:
! 151:
! 152: finish_test
! 153:
! 154:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>