]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix a problem with the CLI where not all SQL commands were being echoed.
authorshaneh <shaneh@noemail.net>
Mon, 18 Jan 2010 18:17:10 +0000 (18:17 +0000)
committershaneh <shaneh@noemail.net>
Mon, 18 Jan 2010 18:17:10 +0000 (18:17 +0000)
Added tests of same to tools/shell2.test.  Ticket [eb620916be].

FossilOrigin-Name: 7080ae3bc3828168483ac23d5b8976d67ea5089e

manifest
manifest.uuid
src/shell.c
tool/shell2.test

index 44cc5707a80507b412c2f5520eb24364b39626b6..bf929028bffb59c7bb78c69f4f5a2e5f6025ea6e 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\stest\snumbering\sin\sfts3snippet.test.
-D 2010-01-15T17:33:50
+C Fix\sa\sproblem\swith\sthe\sCLI\swhere\snot\sall\sSQL\scommands\swere\sbeing\sechoed.\s\s\nAdded\stests\sof\ssame\sto\stools/shell2.test.\s\sTicket\s[eb620916be].
+D 2010-01-18T18:17:10
 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
 F Makefile.in c5827ead754ab32b9585487177c93bb00b9497b3
 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@@ -163,7 +163,7 @@ F src/random.c cd4a67b3953b88019f8cd4ccd81394a8ddfaba50
 F src/resolve.c 56ecd50851afa9dbcc1803ef86a9b17b3f3d3b89
 F src/rowset.c 69afa95a97c524ba6faf3805e717b5b7ae85a697
 F src/select.c 0109b993c360d649857523abb72919e1794f9b45
-F src/shell.c b95c5fcfe458027f192914a47474652969a1ec0f
+F src/shell.c d7408dbe4d17fbefc0e63e85f6498634962922f9
 F src/sqlite.h.in d493cf5029de67fe7252324473d89140a007a6c4
 F src/sqlite3ext.h 69dfb8116af51b84a029cddb3b35062354270c89
 F src/sqliteInt.h 84b20b8be124b9c1d4abfd79208710febba382fa
@@ -772,7 +772,7 @@ F tool/omittest.tcl 27d6f6e3b1e95aeb26a1c140e6eb57771c6d794a
 F tool/opcodeDoc.awk b3a2a3d5d3075b8bd90b7afe24283efdd586659c
 F tool/restore_jrnl.tcl 6957a34f8f1f0f8285e07536225ec3b292a9024a
 F tool/shell1.test ef08a3e738b9fee4fc228920956950bc35db0575
-F tool/shell2.test 91824fff77514b6b00227744c475c09c34134a4e
+F tool/shell2.test 8f51f61c13b88618e71c17439fe0847c2421c5d1
 F tool/shell3.test ff663e83100670a295d473515c12beb8103a78b6
 F tool/showdb.c 8ab8b3b53884312aafb7ef60982e255a6c31d238
 F tool/showjournal.c ec3b171be148656827c4949fbfb8ab4370822f87
@@ -785,7 +785,7 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
 F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
