From: larrybr Date: Wed, 11 May 2022 19:59:31 +0000 (+0000) Subject: Change .echo on effect so that SQL is echoed before prepare. This slightly alters... X-Git-Tag: version-3.39.0~152^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f4874818a4538cdce2e74190454a4cc48ec3556d;p=thirdparty%2Fsqlite.git Change .echo on effect so that SQL is echoed before prepare. This slightly alters echoed output when multiple SQL statements are submitted at once. Also sync with trunk. FossilOrigin-Name: c1eff632c41809214edea2850a93852fff66da3ca0dc393e8fe55e0976d422fd --- f4874818a4538cdce2e74190454a4cc48ec3556d diff --cc manifest index e13b717e7c,ff7b3d4e4a..95eb715273 --- a/manifest +++ b/manifest @@@ -1,5 -1,5 +1,5 @@@ - C Fix\sa\sstale\srequirement\smark. - D 2022-05-10T17:42:55.876 -C The\sunix\sinterface\snow\sresolves\sall\ssymbolic\slinks\sin\sfilenames\sbefore\nactually\susing\sthose\sfilenames. -D 2022-05-11T17:57:43.566 ++C Change\s.echo\son\seffect\sso\sthat\sSQL\sis\sechoed\sbefore\sprepare.\sThis\sslightly\salters\sechoed\soutput\swhen\smultiple\sSQL\sstatements\sare\ssubmitted\sat\sonce.\sAlso\ssync\swith\strunk. ++D 2022-05-11T19:59:31.774 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@@ -553,8 -553,8 +553,8 @@@ F src/printf.c 512574910a45341c8ad244bd F src/random.c 097dc8b31b8fba5a9aca1697aeb9fd82078ec91be734c16bffda620ced7ab83c F src/resolve.c e9ee235c4151d2b7fa47435a219bfd30bf516a804d2f004639858087ebf3137b F src/rowset.c ba9515a922af32abe1f7d39406b9d35730ed65efab9443dc5702693b60854c92 - F src/select.c cd17de0cab436f0efc4cfeeeef1b8e03c41c40335ec757eff68e341e6a3f763f - F src/shell.c.in af2e55dbd1b3d1ea5b8c677f815ec8180aefef22299996f8ae64090d02d51aca + F src/select.c 5096a2e8ab0511a413e7f5e45453fea4102d99c5636c46792581ae67899a76d7 -F src/shell.c.in 0ad33896c3e79a9578c507c8f0589290cbc98b0af1f31ca0cf8ddbb7601e60ef ++F src/shell.c.in cf90e67622f3d1a1874a4080ac1ab6b9393a09ca4cf7d820b45a62ff2429a6c0 F src/sqlite.h.in 2a35f62185eb5e7ecc64a2f68442b538ce9be74f80f28a00abc24837edcf1c17 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8 F src/sqlite3ext.h f49e28c25bd941e79794db5415fdf7b202deb3bc072ed6f1ed273d578703684e @@@ -1397,14 -1397,14 +1397,14 @@@ F test/sharedA.test 49d87ec54ab640fbbc3 F test/sharedB.test 16cc7178e20965d75278f410943109b77b2e645e F test/shared_err.test 32634e404a3317eeb94abc7a099c556a346fdb8fb3858dbe222a4cbb8926a939 F test/sharedlock.test 5ede3c37439067c43b0198f580fd374ebf15d304 - F test/shell1.test eb2a7b768a1a20d70a8a205b11a8e3fd94b7f8d98d45aa9fb90433202609b0c3 - F test/shell2.test 7a3a23a9f57b99453f1679b1fe8072cb30e382a622874c0c4d97695fadb0a787 - F test/shell3.test a50628ab1d78d90889d9d3f32fb2c084ee15674771e96afe954aaa0accd1de3c - F test/shell4.test 8f6c0fce4abed19a8a7f7262517149812a04caa905d01bdc8f5e92573504b759 - F test/shell5.test 78a7a8516b1e7de560748881424f621321549023d3e5f7ed2e1c56497f64c06c + F test/shell1.test e4b4de56f454708e0747b52915135baa2cbfec4965406d6eaf02a4a5c22a9880 -F test/shell2.test 7a3a23a9f57b99453f1679b1fe8072cb30e382a622874c0c4d97695fadb0a787 ++F test/shell2.test c536c2aab4852608f8a606262330797abc4d964a4c2c782a7760f54ea1f17a6a + F test/shell3.test 91febeac0412812bf6370abb8ed72700e32bf8f9878849414518f662dfd55e8a + F test/shell4.test 7dc8a515705bc093d8ffe381670e8fa7a969661e8ed177c35c847e3c6dfc35e2 + F test/shell5.test c8b6c54f26ec537f8558273d7ed293ca3725ef42e6b12b8f151718628bd1473b F test/shell6.test 1ceb51b2678c472ba6cf1e5da96679ce8347889fe2c3bf93a0e0fa73f00b00d3 F test/shell7.test 115132f66d0463417f408562cc2cf534f6bbc6d83a6d50f0072a9eb171bae97f - F test/shell8.test 388471d16e4de767333107e30653983f186232c0e863f4490bb230419e830aae + F test/shell8.test 3fd093d481aaa94dc77fb73f1044c1f19c7efe3477a395cc4f7450133bc54915 F test/shmlock.test 3dbf017d34ab0c60abe6a44e447d3552154bd0c87b41eaf5ceacd408dd13fda5 F test/shortread1.test bb591ef20f0fd9ed26d0d12e80eee6d7ac8897a3 F test/show_speedtest1_rtree.tcl 32e6c5f073d7426148a6936a0408f4b5b169aba5 @@@ -1953,8 -1953,9 +1953,8 @@@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a9 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 - P b7285f92bb9bfd8471e51ee5b6dbd7030b1f731683876e8ecca4a8c033688736 - R 72fca0ee51c12a7f90dd5313ccb28616 -P df842ebc796a2b0c913d19d873e88d048808dc5283465271369e302a680317e4 c3da4c1611cebd9f9d695892a3ffddc47d5f0db1a1ea8bd2b4f83ef7673b68de -R 692b7f3944f60c275f9ba394269455ca -T +closed c3da4c1611cebd9f9d695892a3ffddc47d5f0db1a1ea8bd2b4f83ef7673b68de --U drh - Z 747367051d653b31d41a6b7e7bda4d15 -Z 68d76aedfae717687d8131de0b7511d9 ++P 3eda4030f73384abf18b97cd8a4606e10b23e382d1b72dff7526aebfde23e0af d55273e36e312336b8fc77dc771657d3b2c3437fbbd79f3be37701982560d634 ++R aa68945421e08aa1a970b0abab882c1b ++U larrybr ++Z c1c6d0984d4c87f2c4cc513f1bf72524 # Remove this line to create a well-formed Fossil manifest. diff --cc manifest.uuid index a070db8f67,59c831a63a..867849108d --- a/manifest.uuid +++ b/manifest.uuid @@@ -1,1 -1,1 +1,1 @@@ - 3eda4030f73384abf18b97cd8a4606e10b23e382d1b72dff7526aebfde23e0af -d55273e36e312336b8fc77dc771657d3b2c3437fbbd79f3be37701982560d634 ++c1eff632c41809214edea2850a93852fff66da3ca0dc393e8fe55e0976d422fd diff --cc src/shell.c.in index 1f446cadb9,1c22103f84..e560b06481 --- a/src/shell.c.in +++ b/src/shell.c.in @@@ -1191,11 -1191,10 +1191,10 @@@ struct ShellState #define SHFLG_PreserveRowid 0x00000008 /* .dump preserves rowid values */ #define SHFLG_Newlines 0x00000010 /* .dump --newline flag */ #define SHFLG_CountChanges 0x00000020 /* .changes setting */ -#define SHFLG_Echo 0x00000040 /* .echo or --echo setting */ +#define SHFLG_Echo 0x00000040 /* .echo on/off, or --echo setting */ - #define SHFLG_EchoSql 0x00000080 /* .echo sql, before prepare */ - #define SHFLG_HeaderSet 0x00000100 /* showHeader has been specified */ - #define SHFLG_DumpDataOnly 0x00000200 /* .dump show data only */ - #define SHFLG_DumpNoSys 0x00000400 /* .dump omits system tables */ + #define SHFLG_HeaderSet 0x00000080 /* showHeader has been specified */ + #define SHFLG_DumpDataOnly 0x00000100 /* .dump show data only */ + #define SHFLG_DumpNoSys 0x00000200 /* .dump omits system tables */ /* ** Macros for testing and setting shellFlgs @@@ -3826,10 -3820,11 +3820,6 @@@ static int shell_exec pArg->cnt = 0; } -- /* echo the sql statement if echo on */ -- if( pArg && ShellHasFlag(pArg, SHFLG_Echo) ){ -- utf8_printf(pArg->out, "%s\n", zStmtSql ? zStmtSql : zSql); -- } - /* Show the EXPLAIN QUERY PLAN if .eqp is on */ if( pArg && pArg->autoEQP && sqlite3_stmt_isexplain(pStmt)==0 ){ sqlite3_stmt *pExplain; @@@ -8442,8 -8437,8 +8432,8 @@@ static int do_meta_command(char *zLine int i; int savedShowHeader = p->showHeader; int savedShellFlags = p->shellFlgs; - ShellClearFlag(p, + ShellClearFlag(p, - SHFLG_PreserveRowid|SHFLG_Newlines|SHFLG_Echo|SHFLG_EchoSql + SHFLG_PreserveRowid|SHFLG_Newlines|SHFLG_Echo |SHFLG_DumpDataOnly|SHFLG_DumpNoSys); for(i=1; iout, "%12.12s: %s\n","echo", - (ShellHasFlag(p, SHFLG_EchoSql)) - ? "sql" : azBool[ShellHasFlag(p, SHFLG_Echo)]); - azBool[ShellHasFlag(p, SHFLG_Echo)]); ++ azBool[ShellHasFlag(p, SHFLG_Echo)]); utf8_printf(p->out, "%12.12s: %s\n","eqp", azBool[p->autoEQP&3]); utf8_printf(p->out, "%12.12s: %s\n","explain", p->mode==MODE_Explain ? "on" : p->autoExplain ? "auto" : "off"); @@@ -11488,6 -11469,6 +11464,9 @@@ static int runOneSqlLine(ShellState *p return 0; } ++static void echo_group_input(ShellState *p, const char *zDo){ ++ if( ShellHasFlag(p, SHFLG_Echo) ) utf8_printf(p->out, "%s\n", zDo); ++} /* ** Read input from *in and process it. If *in==0 then input @@@ -11537,14 -11518,14 +11516,13 @@@ static int process_input(ShellState *p) } qss = quickscan(zLine, qss); if( QSS_PLAINWHITE(qss) && nSql==0 ){ -- if( ShellHasFlag(p, SHFLG_Echo) ) -- printf("%s\n", zLine); /* Just swallow single-line whitespace */ ++ echo_group_input(p, zLine); qss = QSS_Start; continue; } if( zLine && (zLine[0]=='.' || zLine[0]=='#') && nSql==0 ){ -- if( ShellHasFlag(p, SHFLG_Echo) ) printf("%s\n", zLine); ++ echo_group_input(p, zLine); if( zLine[0]=='.' ){ rc = do_meta_command(zLine, p); if( rc==2 ){ /* exit requested */ @@@ -11577,6 -11558,6 +11555,7 @@@ nSql += nLine; } if( nSql && QSS_SEMITERM(qss) && sqlite3_complete(zSql) ){ ++ echo_group_input(p, zSql); errCnt += runOneSqlLine(p, zSql, p->in, startline); nSql = 0; if( p->outCount ){ @@@ -11588,13 -11569,13 +11567,14 @@@ p->bSafeMode = p->bSafeModePersist; qss = QSS_Start; }else if( nSql && QSS_PLAINWHITE(qss) ){ -- if( ShellHasFlag(p, SHFLG_Echo) ) printf("%s\n", zSql); ++ echo_group_input(p, zSql); nSql = 0; qss = QSS_Start; } } if( nSql ){ /* This may be incomplete. Let the SQL parser deal with that. */ ++ echo_group_input(p, zSql); errCnt += runOneSqlLine(p, zSql, p->in, startline); } free(zSql); diff --cc test/shell2.test index 29712c7f07,29712c7f07..2237404e5a --- a/test/shell2.test +++ b/test/shell2.test @@@ -136,16 -136,16 +136,13 @@@ SELECT * FROM foo1; SELECT * FROM foo2 INSERT INTO foo1(a) VALUES(1); CREATE TABLE foo2(b); INSERT INTO foo2(b) VALUES(1); --SELECT * FROM foo1; ++SELECT * FROM foo1; SELECT * FROM foo2; 1 --SELECT * FROM foo2; 1 --INSERT INTO foo1(a) VALUES(2); --INSERT INTO foo2(b) VALUES(2); --SELECT * FROM foo1; ++INSERT INTO foo1(a) VALUES(2); INSERT INTO foo2(b) VALUES(2); ++SELECT * FROM foo1; SELECT * FROM foo2; 1 2 --SELECT * FROM foo2; 1 2 }} @@@ -170,19 -170,19 +167,16 @@@ 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 foo1; SELECT * FROM foo2; a 1 --SELECT * FROM foo2; b 1 --INSERT INTO foo1(a) VALUES(2); --INSERT INTO foo2(b) VALUES(2); --SELECT * FROM foo1; ++INSERT INTO foo1(a) VALUES(2); INSERT INTO foo2(b) VALUES(2); ++SELECT * FROM foo1; SELECT * FROM foo2; a 1 2 --SELECT * FROM foo2; b 1 2