1
0
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:
drh
2002-01-31 15:54:21 +00:00
parent b419a926d4
commit 1c92853dac
17 changed files with 331 additions and 239 deletions

View File

@ -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}}