2015-05-11 20:46:14 +03:00
|
|
|
# 2015-05-11
|
|
|
|
#
|
|
|
|
# The author disclaims copyright to this source code. In place of
|
|
|
|
# a legal notice, here is a blessing:
|
|
|
|
#
|
|
|
|
# May you do good and not evil.
|
|
|
|
# May you find forgiveness for yourself and forgive others.
|
|
|
|
# May you share freely, never taking more than you give.
|
|
|
|
#
|
|
|
|
#***********************************************************************
|
|
|
|
#
|
|
|
|
# Quick tests for the sqldiff tool
|
|
|
|
#
|
|
|
|
set testdir [file dirname $argv0]
|
|
|
|
source $testdir/tester.tcl
|
2015-05-12 15:24:50 +03:00
|
|
|
|
2016-03-19 17:53:36 +03:00
|
|
|
set PROG [test_find_sqldiff]
|
|
|
|
|
2015-05-11 20:46:14 +03:00
|
|
|
db close
|
|
|
|
forcedelete test.db test2.db
|
|
|
|
sqlite3 db test.db
|
|
|
|
|
|
|
|
do_test sqldiff-1.0 {
|
|
|
|
db eval {
|
|
|
|
CREATE TABLE t1(a INTEGER PRIMARY KEY, b);
|
|
|
|
CREATE TABLE t2(a INT PRIMARY KEY, b) WITHOUT ROWID;
|
|
|
|
WITH RECURSIVE c(x) AS (VALUES(1) UNION ALL SELECT x+1 FROM c WHERE x<100)
|
|
|
|
INSERT INTO t1(a,b) SELECT x, printf('abc-%d-xyz',x) FROM c;
|
|
|
|
INSERT INTO t2(a,b) SELECT a, b FROM t1;
|
|
|
|
}
|
|
|
|
db backup test2.db
|
|
|
|
db eval {
|
|
|
|
ATTACH 'test2.db' AS x2;
|
|
|
|
DELETE FROM x2.t1 WHERE a=49;
|
|
|
|
DELETE FROM x2.t2 WHERE a=48;
|
|
|
|
INSERT INTO x2.t1(a,b) VALUES(1234,'hello');
|
|
|
|
INSERT INTO x2.t2(a,b) VALUES(50.5,'xyzzy');
|
2021-07-26 22:49:01 +03:00
|
|
|
INSERT INTO x2.t2(a,b) VALUES(51.5,'');
|
|
|
|
INSERT INTO x2.t2(a,b) VALUES(52.5,''||X'0d0a');
|
|
|
|
INSERT INTO x2.t2(a,b) VALUES(53.5,'one'||X'0a0d');
|
|
|
|
INSERT INTO x2.t2(a,b) VALUES(54.5,'one'||X'0a'||'two');
|
2015-05-11 20:46:14 +03:00
|
|
|
CREATE TABLE x2.t3(a,b,c);
|
|
|
|
INSERT INTO x2.t3 VALUES(111,222,333);
|
|
|
|
CREATE TABLE main.t4(x,y,z);
|
|
|
|
INSERT INTO t4 SELECT * FROM t3;
|
|
|
|
}
|
|
|
|
set line "exec $PROG test.db test2.db"
|
|
|
|
unset -nocomplain ::MSG
|
|
|
|
catch {eval $line} ::MSG
|
|
|
|
} {0}
|
|
|
|
do_test sqldiff-1.1 {
|
|
|
|
set ::MSG
|
|
|
|
} {DELETE FROM t1 WHERE a=49;
|
|
|
|
INSERT INTO t1(a,b) VALUES(1234,'hello');
|
|
|
|
DELETE FROM t2 WHERE a=48;
|
|
|
|
INSERT INTO t2(a,b) VALUES(50.5,'xyzzy');
|
2021-07-26 22:49:01 +03:00
|
|
|
INSERT INTO t2(a,b) VALUES(51.5,'');
|
|
|
|
INSERT INTO t2(a,b) VALUES(52.5,''||X'0d0a');
|
|
|
|
INSERT INTO t2(a,b) VALUES(53.5,'one'||X'0a0d');
|
|
|
|
INSERT INTO t2(a,b) VALUES(54.5,'one'||X'0a'
|
|
|
|
||'two');
|
2015-05-11 20:46:14 +03:00
|
|
|
CREATE TABLE t3(a,b,c);
|
|
|
|
INSERT INTO t3(rowid,a,b,c) VALUES(1,111,222,333);
|
|
|
|
DROP TABLE t4;}
|
2015-05-11 21:48:52 +03:00
|
|
|
|
2023-05-27 23:08:23 +03:00
|
|
|
db close
|
|
|
|
forcedelete test.db test2.db
|
|
|
|
sqlite3 db test.db
|
|
|
|
|
|
|
|
do_test sqldiff-2.0 {
|
|
|
|
db eval {
|
|
|
|
CREATE TABLE t1(a INTEGER PRIMARY KEY);
|
|
|
|
}
|
|
|
|
db close
|
|
|
|
sqlite3 db test2.db
|
|
|
|
db eval {
|
|
|
|
CREATE TABLE t1(a INTEGER PRIMARY KEY, b);
|
|
|
|
}
|
|
|
|
db close
|
|
|
|
set line "exec $PROG test.db test2.db"
|
|
|
|
unset -nocomplain ::MSG
|
|
|
|
catch {eval $line} ::MSG
|
|
|
|
} {0}
|
|
|
|
do_test sqldiff-2.1 {
|
|
|
|
set ::MSG
|
|
|
|
} {ALTER TABLE t1 ADD COLUMN b;}
|
|
|
|
|
2015-05-11 21:48:52 +03:00
|
|
|
finish_test
|