aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormistachkin <mistachkin@noemail.net>2015-04-07 21:16:40 +0000
committermistachkin <mistachkin@noemail.net>2015-04-07 21:16:40 +0000
commit151c75ad89cd946ca22eaddc8ac1a9bb0fb5a1b6 (patch)
tree2b5b2643551441f4b1235e89644444de77566cb9
parent48cc29a9ac5a167ca37d9ff17b2cd652d08fd6f3 (diff)
downloadsqlite-151c75ad89cd946ca22eaddc8ac1a9bb0fb5a1b6.tar.gz
sqlite-151c75ad89cd946ca22eaddc8ac1a9bb0fb5a1b6.zip
Enhance the shell export to support emitting column names in 'insert' mode when headers are enabled.
FossilOrigin-Name: 6e504cd00b148b5acca73f039a20b8acc85dc2f0
-rw-r--r--manifest14
-rw-r--r--manifest.uuid2
-rw-r--r--src/shell.c11
-rw-r--r--test/shell1.test45
4 files changed, 62 insertions, 10 deletions
diff --git a/manifest b/manifest
index f90cdfce1..f267df234 100644
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Merge\supdates\sfrom\strunk.
-D 2015-03-21T02:34:17.432
+C Enhance\sthe\sshell\sexport\sto\ssupport\semitting\scolumn\snames\sin\s'insert'\smode\swhen\sheaders\sare\senabled.
+D 2015-04-07T21:16:40.811
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
F Makefile.in 88a3e6261286db378fdffa1124cad11b3c05f5bb
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -231,7 +231,7 @@ F src/random.c ba2679f80ec82c4190062d756f22d0c358180696
F src/resolve.c f4d79e31ffa5820c2e3d1740baa5e9b190425f2b
F src/rowset.c eccf6af6d620aaa4579bd3b72c1b6395d9e9fa1e
F src/select.c 94e016b6733b1d39a2f4c8d431155b4c2897d907
-F src/shell.c b13fcdf5b9c24c9abb487db6edcc3d138ec5a187
+F src/shell.c 7c436bcafe1b71c4f27204db922fc9ff45c1c645
F src/sqlite.h.in c7c9111477b76c82c46bf851b619df4dd35cc095
F src/sqlite3.rc 992c9f5fb8285ae285d6be28240a7e8d3a7f2bad
F src/sqlite3ext.h 17d487c3c91b0b8c584a32fbeb393f6f795eea7d
@@ -863,7 +863,7 @@ F test/sharedA.test 0cdf1a76dfa00e6beee66af5b534b1e8df2720f5
F test/sharedB.test 16cc7178e20965d75278f410943109b77b2e645e
F test/shared_err.test 2f2aee20db294b9924e81f6ccbe60f19e21e8506
F test/sharedlock.test 5ede3c37439067c43b0198f580fd374ebf15d304
-F test/shell1.test 0860b92352f061ab075ea099af3ce8ac920b6f65
+F test/shell1.test 9520d19c70cf2db8900646fdfff7b2289486f3bc
F test/shell2.test 12b8bf901b0e3a8ac58cf5c0c63a0a388d4d1862
F test/shell3.test 5e8545ec72c4413a0e8d4c6be56496e3c257ca29
F test/shell4.test 4cd3bd50200bf2efd6a74175d98da65aa86daf26
@@ -1246,7 +1246,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 3e363f405655e2e39588029d797496a952cca11d 880d2513a0fb084fae82080401b108fb13e61478
-R 2726ca1fd09fea272fc1c80ed9f1f02e
+P 441a00e70d8c0a3d09b7f283a65a2918791ad1bb
+R fad5114d2005637cb8cd6f4cdfea439c
U mistachkin
-Z b45a25175857ca7588106b2ccc3489d8
+Z ca14d500328ad187c33b777b4a807652
diff --git a/manifest.uuid b/manifest.uuid
index 4a0e0615b..18c7ad584 100644
--- a/manifest.uuid
+++ b/manifest.uuid
@@ -1 +1 @@
-441a00e70d8c0a3d09b7f283a65a2918791ad1bb \ No newline at end of file
+6e504cd00b148b5acca73f039a20b8acc85dc2f0 \ No newline at end of file
diff --git a/src/shell.c b/src/shell.c
index cfaa2a4cf..b263de926 100644
--- a/src/shell.c
+++ b/src/shell.c
@@ -989,7 +989,16 @@ static int shell_callback(
case MODE_Insert: {
p->cnt++;
if( azArg==0 ) break;
- fprintf(p->out,"INSERT INTO %s VALUES(",p->zDestTable);
+ fprintf(p->out,"INSERT INTO %s",p->zDestTable);
+ if( p->showHeader ){
+ fprintf(p->out,"(");
+ for(i=0; i<nArg; i++){
+ char *zSep = i>0 ? ",": "";
+ fprintf(p->out, "%s%s", zSep, azCol[i]);
+ }
+ fprintf(p->out,")");
+ }
+ fprintf(p->out," VALUES(");
for(i=0; i<nArg; i++){
char *zSep = i>0 ? ",": "";
if( (azArg[i]==0) || (aiType && aiType[i]==SQLITE_NULL) ){
diff --git a/test/shell1.test b/test/shell1.test
index 78595e0ec..6320c63dc 100644
--- a/test/shell1.test
+++ b/test/shell1.test
@@ -738,6 +738,9 @@ do_test shell1-4.1 {
PRAGMA encoding=UTF16;
CREATE TABLE t1(x);
INSERT INTO t1 VALUES(null), (''), (1), (2.25), ('hello'), (x'807f');
+ CREATE TABLE t3(x,y);
+ INSERT INTO t3 VALUES(1,null), (2,''), (3,1),
+ (4,2.25), (5,'hello'), (6,x'807f');
}
catchcmd test.db {.dump}
} {0 {PRAGMA foreign_keys=OFF;
@@ -749,11 +752,18 @@ 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');
COMMIT;}}
# Test the output of ".mode insert"
#
-do_test shell1-4.2 {
+do_test shell1-4.2.1 {
catchcmd test.db ".mode insert t1\nselect * from t1;"
} {0 {INSERT INTO t1 VALUES(NULL);
INSERT INTO t1 VALUES('');
@@ -762,6 +772,39 @@ INSERT INTO t1 VALUES(2.25);
INSERT INTO t1 VALUES('hello');
INSERT INTO t1 VALUES(X'807f');}}
+# Test the output of ".mode insert" with headers
+#
+do_test shell1-4.2.2 {
+ catchcmd test.db ".mode insert t1\n.headers on\nselect * from t1;"
+} {0 {INSERT INTO t1(x) VALUES(NULL);
+INSERT INTO t1(x) VALUES('');
+INSERT INTO t1(x) VALUES(1);
+INSERT INTO t1(x) VALUES(2.25);
+INSERT INTO t1(x) VALUES('hello');
+INSERT INTO t1(x) VALUES(X'807f');}}
+
+# Test the output of ".mode insert"
+#
+do_test shell1-4.2.3 {
+ catchcmd test.db ".mode insert t3\nselect * from t3;"
+} {0 {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');}}
+
+# Test the output of ".mode insert" with headers
+#
+do_test shell1-4.2.3 {
+ catchcmd test.db ".mode insert t3\n.headers on\nselect * from t3;"
+} {0 {INSERT INTO t3(x,y) VALUES(1,NULL);
+INSERT INTO t3(x,y) VALUES(2,'');
+INSERT INTO t3(x,y) VALUES(3,1);
+INSERT INTO t3(x,y) VALUES(4,2.25);
+INSERT INTO t3(x,y) VALUES(5,'hello');
+INSERT INTO t3(x,y) VALUES(6,X'807f');}}
+
# Test the output of ".mode tcl"
#
do_test shell1-4.3 {