@@ -324,5 +324,47 @@ do_test 6.3.2 { sqlite3_errcode db2 } {SQLITE_ERROR}
324324do_test 6.4 {
325325 catchsql { INSERT INTO c1 VALUES(100, 200) } db2
326326} {1 {no such table: main.p1}}
327+ db2 close
328+
329+ #-------------------------------------------------------------------------
330+ reset_db
331+
332+ do_execsql_test 7.0 {
333+ PRAGMA trusted_schema=OFF;
334+ PRAGMA foreign_keys=ON;
335+ CREATE TABLE t1(a INTEGER PRIMARY KEY, b, c, d);
336+ CREATE TABLE t2(e TEXT PRIMARY KEY NOT NULL, f, g);
337+ CREATE TABLE t3(w REAL PRIMARY KEY NOT NULL, x, y);
338+ CREATE TABLE t4(z PRIMARY KEY) WITHOUT ROWID;
339+ CREATE TABLE tc(a INTEGER, b INTEGER, c BLOB, d TEXT, PRIMARY KEY(a,b));
340+ CREATE TABLE wr(a TEXT, b INT, c, PRIMARY KEY(a,b)) WITHOUT ROWID;
341+ CREATE TABLE child(x INTEGER PRIMARY KEY, y INTEGER REFERENCES t1(a) ON DELETE CASCADE, z TEXT);
342+ INSERT INTO t1 VALUES(1,2,3,4),(2,3.5,'four',x'556677'),(3,NULL,'xyz',15),(4,'bubba',2147483648,0.0);
343+ INSERT INTO t1 SELECT a+4,c,d,b FROM t1;
344+ INSERT INTO t2 VALUES('x1y',2,3),('x2y','four',x'556677'),('x3y',NULL,'xyz');
345+ INSERT INTO t3 VALUES(1.1,'a','b'),(2.2,x'00ff','c');
346+ INSERT INTO t4 VALUES('alpha'),('beta'),('gamma');
347+ INSERT INTO tc VALUES(1,1,x'0102','one'),(1,2,x'0304','two'),(2,1,x'0506','three');
348+ INSERT INTO wr VALUES('a',1,'wa'),('b',2,'wb');
349+ INSERT INTO child VALUES(1,1,'c1'),(2,2,'c2');
350+ }
351+
352+ set C [db one "SELECT unhex('
353+ 54 0401 0200 0074 6300 1700 0100 0000
354+ 0000 0000 0101 0000 0000 0069 0001 0402
355+ 0102 0303 6f6e 6500 0004 2008 40a1 4c0b
356+ 0d3f 3730 5d92 3f18 f2c9 66a6 4220 a873
357+ 04cc 5281 ce5c d9d4 dc8b 7003 056f 6e65
358+ 2d75 1700 0100 0002 5004 0100 0000 6d69
359+ 7800 1700 0302 6b31 0409 1100
360+ ', ' \n')"]
361+
362+
363+ proc conflict_handler {args} {
364+ return "OMIT"
365+ }
366+ do_test 7.1 {
367+ list [catch {sqlite3changeset_apply_v2 db $::C conflict_handler} msg] $msg
368+ } {1 SQLITE_CORRUPT}
327369
328370finish_test
0 commit comments