mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-01 06:27:03 +03:00
In the CLI, avoid unnecessary identifier quoting in the ".dump" output.
Also add new ".dump" test cases. FossilOrigin-Name: de65f907610a59e64cbf2214789c11f7117a86a6
This commit is contained in:
131
test/shell1.test
131
test/shell1.test
@ -740,41 +740,46 @@ do_test shell1-4.1 {
|
||||
} {0 {PRAGMA foreign_keys=OFF;
|
||||
BEGIN TRANSACTION;
|
||||
CREATE TABLE t1(x);
|
||||
INSERT INTO "t1" VALUES(NULL);
|
||||
INSERT INTO "t1" VALUES('');
|
||||
INSERT INTO "t1" VALUES(1);
|
||||
INSERT INTO "t1" VALUES(2.25);
|
||||
INSERT INTO "t1" VALUES('hello');
|
||||
INSERT INTO "t1" VALUES(X'807f');
|
||||
INSERT INTO t1 VALUES(NULL);
|
||||
INSERT INTO t1 VALUES('');
|
||||
INSERT INTO t1 VALUES(1);
|
||||
INSERT INTO t1 VALUES(2.25);
|
||||
INSERT INTO t1 VALUES('hello');
|
||||
INSERT INTO t1 VALUES(X'807f');
|
||||
CREATE TABLE t3(x,y);
|
||||
INSERT INTO "t3" VALUES(1,NULL);
|
||||
INSERT INTO "t3" VALUES(2,'');
|
||||
INSERT INTO "t3" VALUES(3,1);
|
||||
INSERT INTO "t3" VALUES(4,2.25);
|
||||
INSERT INTO "t3" VALUES(5,'hello');
|
||||
INSERT INTO "t3" VALUES(6,X'807f');
|
||||
INSERT INTO t3 VALUES(1,NULL);
|
||||
INSERT INTO t3 VALUES(2,'');
|
||||
INSERT INTO t3 VALUES(3,1);
|
||||
INSERT INTO t3 VALUES(4,2.25);
|
||||
INSERT INTO t3 VALUES(5,'hello');
|
||||
INSERT INTO t3 VALUES(6,X'807f');
|
||||
COMMIT;}}
|
||||
|
||||
# The --preserve-rowids option to .dump
|
||||
#
|
||||
do_test shell1-4.1.1 {
|
||||
catchcmd test.db {.dump --preserve-rowids}
|
||||
} {0 {PRAGMA foreign_keys=OFF;
|
||||
BEGIN TRANSACTION;
|
||||
CREATE TABLE t1(x);
|
||||
INSERT INTO "t1"(rowid,"x") VALUES(1,NULL);
|
||||
INSERT INTO "t1"(rowid,"x") VALUES(2,'');
|
||||
INSERT INTO "t1"(rowid,"x") VALUES(3,1);
|
||||
INSERT INTO "t1"(rowid,"x") VALUES(4,2.25);
|
||||
INSERT INTO "t1"(rowid,"x") VALUES(5,'hello');
|
||||
INSERT INTO "t1"(rowid,"x") VALUES(6,X'807f');
|
||||
INSERT INTO t1(rowid,x) VALUES(1,NULL);
|
||||
INSERT INTO t1(rowid,x) VALUES(2,'');
|
||||
INSERT INTO t1(rowid,x) VALUES(3,1);
|
||||
INSERT INTO t1(rowid,x) VALUES(4,2.25);
|
||||
INSERT INTO t1(rowid,x) VALUES(5,'hello');
|
||||
INSERT INTO t1(rowid,x) VALUES(6,X'807f');
|
||||
CREATE TABLE t3(x,y);
|
||||
INSERT INTO "t3"(rowid,"x","y") VALUES(1,1,NULL);
|
||||
INSERT INTO "t3"(rowid,"x","y") VALUES(2,2,'');
|
||||
INSERT INTO "t3"(rowid,"x","y") VALUES(3,3,1);
|
||||
INSERT INTO "t3"(rowid,"x","y") VALUES(4,4,2.25);
|
||||
INSERT INTO "t3"(rowid,"x","y") VALUES(5,5,'hello');
|
||||
INSERT INTO "t3"(rowid,"x","y") VALUES(6,6,X'807f');
|
||||
INSERT INTO t3(rowid,x,y) VALUES(1,1,NULL);
|
||||
INSERT INTO t3(rowid,x,y) VALUES(2,2,'');
|
||||
INSERT INTO t3(rowid,x,y) VALUES(3,3,1);
|
||||
INSERT INTO t3(rowid,x,y) VALUES(4,4,2.25);
|
||||
INSERT INTO t3(rowid,x,y) VALUES(5,5,'hello');
|
||||
INSERT INTO t3(rowid,x,y) VALUES(6,6,X'807f');
|
||||
COMMIT;}}
|
||||
|
||||
# If the table contains an INTEGER PRIMARY KEY, do not record a separate
|
||||
# rowid column in the output.
|
||||
#
|
||||
do_test shell1-4.1.2 {
|
||||
db close
|
||||
forcedelete test2.db
|
||||
@ -788,14 +793,80 @@ do_test shell1-4.1.2 {
|
||||
} {0 {PRAGMA foreign_keys=OFF;
|
||||
BEGIN TRANSACTION;
|
||||
CREATE TABLE t1(x INTEGER PRIMARY KEY, y);
|
||||
INSERT INTO "t1" VALUES(1,NULL);
|
||||
INSERT INTO "t1" VALUES(2,'');
|
||||
INSERT INTO "t1" VALUES(3,1);
|
||||
INSERT INTO "t1" VALUES(4,2.25);
|
||||
INSERT INTO "t1" VALUES(5,'hello');
|
||||
INSERT INTO "t1" VALUES(6,X'807f');
|
||||
INSERT INTO t1 VALUES(1,NULL);
|
||||
INSERT INTO t1 VALUES(2,'');
|
||||
INSERT INTO t1 VALUES(3,1);
|
||||
INSERT INTO t1 VALUES(4,2.25);
|
||||
INSERT INTO t1 VALUES(5,'hello');
|
||||
INSERT INTO t1 VALUES(6,X'807f');
|
||||
COMMIT;}}
|
||||
|
||||
# Verify that the table named [table] is correctly quoted and that
|
||||
# an INTEGER PRIMARY KEY DESC is not an alias for the rowid.
|
||||
#
|
||||
do_test shell1-4.1.3 {
|
||||
db close
|
||||
forcedelete test2.db
|
||||
sqlite3 db test2.db
|
||||
db eval {
|
||||
CREATE TABLE [table](x INTEGER PRIMARY KEY DESC, y);
|
||||
INSERT INTO [table] VALUES(1,null), (12,''), (23,1),
|
||||
(34,2.25), (45,'hello'), (56,x'807f');
|
||||
}
|
||||
catchcmd test2.db {.dump --preserve-rowids}
|
||||
} {0 {PRAGMA foreign_keys=OFF;
|
||||
BEGIN TRANSACTION;
|
||||
CREATE TABLE [table](x INTEGER PRIMARY KEY DESC, y);
|
||||
INSERT INTO "table"(rowid,x,y) VALUES(1,1,NULL);
|
||||
INSERT INTO "table"(rowid,x,y) VALUES(2,12,'');
|
||||
INSERT INTO "table"(rowid,x,y) VALUES(3,23,1);
|
||||
INSERT INTO "table"(rowid,x,y) VALUES(4,34,2.25);
|
||||
INSERT INTO "table"(rowid,x,y) VALUES(5,45,'hello');
|
||||
INSERT INTO "table"(rowid,x,y) VALUES(6,56,X'807f');
|
||||
COMMIT;}}
|
||||
|
||||
# Do not record rowids for a WITHOUT ROWID table. Also check correct quoting
|
||||
# of table names that contain odd characters.
|
||||
#
|
||||
do_test shell1-4.1.4 {
|
||||
db close
|
||||
forcedelete test2.db
|
||||
sqlite3 db test2.db
|
||||
db eval {
|
||||
CREATE TABLE [ta<>ble](x INTEGER PRIMARY KEY, y) WITHOUT ROWID;
|
||||
INSERT INTO [ta<>ble] VALUES(1,null), (12,''), (23,1),
|
||||
(34,2.25), (45,'hello'), (56,x'807f');
|
||||
}
|
||||
catchcmd test2.db {.dump --preserve-rowids}
|
||||
} {0 {PRAGMA foreign_keys=OFF;
|
||||
BEGIN TRANSACTION;
|
||||
CREATE TABLE [ta<>ble](x INTEGER PRIMARY KEY, y) WITHOUT ROWID;
|
||||
INSERT INTO "ta<>ble" VALUES(1,NULL);
|
||||
INSERT INTO "ta<>ble" VALUES(12,'');
|
||||
INSERT INTO "ta<>ble" VALUES(23,1);
|
||||
INSERT INTO "ta<>ble" VALUES(34,2.25);
|
||||
INSERT INTO "ta<>ble" VALUES(45,'hello');
|
||||
INSERT INTO "ta<>ble" VALUES(56,X'807f');
|
||||
COMMIT;}}
|
||||
|
||||
# Do not record rowids if the rowid is inaccessible
|
||||
#
|
||||
do_test shell1-4.1.5 {
|
||||
db close
|
||||
forcedelete test2.db
|
||||
sqlite3 db test2.db
|
||||
db eval {
|
||||
CREATE TABLE t1(_ROWID_,rowid,oid);
|
||||
INSERT INTO t1 VALUES(1,null,'alpha'), (12,'',99), (23,1,x'b0b1b2');
|
||||
}
|
||||
catchcmd test2.db {.dump --preserve-rowids}
|
||||
} {0 {PRAGMA foreign_keys=OFF;
|
||||
BEGIN TRANSACTION;
|
||||
CREATE TABLE t1(_ROWID_,rowid,oid);
|
||||
INSERT INTO t1 VALUES(1,NULL,'alpha');
|
||||
INSERT INTO t1 VALUES(12,'',99);
|
||||
INSERT INTO t1 VALUES(23,1,X'b0b1b2');
|
||||
COMMIT;}}
|
||||
|
||||
# Test the output of ".mode insert"
|
||||
#
|
||||
|
Reference in New Issue
Block a user