mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-30 19:03:16 +03:00
Change to five conflict resolution algorithms: ROLLBACK, ABORT, FAIL,
IGNORE, and REPLACE. This checkin is code only. Documentation and tests are still needed. Also, ABORT is not fully implemented. (CVS 360) FossilOrigin-Name: d0e7cf4a83e6abad7129bed356b7492dddaff474
This commit is contained in:
@ -12,7 +12,7 @@
|
||||
#
|
||||
# This file implements tests for the NOT NULL constraint.
|
||||
#
|
||||
# $Id: notnull.test,v 1.1 2002/01/30 04:32:01 drh Exp $
|
||||
# $Id: notnull.test,v 1.2 2002/01/31 15:54:23 drh Exp $
|
||||
|
||||
set testdir [file dirname $argv0]
|
||||
source $testdir/tester.tcl
|
||||
@ -22,9 +22,9 @@ do_test notnull-1.0 {
|
||||
CREATE TABLE t1 (
|
||||
a NOT NULL,
|
||||
b NOT NULL DEFAULT 5,
|
||||
c NOT NULL REPLACE DEFAULT 6,
|
||||
d NOT NULL IGNORE DEFAULT 7,
|
||||
e NOT NULL ABORT DEFAULT 8
|
||||
c NOT NULL ON CONFLICT REPLACE DEFAULT 6,
|
||||
d NOT NULL ON CONFLICT IGNORE DEFAULT 7,
|
||||
e NOT NULL ON CONFLICT ABORT DEFAULT 8
|
||||
);
|
||||
SELECT * FROM t1;
|
||||
}
|
||||
@ -46,21 +46,21 @@ do_test notnull-1.2 {
|
||||
do_test notnull-1.3 {
|
||||
catchsql {
|
||||
DELETE FROM t1;
|
||||
INSERT IGNORE INTO t1(b,c,d,e) VALUES(2,3,4,5);
|
||||
INSERT OR IGNORE INTO t1(b,c,d,e) VALUES(2,3,4,5);
|
||||
SELECT * FROM t1 order by a;
|
||||
}
|
||||
} {0 {}}
|
||||
do_test notnull-1.4 {
|
||||
catchsql {
|
||||
DELETE FROM t1;
|
||||
INSERT REPLACE INTO t1(b,c,d,e) VALUES(2,3,4,5);
|
||||
INSERT OR REPLACE INTO t1(b,c,d,e) VALUES(2,3,4,5);
|
||||
SELECT * FROM t1 order by a;
|
||||
}
|
||||
} {1 {constraint failed}}
|
||||
do_test notnull-1.5 {
|
||||
catchsql {
|
||||
DELETE FROM t1;
|
||||
INSERT ABORT INTO t1(b,c,d,e) VALUES(2,3,4,5);
|
||||
INSERT OR ABORT INTO t1(b,c,d,e) VALUES(2,3,4,5);
|
||||
SELECT * FROM t1 order by a;
|
||||
}
|
||||
} {1 {constraint failed}}
|
||||
@ -74,21 +74,21 @@ do_test notnull-1.6 {
|
||||
do_test notnull-1.7 {
|
||||
catchsql {
|
||||
DELETE FROM t1;
|
||||
INSERT IGNORE INTO t1(a,c,d,e) VALUES(1,3,4,5);
|
||||
INSERT OR IGNORE INTO t1(a,c,d,e) VALUES(1,3,4,5);
|
||||
SELECT * FROM t1 order by a;
|
||||
}
|
||||
} {0 {1 5 3 4 5}}
|
||||
do_test notnull-1.8 {
|
||||
catchsql {
|
||||
DELETE FROM t1;
|
||||
INSERT REPLACE INTO t1(a,c,d,e) VALUES(1,3,4,5);
|
||||
INSERT OR REPLACE INTO t1(a,c,d,e) VALUES(1,3,4,5);
|
||||
SELECT * FROM t1 order by a;
|
||||
}
|
||||
} {0 {1 5 3 4 5}}
|
||||
do_test notnull-1.9 {
|
||||
catchsql {
|
||||
DELETE FROM t1;
|
||||
INSERT ABORT INTO t1(a,c,d,e) VALUES(1,3,4,5);
|
||||
INSERT OR ABORT INTO t1(a,c,d,e) VALUES(1,3,4,5);
|
||||
SELECT * FROM t1 order by a;
|
||||
}
|
||||
} {0 {1 5 3 4 5}}
|
||||
@ -102,14 +102,14 @@ do_test notnull-1.10 {
|
||||
do_test notnull-1.11 {
|
||||
catchsql {
|
||||
DELETE FROM t1;
|
||||
INSERT IGNORE INTO t1(a,b,c,d,e) VALUES(1,null,3,4,5);
|
||||
INSERT OR IGNORE INTO t1(a,b,c,d,e) VALUES(1,null,3,4,5);
|
||||
SELECT * FROM t1 order by a;
|
||||
}
|
||||
} {0 {}}
|
||||
do_test notnull-1.12 {
|
||||
catchsql {
|
||||
DELETE FROM t1;
|
||||
INSERT REPLACE INTO t1(a,b,c,d,e) VALUES(1,null,3,4,5);
|
||||
INSERT OR REPLACE INTO t1(a,b,c,d,e) VALUES(1,null,3,4,5);
|
||||
SELECT * FROM t1 order by a;
|
||||
}
|
||||
} {0 {1 5 3 4 5}}
|
||||
@ -123,35 +123,35 @@ do_test notnull-1.13 {
|
||||
do_test notnull-1.14 {
|
||||
catchsql {
|
||||
DELETE FROM t1;
|
||||
INSERT IGNORE INTO t1(a,b,c,d,e) VALUES(1,2,null,4,5);
|
||||
INSERT OR IGNORE INTO t1(a,b,c,d,e) VALUES(1,2,null,4,5);
|
||||
SELECT * FROM t1 order by a;
|
||||
}
|
||||
} {0 {}}
|
||||
do_test notnull-1.15 {
|
||||
catchsql {
|
||||
DELETE FROM t1;
|
||||
INSERT REPLACE INTO t1(a,b,c,d,e) VALUES(1,2,null,4,5);
|
||||
INSERT OR REPLACE INTO t1(a,b,c,d,e) VALUES(1,2,null,4,5);
|
||||
SELECT * FROM t1 order by a;
|
||||
}
|
||||
} {0 {1 2 6 4 5}}
|
||||
do_test notnull-1.16 {
|
||||
catchsql {
|
||||
DELETE FROM t1;
|
||||
INSERT ABORT INTO t1(a,b,c,d,e) VALUES(1,2,null,4,5);
|
||||
INSERT OR ABORT INTO t1(a,b,c,d,e) VALUES(1,2,null,4,5);
|
||||
SELECT * FROM t1 order by a;
|
||||
}
|
||||
} {1 {constraint failed}}
|
||||
do_test notnull-1.17 {
|
||||
catchsql {
|
||||
DELETE FROM t1;
|
||||
INSERT ABORT INTO t1(a,b,c,d,e) VALUES(1,2,3,null,5);
|
||||
INSERT OR ABORT INTO t1(a,b,c,d,e) VALUES(1,2,3,null,5);
|
||||
SELECT * FROM t1 order by a;
|
||||
}
|
||||
} {1 {constraint failed}}
|
||||
do_test notnull-1.18 {
|
||||
catchsql {
|
||||
DELETE FROM t1;
|
||||
INSERT ABORT INTO t1(a,b,c,e) VALUES(1,2,3,5);
|
||||
INSERT OR ABORT INTO t1(a,b,c,e) VALUES(1,2,3,5);
|
||||
SELECT * FROM t1 order by a;
|
||||
}
|
||||
} {0 {1 2 3 7 5}}
|
||||
@ -172,7 +172,7 @@ do_test notnull-1.20 {
|
||||
do_test notnull-1.21 {
|
||||
catchsql {
|
||||
DELETE FROM t1;
|
||||
INSERT REPLACE INTO t1(e,d,c,b,a) VALUES(1,2,3,null,5);
|
||||
INSERT OR REPLACE INTO t1(e,d,c,b,a) VALUES(1,2,3,null,5);
|
||||
SELECT * FROM t1 order by a;
|
||||
}
|
||||
} {0 {5 5 3 2 1}}
|
||||
@ -189,7 +189,7 @@ do_test notnull-2.2 {
|
||||
catchsql {
|
||||
DELETE FROM t1;
|
||||
INSERT INTO t1 VALUES(1,2,3,4,5);
|
||||
UPDATE ON CONFLICT REPLACE t1 SET a=null;
|
||||
UPDATE OR REPLACE t1 SET a=null;
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
}
|
||||
} {1 {constraint failed}}
|
||||
@ -197,7 +197,7 @@ do_test notnull-2.3 {
|
||||
catchsql {
|
||||
DELETE FROM t1;
|
||||
INSERT INTO t1 VALUES(1,2,3,4,5);
|
||||
UPDATE ON CONFLICT IGNORE t1 SET a=null;
|
||||
UPDATE OR IGNORE t1 SET a=null;
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
}
|
||||
} {0 {1 2 3 4 5}}
|
||||
@ -205,7 +205,7 @@ do_test notnull-2.4 {
|
||||
catchsql {
|
||||
DELETE FROM t1;
|
||||
INSERT INTO t1 VALUES(1,2,3,4,5);
|
||||
UPDATE ON CONFLICT ABORT t1 SET a=null;
|
||||
UPDATE OR ABORT t1 SET a=null;
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
}
|
||||
} {1 {constraint failed}}
|
||||
@ -221,7 +221,7 @@ do_test notnull-2.6 {
|
||||
catchsql {
|
||||
DELETE FROM t1;
|
||||
INSERT INTO t1 VALUES(1,2,3,4,5);
|
||||
UPDATE ON CONFLICT REPLACE t1 SET b=null, d=e, e=d;
|
||||
UPDATE OR REPLACE t1 SET b=null, d=e, e=d;
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
}
|
||||
} {0 {1 5 3 5 4}}
|
||||
@ -229,7 +229,7 @@ do_test notnull-2.7 {
|
||||
catchsql {
|
||||
DELETE FROM t1;
|
||||
INSERT INTO t1 VALUES(1,2,3,4,5);
|
||||
UPDATE ON CONFLICT IGNORE t1 SET b=null, d=e, e=d;
|
||||
UPDATE OR IGNORE t1 SET b=null, d=e, e=d;
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
}
|
||||
} {0 {1 2 3 4 5}}
|
||||
@ -285,21 +285,21 @@ do_test notnull-3.2 {
|
||||
do_test notnull-3.3 {
|
||||
catchsql {
|
||||
DELETE FROM t1;
|
||||
INSERT IGNORE INTO t1(b,c,d,e) VALUES(2,3,4,5);
|
||||
INSERT OR IGNORE INTO t1(b,c,d,e) VALUES(2,3,4,5);
|
||||
SELECT * FROM t1 order by a;
|
||||
}
|
||||
} {0 {}}
|
||||
do_test notnull-3.4 {
|
||||
catchsql {
|
||||
DELETE FROM t1;
|
||||
INSERT REPLACE INTO t1(b,c,d,e) VALUES(2,3,4,5);
|
||||
INSERT OR REPLACE INTO t1(b,c,d,e) VALUES(2,3,4,5);
|
||||
SELECT * FROM t1 order by a;
|
||||
}
|
||||
} {1 {constraint failed}}
|
||||
do_test notnull-3.5 {
|
||||
catchsql {
|
||||
DELETE FROM t1;
|
||||
INSERT ABORT INTO t1(b,c,d,e) VALUES(2,3,4,5);
|
||||
INSERT OR ABORT INTO t1(b,c,d,e) VALUES(2,3,4,5);
|
||||
SELECT * FROM t1 order by a;
|
||||
}
|
||||
} {1 {constraint failed}}
|
||||
@ -313,21 +313,21 @@ do_test notnull-3.6 {
|
||||
do_test notnull-3.7 {
|
||||
catchsql {
|
||||
DELETE FROM t1;
|
||||
INSERT IGNORE INTO t1(a,c,d,e) VALUES(1,3,4,5);
|
||||
INSERT OR IGNORE INTO t1(a,c,d,e) VALUES(1,3,4,5);
|
||||
SELECT * FROM t1 order by a;
|
||||
}
|
||||
} {0 {1 5 3 4 5}}
|
||||
do_test notnull-3.8 {
|
||||
catchsql {
|
||||
DELETE FROM t1;
|
||||
INSERT REPLACE INTO t1(a,c,d,e) VALUES(1,3,4,5);
|
||||
INSERT OR REPLACE INTO t1(a,c,d,e) VALUES(1,3,4,5);
|
||||
SELECT * FROM t1 order by a;
|
||||
}
|
||||
} {0 {1 5 3 4 5}}
|
||||
do_test notnull-3.9 {
|
||||
catchsql {
|
||||
DELETE FROM t1;
|
||||
INSERT ABORT INTO t1(a,c,d,e) VALUES(1,3,4,5);
|
||||
INSERT OR ABORT INTO t1(a,c,d,e) VALUES(1,3,4,5);
|
||||
SELECT * FROM t1 order by a;
|
||||
}
|
||||
} {0 {1 5 3 4 5}}
|
||||
@ -341,14 +341,14 @@ do_test notnull-3.10 {
|
||||
do_test notnull-3.11 {
|
||||
catchsql {
|
||||
DELETE FROM t1;
|
||||
INSERT IGNORE INTO t1(a,b,c,d,e) VALUES(1,null,3,4,5);
|
||||
INSERT OR IGNORE INTO t1(a,b,c,d,e) VALUES(1,null,3,4,5);
|
||||
SELECT * FROM t1 order by a;
|
||||
}
|
||||
} {0 {}}
|
||||
do_test notnull-3.12 {
|
||||
catchsql {
|
||||
DELETE FROM t1;
|
||||
INSERT REPLACE INTO t1(a,b,c,d,e) VALUES(1,null,3,4,5);
|
||||
INSERT OR REPLACE INTO t1(a,b,c,d,e) VALUES(1,null,3,4,5);
|
||||
SELECT * FROM t1 order by a;
|
||||
}
|
||||
} {0 {1 5 3 4 5}}
|
||||
@ -362,35 +362,35 @@ do_test notnull-3.13 {
|
||||
do_test notnull-3.14 {
|
||||
catchsql {
|
||||
DELETE FROM t1;
|
||||
INSERT IGNORE INTO t1(a,b,c,d,e) VALUES(1,2,null,4,5);
|
||||
INSERT OR IGNORE INTO t1(a,b,c,d,e) VALUES(1,2,null,4,5);
|
||||
SELECT * FROM t1 order by a;
|
||||
}
|
||||
} {0 {}}
|
||||
do_test notnull-3.15 {
|
||||
catchsql {
|
||||
DELETE FROM t1;
|
||||
INSERT REPLACE INTO t1(a,b,c,d,e) VALUES(1,2,null,4,5);
|
||||
INSERT OR REPLACE INTO t1(a,b,c,d,e) VALUES(1,2,null,4,5);
|
||||
SELECT * FROM t1 order by a;
|
||||
}
|
||||
} {0 {1 2 6 4 5}}
|
||||
do_test notnull-3.16 {
|
||||
catchsql {
|
||||
DELETE FROM t1;
|
||||
INSERT ABORT INTO t1(a,b,c,d,e) VALUES(1,2,null,4,5);
|
||||
INSERT OR ABORT INTO t1(a,b,c,d,e) VALUES(1,2,null,4,5);
|
||||
SELECT * FROM t1 order by a;
|
||||
}
|
||||
} {1 {constraint failed}}
|
||||
do_test notnull-3.17 {
|
||||
catchsql {
|
||||
DELETE FROM t1;
|
||||
INSERT ABORT INTO t1(a,b,c,d,e) VALUES(1,2,3,null,5);
|
||||
INSERT OR ABORT INTO t1(a,b,c,d,e) VALUES(1,2,3,null,5);
|
||||
SELECT * FROM t1 order by a;
|
||||
}
|
||||
} {1 {constraint failed}}
|
||||
do_test notnull-3.18 {
|
||||
catchsql {
|
||||
DELETE FROM t1;
|
||||
INSERT ABORT INTO t1(a,b,c,e) VALUES(1,2,3,5);
|
||||
INSERT OR ABORT INTO t1(a,b,c,e) VALUES(1,2,3,5);
|
||||
SELECT * FROM t1 order by a;
|
||||
}
|
||||
} {0 {1 2 3 7 5}}
|
||||
@ -411,7 +411,7 @@ do_test notnull-3.20 {
|
||||
do_test notnull-3.21 {
|
||||
catchsql {
|
||||
DELETE FROM t1;
|
||||
INSERT REPLACE INTO t1(e,d,c,b,a) VALUES(1,2,3,null,5);
|
||||
INSERT OR REPLACE INTO t1(e,d,c,b,a) VALUES(1,2,3,null,5);
|
||||
SELECT * FROM t1 order by a;
|
||||
}
|
||||
} {0 {5 5 3 2 1}}
|
||||
@ -428,7 +428,7 @@ do_test notnull-4.2 {
|
||||
catchsql {
|
||||
DELETE FROM t1;
|
||||
INSERT INTO t1 VALUES(1,2,3,4,5);
|
||||
UPDATE ON CONFLICT REPLACE t1 SET a=null;
|
||||
UPDATE OR REPLACE t1 SET a=null;
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
}
|
||||
} {1 {constraint failed}}
|
||||
@ -436,7 +436,7 @@ do_test notnull-4.3 {
|
||||
catchsql {
|
||||
DELETE FROM t1;
|
||||
INSERT INTO t1 VALUES(1,2,3,4,5);
|
||||
UPDATE ON CONFLICT IGNORE t1 SET a=null;
|
||||
UPDATE OR IGNORE t1 SET a=null;
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
}
|
||||
} {0 {1 2 3 4 5}}
|
||||
@ -444,7 +444,7 @@ do_test notnull-4.4 {
|
||||
catchsql {
|
||||
DELETE FROM t1;
|
||||
INSERT INTO t1 VALUES(1,2,3,4,5);
|
||||
UPDATE ON CONFLICT ABORT t1 SET a=null;
|
||||
UPDATE OR ABORT t1 SET a=null;
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
}
|
||||
} {1 {constraint failed}}
|
||||
@ -460,7 +460,7 @@ do_test notnull-4.6 {
|
||||
catchsql {
|
||||
DELETE FROM t1;
|
||||
INSERT INTO t1 VALUES(1,2,3,4,5);
|
||||
UPDATE ON CONFLICT REPLACE t1 SET b=null, d=e, e=d;
|
||||
UPDATE OR REPLACE t1 SET b=null, d=e, e=d;
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
}
|
||||
} {0 {1 5 3 5 4}}
|
||||
@ -468,7 +468,7 @@ do_test notnull-4.7 {
|
||||
catchsql {
|
||||
DELETE FROM t1;
|
||||
INSERT INTO t1 VALUES(1,2,3,4,5);
|
||||
UPDATE ON CONFLICT IGNORE t1 SET b=null, d=e, e=d;
|
||||
UPDATE OR IGNORE t1 SET b=null, d=e, e=d;
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
}
|
||||
} {0 {1 2 3 4 5}}
|
||||
|
Reference in New Issue
Block a user