-P 5e9d8ccae9731f380527463ef87ddcd216b4b721
-R 6754ce2dfd9d134bc105f32a3aa30412
-U dan
-Z bbb4d86ef223195e8166a6c82a95bc90
+P 34f6854685f00158bc536dd53ac5bc20e19fe071
+R 33c261ff7c30e0ad7a1793cafe971c5c
+U shaneh
+Z 79aeb636bb9c2f44057691bade01f4e8
index 64f54a8f6e2b3ebecf2ddef049f0e14e649d2507..b7927aa7f717e54dd72c10dc59df22644a98e86a 100644 (file)
@@ -1 +1 @@
-34f6854685f00158bc536dd53ac5bc20e19fe071
\ No newline at end of file
+7080ae3bc3828168483ac23d5b8976d67ea5089e
\ No newline at end of file
index 8c7a91f08da60c3bf72abb4dc6dc764c2fe94065..af56792ecd42d79b507482db5df56bbf5015df42 100644 (file)
@@ -1501,10 +1501,6 @@ static int shell_callback(void *pArg, int nArg, char **azArg, char **azCol, int
   int i;
   struct callback_data *p = (struct callback_data*)pArg;
 
-  if( p->echoOn && p->cnt==0  && p->pStmt){
-    printf("%s\n", sqlite3_sql(p->pStmt));
-  }
-
   switch( p->mode ){
     case MODE_Line: {
       int w = 5;
@@ -1855,6 +1851,12 @@ static int shell_exec(
         continue;
       }
 
+      /* echo the sql statement if echo on */
+      if( pArg->echoOn ){
+        char *zStmtSql = sqlite3_sql(pStmt);\r
+        fprintf(pArg->out,"%s\n", zStmtSql ? zStmtSql : zSql);
+      }\r
+
       /* perform the first step.  this will tell us if we
       ** have a result set or not and how wide it is.
       */
index 03fee23fa7d32a7df09eb9bcddb52d9e8e8df3e4..0ecb01def886afebb3111e4abc3e77fb121519be 100644 (file)
@@ -99,3 +99,122 @@ do_test shell2-1.3 {
 } {1 {Error: near line 9: too many levels of trigger recursion}}
 
 
+
+# Shell not echoing all commands with echo on.
+# Ticket [eb620916be].
+
+# Test with echo off
+# NB. whitespace is important
+do_test shell2-1.4.1 {
+  file delete -force foo.db
+  catchcmd "foo.db" {CREATE TABLE foo(a);
+INSERT INTO foo(a) VALUES(1);
+SELECT * FROM foo;}
+} {0 1}
+
+# Test with echo on using command line option
+# NB. whitespace is important
+do_test shell2-1.4.2 {
+  file delete -force foo.db
+  catchcmd "-echo foo.db" {CREATE TABLE foo(a);
+INSERT INTO foo(a) VALUES(1);
+SELECT * FROM foo;}
+} {0 {CREATE TABLE foo(a);
+INSERT INTO foo(a) VALUES(1);
+SELECT * FROM foo;
+1}}
+
+# Test with echo on using dot command
+# NB. whitespace is important
+do_test shell2-1.4.3 {
+  file delete -force foo.db
+  catchcmd "foo.db" {.echo ON
+CREATE TABLE foo(a);
+INSERT INTO foo(a) VALUES(1);
+SELECT * FROM foo;}
+} {0 {CREATE TABLE foo(a);
+INSERT INTO foo(a) VALUES(1);
+SELECT * FROM foo;
+1}}
+
+# Test with echo on using dot command and 
+# turning off mid- processing.
+# NB. whitespace is important
+do_test shell2-1.4.4 {
+  file delete -force foo.db
+  catchcmd "foo.db" {.echo ON
+CREATE TABLE foo(a);
+.echo OFF
+INSERT INTO foo(a) VALUES(1);
+SELECT * FROM foo;}
+} {0 {CREATE TABLE foo(a);
+.echo OFF
+1}}
+
+# Test with echo on using dot command and 
+# multiple commands per line.
+# NB. whitespace is important
+do_test shell2-1.4.5 {
+  file delete -force foo.db
+  catchcmd "foo.db" {.echo ON
+CREATE TABLE foo1(a);
+INSERT INTO foo1(a) VALUES(1);
+CREATE TABLE foo2(b);
+INSERT INTO foo2(b) VALUES(1);
+SELECT * FROM foo1; SELECT * FROM foo2;
+INSERT INTO foo1(a) VALUES(2); INSERT INTO foo2(b) VALUES(2);
+SELECT * FROM foo1; SELECT * FROM foo2;
+}
+} {0 {CREATE TABLE foo1(a);
+INSERT INTO foo1(a) VALUES(1);
+CREATE TABLE foo2(b);
+INSERT INTO foo2(b) VALUES(1);
+SELECT * FROM foo1;
+1
+SELECT * FROM foo2;
+1
+INSERT INTO foo1(a) VALUES(2);
+INSERT INTO foo2(b) VALUES(2);
+SELECT * FROM foo1;
+1
+2
+SELECT * FROM foo2;
+1
+2}}
+
+# Test with echo on and headers on using dot command and 
+# multiple commands per line.
+# NB. whitespace is important
+do_test shell2-1.4.6 {
+  file delete -force foo.db
+  catchcmd "foo.db" {.echo ON
+.headers ON
+CREATE TABLE foo1(a);
+INSERT INTO foo1(a) VALUES(1);
+CREATE TABLE foo2(b);
+INSERT INTO foo2(b) VALUES(1);
+SELECT * FROM foo1; SELECT * FROM foo2;
+INSERT INTO foo1(a) VALUES(2); INSERT INTO foo2(b) VALUES(2);
+SELECT * FROM foo1; SELECT * FROM foo2;
+}
+} {0 {.headers ON
+CREATE TABLE foo1(a);
+INSERT INTO foo1(a) VALUES(1);
+CREATE TABLE foo2(b);
+INSERT INTO foo2(b) VALUES(1);
+SELECT * FROM foo1;
+a
+1
+SELECT * FROM foo2;
+b
+1
+INSERT INTO foo1(a) VALUES(2);
+INSERT INTO foo2(b) VALUES(2);
+SELECT * FROM foo1;
+a
+1
+2
+SELECT * FROM foo2;
+b
+1
+2}}