From 6bcd58572b4bdbf390ea58f8dea3fba4689b0251 Mon Sep 17 00:00:00 2001 From: drh <> Date: Sat, 8 Jan 2022 21:00:38 +0000 Subject: [PATCH 1/2] Add function format() as an alias for printf(), for compatibility with other systems. FossilOrigin-Name: 68bffc612c467b2419bf5fe85a8ca16b787003e0e8c11f7c051a879f5865b847 --- manifest | 16 ++++++++-------- manifest.uuid | 2 +- src/func.c | 3 ++- test/upsert2.test | 8 ++++---- 4 files changed, 15 insertions(+), 14 deletions(-) diff --git a/manifest b/manifest index 66cd8be755..783d4d8a41 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Add\sthe\s'-guard:cf'\scompiler\soption\sfor\sWindows\s10,\sper\s[forum:/forumpost/8d3b4ad694|forum\spost\s8d3b4ad694]. -D 2022-01-06T17:13:56.835 +C Add\sfunction\sformat()\sas\san\salias\sfor\sprintf(),\sfor\scompatibility\swith\sother\nsystems. +D 2022-01-08T21:00:38.029 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -505,7 +505,7 @@ F src/delete.c 19814f621cde10b1771a0dea7fe25d3d7d39975b8d4be4888537d30860e7c08c F src/expr.c 827179c78d2ca7cc318392811de8151c60eacf7ce804b13e61bb7ef38f954846 F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007 F src/fkey.c 5b73f7a7c00f06017531a5bd258cbc2c7a294e55a7f84a729fe27aa525242560 -F src/func.c 0f576a0c102485676266e63a796223e63c3cdb04baf3678ccc8bfeedba4a6fd4 +F src/func.c bd0feae5c5b1680773930f07604474329e543f63502cb1e0fb127823c2a817da F src/global.c 1f56aead86e8a18c4415638f5e6c4d0a0550427f4b3f5d065ba5164cc09c22e8 F src/hash.c 8d7dda241d0ebdafb6ffdeda3149a412d7df75102cecfc1021c98d6219823b19 F src/hash.h 3340ab6e1d13e725571d7cee6d3e3135f0779a7d8e76a9ce0a85971fa3953c51 @@ -1679,7 +1679,7 @@ F test/upfrom2.test 88d39cb755db5789541e645d4e2764abc697a56958f28a3f8451a0e9342b F test/upfrom3.test 6130f24ebf97f5ea865e5d2a14a2d543fe5428a62e87cc60f62d875e45c1f5f0 F test/upfromfault.test 3a10075a0043f0c4fad6614b2c371f88a8ba5a4acab68b907438413865d6a8d6 F test/upsert1.test b0ae2f58680c5205b4bc1cdeed3c3d444057c506f6c44494fa3eac60731d68a2 -F test/upsert2.test 9c3cdbb1a890227f6504ce4b0e3de68f4cdfa16bb21d8641208a9239896c5a09 +F test/upsert2.test 720e94d09f7362a282bc69b3c6b83d51daeaaf0440eb4920a08b86518b8c7496 F test/upsert3.test 88d7d590a1948a9cb6eac1b54b0642f67a9f35a1fc0f19b200e97d5d39e3179c F test/upsert4.test 25d2a1da92f149331ae0c51ca6e3eee78189577585eab92de149900d62994fa5 F test/upsert5.test fff0dcfce73c649204543088d8e5bde01172676063ec9b8f8fc7f195abc386fe @@ -1937,8 +1937,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P b6a82f3c3b9d89fdf628c7f117b6a4a64383a36c84fe84d47c80e845c9bd8a4f -R 77a4280a2931dd249bcf6514bda5d68b -U mistachkin -Z 912599d00221acb9d08acd46c2ac9173 +P 2d6a16caa7d28ad5c766036b2eb6c2020683fcc9389b3c7df2013739929dd36f +R 1f1cd983b6be5244fac36816d9cfafc2 +U drh +Z ff3107555aaf2fc0a321eb713cb1078c # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index ba34d0d3e9..d5ae970681 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -2d6a16caa7d28ad5c766036b2eb6c2020683fcc9389b3c7df2013739929dd36f \ No newline at end of file +68bffc612c467b2419bf5fe85a8ca16b787003e0e8c11f7c051a879f5865b847 \ No newline at end of file diff --git a/src/func.c b/src/func.c index eeab1d2647..166bd6f0e4 100644 --- a/src/func.c +++ b/src/func.c @@ -258,7 +258,7 @@ endInstrOOM: } /* -** Implementation of the printf() function. +** Implementation of the printf() (a.k.a. format()) SQL function. */ static void printfFunc( sqlite3_context *context, @@ -2249,6 +2249,7 @@ void sqlite3RegisterBuiltinFunctions(void){ FUNCTION2(length, 1, 0, 0, lengthFunc, SQLITE_FUNC_LENGTH), FUNCTION(instr, 2, 0, 0, instrFunc ), FUNCTION(printf, -1, 0, 0, printfFunc ), + FUNCTION(format, -1, 0, 0, printfFunc ), FUNCTION(unicode, 1, 0, 0, unicodeFunc ), FUNCTION(char, -1, 0, 0, charFunc ), FUNCTION(abs, 1, 0, 0, absFunc ), diff --git a/test/upsert2.test b/test/upsert2.test index 1aa499e606..5cbc4656a4 100644 --- a/test/upsert2.test +++ b/test/upsert2.test @@ -72,7 +72,7 @@ do_execsql_test upsert2-300 { CREATE TABLE record(x TEXT, y TEXT); CREATE TRIGGER r1 BEFORE INSERT ON t1 BEGIN INSERT INTO record(x,y) - VALUES('before-insert',printf('%d,%d,%d',new.a,new.b,new.c)); + VALUES('before-insert',format('%d,%d,%d',new.a,new.b,new.c)); END; CREATE TRIGGER r2 AFTER INSERT ON t1 BEGIN INSERT INTO record(x,y) @@ -80,7 +80,7 @@ do_execsql_test upsert2-300 { END; CREATE TRIGGER r3 BEFORE UPDATE ON t1 BEGIN INSERT INTO record(x,y) - VALUES('before-update',printf('%d,%d,%d/%d,%d,%d', + VALUES('before-update',format('%d,%d,%d/%d,%d,%d', old.a,old.b,old.c,new.a,new.b,new.c)); END; CREATE TRIGGER r4 AFTER UPDATE ON t1 BEGIN @@ -123,7 +123,7 @@ do_execsql_test upsert2-400 { CREATE TABLE t1(a INT PRIMARY KEY, b int, c DEFAULT 0) WITHOUT ROWID; CREATE TRIGGER r1 BEFORE INSERT ON t1 BEGIN INSERT INTO record(x,y) - VALUES('before-insert',printf('%d,%d,%d',new.a,new.b,new.c)); + VALUES('before-insert',format('%d,%d,%d',new.a,new.b,new.c)); END; CREATE TRIGGER r2 AFTER INSERT ON t1 BEGIN INSERT INTO record(x,y) @@ -131,7 +131,7 @@ do_execsql_test upsert2-400 { END; CREATE TRIGGER r3 BEFORE UPDATE ON t1 BEGIN INSERT INTO record(x,y) - VALUES('before-update',printf('%d,%d,%d/%d,%d,%d', + VALUES('before-update',format('%d,%d,%d/%d,%d,%d', old.a,old.b,old.c,new.a,new.b,new.c)); END; CREATE TRIGGER r4 AFTER UPDATE ON t1 BEGIN From 5622c7f97106314719740098cf0854e7eaa81802 Mon Sep 17 00:00:00 2001 From: drh <> Date: Sat, 8 Jan 2022 21:50:00 +0000 Subject: [PATCH 2/2] Add NEVER() macros to two branches that became unreachable due to [e199a851e316bd47]. FossilOrigin-Name: 71272caff5874137ad0b1ddfc22ced4bb66e6c97f7868fdae0347a186f589b38 --- manifest | 14 +++++++------- manifest.uuid | 2 +- src/build.c | 4 ++-- src/pager.c | 1 + 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/manifest b/manifest index 783d4d8a41..a1c90a1f9a 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Add\sfunction\sformat()\sas\san\salias\sfor\sprintf(),\sfor\scompatibility\swith\sother\nsystems. -D 2022-01-08T21:00:38.029 +C Add\sNEVER()\smacros\sto\stwo\sbranches\sthat\sbecame\sunreachable\sdue\sto\n[e199a851e316bd47]. +D 2022-01-08T21:50:00.551 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -494,7 +494,7 @@ F src/btmutex.c 8acc2f464ee76324bf13310df5692a262b801808984c1b79defb2503bbafadb6 F src/btree.c 0e9f84f974e970fb373c15caa1624a281b3c33098cb9dd9021d6801c04eb4fde F src/btree.h 74d64b8f28cfa4a894d14d4ed64fa432cd697b98b61708d4351482ae15913e22 F src/btreeInt.h ee9348c4cb9077243b049edc93a82c1f32ca48baeabf2140d41362b9f9139ff7 -F src/build.c 6e16f7b539bfc55149a039bf0cda26b089640339df6147070b072df2d1c4f771 +F src/build.c c72407a27a28982a384cd453a3a6b6992a1ceae8bd8d95e96d7fb9c0d645a32f F src/callback.c 106b585da1edd57d75fa579d823a5218e0bf37f191dbf7417eeb4a8a9a267dbc F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e F src/ctime.c 8159d5f706551861c18ec6c8f6bdf105e15ea00367f05d9ab65d31a1077facc1 @@ -537,7 +537,7 @@ F src/os_setup.h 0dbaea40a7d36bf311613d31342e0b99e2536586 F src/os_unix.c f5ad51cfd024116db8531feab9efd831c2621436dca1464e4ff1e8af9bf3252e F src/os_win.c 77d39873836f1831a9b0b91894fec45ab0e9ca8e067dc8c549e1d1eca1566fe9 F src/os_win.h 7b073010f1451abe501be30d12f6bc599824944a -F src/pager.c 55a9a8c745c47a49e6541b1d634f6152e3f72f76c6dbb04fe24413986a928091 +F src/pager.c 5130bd602719ad9de1436def895da73973ee74382db02036be21238d0aa2ccfd F src/pager.h 4bf9b3213a4b2bebbced5eaa8b219cf25d4a82f385d093cd64b7e93e5285f66f F src/parse.y 761b5d30a7ea9bd2db3b3571438cfcceb5f7dbf4fcad6881c8de65bdda07135a F src/pcache.c 084e638432c610f95aea72b8509f0845d2791293f39d1b82f0c0a7e089c3bb6b @@ -1937,8 +1937,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 2d6a16caa7d28ad5c766036b2eb6c2020683fcc9389b3c7df2013739929dd36f -R 1f1cd983b6be5244fac36816d9cfafc2 +P 68bffc612c467b2419bf5fe85a8ca16b787003e0e8c11f7c051a879f5865b847 +R c94d976a37a2f277f5140b8791189b0b U drh -Z ff3107555aaf2fc0a321eb713cb1078c +Z 7446237fb7eda07b8f82330a10b1e8d5 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index d5ae970681..36029f2538 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -68bffc612c467b2419bf5fe85a8ca16b787003e0e8c11f7c051a879f5865b847 \ No newline at end of file +71272caff5874137ad0b1ddfc22ced4bb66e6c97f7868fdae0347a186f589b38 \ No newline at end of file diff --git a/src/build.c b/src/build.c index b93dd91e1c..ce1c720800 100644 --- a/src/build.c +++ b/src/build.c @@ -170,7 +170,7 @@ void sqlite3FinishCoding(Parse *pParse){ int i; int reg; - if( pReturning->nRetCol==0 ){ + if( NEVER(pReturning->nRetCol==0) ){ assert( CORRUPT_DB ); }else{ sqlite3VdbeAddOp0(v, OP_FkCheck); @@ -266,7 +266,7 @@ void sqlite3FinishCoding(Parse *pParse){ if( pParse->bReturning ){ Returning *pRet = pParse->u1.pReturning; - if( pRet->nRetCol==0 ){ + if( NEVER(pRet->nRetCol==0) ){ assert( CORRUPT_DB ); }else{ sqlite3VdbeAddOp2(v, OP_OpenEphemeral, pRet->iRetCur, pRet->nRetCol); diff --git a/src/pager.c b/src/pager.c index 24a2ce2c4c..26b8289605 100644 --- a/src/pager.c +++ b/src/pager.c @@ -5667,6 +5667,7 @@ int sqlite3PagerGet( DbPage **ppPage, /* Write a pointer to the page here */ int flags /* PAGER_GET_XXX flags */ ){ + /* printf("PAGE %u\n", pgno); fflush(stdout); */ return pPager->xGet(pPager, pgno, ppPage, flags); }