]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Enhance the shell export to support emitting column names in 'insert' mode when heade...
authormistachkin <mistachkin@noemail.net>
Tue, 7 Apr 2015 21:16:40 +0000 (21:16 +0000)
committermistachkin <mistachkin@noemail.net>
Tue, 7 Apr 2015 21:16:40 +0000 (21:16 +0000)
FossilOrigin-Name: 6e504cd00b148b5acca73f039a20b8acc85dc2f0

manifest
manifest.uuid
src/shell.c
test/shell1.test

index f90cdfce16bdf6a255d86e3b35b583a292704510..f267df23450cf832d4a6e9a7008b853d82b5fd1b 100644 (file)
--- 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
index 4a0e0615b017cfcafbf78120f62eb727204845f1..18c7ad58405031cf086fdc99c233c9e58dd808cb 100644 (file)
@@ -1 +1 @@
-441a00e70d8c0a3d09b7f283a65a2918791ad1bb
\ No newline at end of file
+6e504cd00b148b5acca73f039a20b8acc85dc2f0
\ No newline at end of file
index cfaa2a4cf6eebfaa0b6b5ebd71836d50c3fb3d81..b263de926e77abf1e129bb8e8b0b4b6a9902f6d7 100644 (file)
@@ -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) ){
index 78595e0ecb4eff4066ecef3cf7a2cdedd6805507..6320c63dc8535517ab464a2893d3cb67da2792bb 100644 (file)
@@ -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 {