From 2fb488d10af0068581b9096225d1a68c9563562f Mon Sep 17 00:00:00 2001 From: drh <> Date: Tue, 17 Dec 2024 14:32:37 +0000 Subject: [PATCH 01/13] Do not attempt to truncate a database in sqlite_dbpage if the database is not larger than the requested truncation size. FossilOrigin-Name: cf8b99e17872c054e7ac0832d12633ce497c843dfc67148daf3b17762fd2b424 --- manifest | 12 ++++++------ manifest.uuid | 2 +- src/dbpage.c | 4 +++- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/manifest b/manifest index 09541b416a..bdec535f48 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Code\sformatting\schanges\sto\smake\strunk\smore\slike\swal2. -D 2024-12-16T18:04:39.151 +C Do\snot\sattempt\sto\struncate\sa\sdatabase\sin\ssqlite_dbpage\sif\sthe\sdatabase\sis\nnot\slarger\sthan\sthe\srequested\struncation\ssize. +D 2024-12-17T14:32:37.037 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md e108e1e69ae8e8a59e93c455654b8ac9356a11720d3345df2a4743e9590fb20d @@ -724,7 +724,7 @@ F src/callback.c db3a45e376deff6a16c0058163fe0ae2b73a2945f3f408ca32cf74960b28d49 F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e F src/ctime.c d35723024b963edce9c0fad5b3303e8bb9266083784844baed10a6dedfe26f3b F src/date.c 89ce1ff20512a7fa5070ba6e7dd5c171148ca7d580955795bf97c79c2456144a -F src/dbpage.c 6c52074b0edb914d526c85541ca0f1fd23822b5dac39b6ee9b7f375d9fa592e9 +F src/dbpage.c d1778e74b15549e3967974b5addf740462db1a9d441da35666177f5a6ccf34c5 F src/dbstat.c 73362c0df0f40ad5523a6f5501224959d0976757b511299bf892313e79d14f5c F src/delete.c 03a77ba20e54f0f42ebd8eddf15411ed6bdb06a2c472ac4b6b336521bf7cea42 F src/expr.c 3329173aacc6c37da3971b6253827799b32e301673be00126df8271bf018e15f @@ -2202,8 +2202,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P 4fab85b3d0d1cad2d185f2456de7ddf281badf8561cc051e10e16655441dcc84 -R 9aaaecad314aea90d45c80b60798b57a +P 8f725472b0fe62359a4cd3237b43d7b834e042d8ce425abde06e3ed6c62dbafa +R f83865aeabb05b29d2a4c65bc73bad9b U drh -Z 2a765bcb487b40c3fb2da87580a07616 +Z 186addad6fd799939fab1f666168b1b5 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 2eb63b396b..b955e088a9 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -8f725472b0fe62359a4cd3237b43d7b834e042d8ce425abde06e3ed6c62dbafa +cf8b99e17872c054e7ac0832d12633ce497c843dfc67148daf3b17762fd2b424 diff --git a/src/dbpage.c b/src/dbpage.c index 124952456c..3bb18b6775 100644 --- a/src/dbpage.c +++ b/src/dbpage.c @@ -428,7 +428,9 @@ static int dbpageSync(sqlite3_vtab *pVtab){ if( pTab->pgnoTrunc>0 ){ Btree *pBt = pTab->db->aDb[pTab->iDbTrunc].pBt; Pager *pPager = sqlite3BtreePager(pBt); - sqlite3PagerTruncateImage(pPager, pTab->pgnoTrunc); + if( pTab->pgnoTruncpgnoTrunc); + } } pTab->pgnoTrunc = 0; return SQLITE_OK; From 0c34eab477b78431615a75319d918200ed59c5fe Mon Sep 17 00:00:00 2001 From: stephan Date: Wed, 18 Dec 2024 03:41:29 +0000 Subject: [PATCH 02/13] Rename some var refs in ext/lsm1/Makefile for the new build process. FossilOrigin-Name: 0ce42fa586049e8864c5fd1a1d8703722f8549ba0a20ca748b887b7975ba9eb7 --- ext/lsm1/Makefile | 10 +++++----- manifest | 14 +++++++------- manifest.uuid | 2 +- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/ext/lsm1/Makefile b/ext/lsm1/Makefile index 7056432d2d..d497a1d133 100644 --- a/ext/lsm1/Makefile +++ b/ext/lsm1/Makefile @@ -46,11 +46,11 @@ LSMTESTSRC = $(LSMDIR)/lsm-test/lsmtest1.c $(LSMDIR)/lsm-test/lsmtest2.c \ LSMOPTS += -fPIC -DLSM_MUTEX_PTHREADS=1 -I$(LSMDIR) -DHAVE_ZLIB lsm.so: $(LSMOBJ) - $(TCCX) -shared -fPIC -o lsm.so $(LSMOBJ) + $(T.link) -shared -fPIC -o lsm.so $(LSMOBJ) %.o: $(LSMDIR)/%.c $(LSMHDR) sqlite3.h - $(TCCX) $(LSMOPTS) -c $< - + $(T.link) $(LSMOPTS) -c $< + lsmtest$(EXE): $(LSMOBJ) $(LSMTESTSRC) $(LSMTESTHDR) sqlite3.o - # $(TCPPX) -c $(TOP)/lsm-test/lsmtest_tdb2.cc - $(TCCX) $(LSMOPTS) $(LSMTESTSRC) $(LSMOBJ) sqlite3.o -o lsmtest$(EXE) $(THREADLIB) -lz + # $(T.link) -c $(TOP)/lsm-test/lsmtest_tdb2.cc + $(T.link) $(LSMOPTS) $(LSMTESTSRC) $(LSMOBJ) sqlite3.o -o lsmtest$(EXE) $(THREADLIB) -lz diff --git a/manifest b/manifest index bdec535f48..e451f68c58 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Do\snot\sattempt\sto\struncate\sa\sdatabase\sin\ssqlite_dbpage\sif\sthe\sdatabase\sis\nnot\slarger\sthan\sthe\srequested\struncation\ssize. -D 2024-12-17T14:32:37.037 +C Rename\ssome\svar\srefs\sin\sext/lsm1/Makefile\sfor\sthe\snew\sbuild\sprocess. +D 2024-12-18T03:41:29.636 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md e108e1e69ae8e8a59e93c455654b8ac9356a11720d3345df2a4743e9590fb20d @@ -350,7 +350,7 @@ F ext/jni/src/org/sqlite/jni/wrapper1/WindowFunction.java c7d1452f9ff26175b3c19b F ext/jni/src/tests/000-000-sanity.test c3427a0e0ac84d7cbe4c95fdc1cd4b61f9ddcf43443408f3000139478c4dc745 F ext/jni/src/tests/000-001-ignored.test e17e874c6ab3c437f1293d88093cf06286083b65bf162317f91bbfd92f961b70 F ext/jni/src/tests/900-001-fts.test bf0ce17a8d082773450e91f2388f5bbb2dfa316d0b676c313c637a91198090f0 -F ext/lsm1/Makefile a553b728bba6c11201b795188c5708915cc4290f02b7df6ba7e8c4c943fd5cd9 +F ext/lsm1/Makefile 851a8108af2f00d6086b7be8a76fe54eabe2dd4cfd4171fd39285c5b11bee90d F ext/lsm1/Makefile.msc f8c878b467232226de288da320e1ac71c131f5ec91e08b21f502303347260013 F ext/lsm1/lsm-test/README 87ea529d2abe615e856d4714bfe8bb185e6c2771b8612aa6298588b7b43e6f86 F ext/lsm1/lsm-test/lsmtest.h cf58528ffe0cfe535e91b44584e2ec5fb1caacdabecef0d8dcf83bf83168bf28 @@ -2202,8 +2202,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P 8f725472b0fe62359a4cd3237b43d7b834e042d8ce425abde06e3ed6c62dbafa -R f83865aeabb05b29d2a4c65bc73bad9b -U drh -Z 186addad6fd799939fab1f666168b1b5 +P cf8b99e17872c054e7ac0832d12633ce497c843dfc67148daf3b17762fd2b424 +R 01b5a3081c9c82dd29ec02ca22f387c4 +U stephan +Z 4f1059aef64fc0c129910f0aeaff4182 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index b955e088a9..d9be76ac96 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -cf8b99e17872c054e7ac0832d12633ce497c843dfc67148daf3b17762fd2b424 +0ce42fa586049e8864c5fd1a1d8703722f8549ba0a20ca748b887b7975ba9eb7 From 47bc07d4256b6f2509bd63d998acc6b49dc51659 Mon Sep 17 00:00:00 2001 From: drh <> Date: Wed, 18 Dec 2024 18:29:19 +0000 Subject: [PATCH 03/13] Avoid 32-bit roundoff error on the second argument to round(). [forum:/forumpost/170aeab92a|Forum post 170aeab92a]. FossilOrigin-Name: a9759fc78d6cb0df7c81f20c2c5c358729e571ebee50ee2b1441a15239d0b4b6 --- manifest | 16 ++++++++-------- manifest.uuid | 2 +- src/func.c | 4 ++-- test/func.test | 3 +++ 4 files changed, 14 insertions(+), 11 deletions(-) diff --git a/manifest b/manifest index e451f68c58..b48881d98e 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Rename\ssome\svar\srefs\sin\sext/lsm1/Makefile\sfor\sthe\snew\sbuild\sprocess. -D 2024-12-18T03:41:29.636 +C Avoid\s32-bit\sroundoff\serror\son\sthe\ssecond\sargument\sto\sround().\n[forum:/forumpost/170aeab92a|Forum\spost\s170aeab92a]. +D 2024-12-18T18:29:19.106 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md e108e1e69ae8e8a59e93c455654b8ac9356a11720d3345df2a4743e9590fb20d @@ -730,7 +730,7 @@ F src/delete.c 03a77ba20e54f0f42ebd8eddf15411ed6bdb06a2c472ac4b6b336521bf7cea42 F src/expr.c 3329173aacc6c37da3971b6253827799b32e301673be00126df8271bf018e15f F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007 F src/fkey.c 928ed2517e8732113d2b9821aa37af639688d752f4ea9ac6e0e393d713eeb76f -F src/func.c 49489dcce46d2d491cedb451e974264150c473e5f5bba448498a9aa4c1993537 +F src/func.c 33d06376d6fed6dfce22deb475f99317b0b76694e688f06e9fce9480ff44a5c9 F src/global.c a19e4b1ca1335f560e9560e590fc13081e21f670643367f99cb9e8f9dc7d615b F src/hash.c 9ee4269fb1d6632a6fecfb9479c93a1f29271bddbbaf215dd60420bcb80c7220 F src/hash.h 3340ab6e1d13e725571d7cee6d3e3135f0779a7d8e76a9ce0a85971fa3953c51 @@ -1258,7 +1258,7 @@ F test/fts4umlaut.test fcaca4471de7e78c9d1f7e8976e3e8704d7d8ad979d57a739d00f3f75 F test/fts4unicode.test 82a9c16b68ba2f358a856226bb2ee02f81583797bc4744061c54401bf1a0f4c9 F test/fts4upfrom.test f25835162c989dffd5e2ef91ec24c4848cc9973093e2d492d1c7b32afac1b49d F test/full.test 6b3c8fb43c6beab6b95438c1675374b95fab245d -F test/func.test e643522c6c67e18b14ac6453f28b39daa7e01d4cdf3b17bee6ec544804be85af +F test/func.test 4b8d5e7f1356ca42084e56e6c6f28f9e380db727756fb40dc319107c7632b157 F test/func2.test 69f6ae3751b4ec765bdc3b803c0a255aa0f693f28f44805bef03e6b4a3fd242f F test/func3.test 600a632c305a88f3946d38f9a51efe145c989b2e13bd2b2a488db47fe76bab6a F test/func4.test a02e695f62beb31cb092dccf6873ff97543407fff97a5f3ec4da70b5b337bc84 @@ -2202,8 +2202,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P cf8b99e17872c054e7ac0832d12633ce497c843dfc67148daf3b17762fd2b424 -R 01b5a3081c9c82dd29ec02ca22f387c4 -U stephan -Z 4f1059aef64fc0c129910f0aeaff4182 +P 0ce42fa586049e8864c5fd1a1d8703722f8549ba0a20ca748b887b7975ba9eb7 +R fec4eb95d4677d8b995343c16db49fdb +U drh +Z 79885f3615d84c43267a5b2a5adaf77f # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index d9be76ac96..9781afa1e5 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -0ce42fa586049e8864c5fd1a1d8703722f8549ba0a20ca748b887b7975ba9eb7 +a9759fc78d6cb0df7c81f20c2c5c358729e571ebee50ee2b1441a15239d0b4b6 diff --git a/src/func.c b/src/func.c index 2d25803e0d..00dad97e43 100644 --- a/src/func.c +++ b/src/func.c @@ -440,13 +440,13 @@ static void substrFunc( */ #ifndef SQLITE_OMIT_FLOATING_POINT static void roundFunc(sqlite3_context *context, int argc, sqlite3_value **argv){ - int n = 0; + i64 n = 0; double r; char *zBuf; assert( argc==1 || argc==2 ); if( argc==2 ){ if( SQLITE_NULL==sqlite3_value_type(argv[1]) ) return; - n = sqlite3_value_int(argv[1]); + n = sqlite3_value_int64(argv[1]); if( n>30 ) n = 30; if( n<0 ) n = 0; } diff --git a/test/func.test b/test/func.test index 73ff2b7355..b8a2cd6659 100644 --- a/test/func.test +++ b/test/func.test @@ -339,6 +339,9 @@ ifcapable floatingpoint { do_test func-4.39 { string tolower [db eval {SELECT round(1e500), round(-1e500);}] } {inf -inf} + do_execsql_test func-4.40 { + SELECT round(123.456 , 4294967297); + } {123.456} } # Test the upper() and lower() functions From b097ef29d12788153f7381bb5598430d6028d7f7 Mon Sep 17 00:00:00 2001 From: drh <> Date: Wed, 18 Dec 2024 20:29:29 +0000 Subject: [PATCH 04/13] Fix possible integer oveflow in the second and third argument to substr(). FossilOrigin-Name: b04b4006f38f83d36eaf43c4bace7d53866b02b45e0ddcf1704266fed3bfc11c --- manifest | 14 +++++++------- manifest.uuid | 2 +- src/func.c | 4 ++-- test/func.test | 6 ++++++ 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/manifest b/manifest index b48881d98e..266012a6f8 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Avoid\s32-bit\sroundoff\serror\son\sthe\ssecond\sargument\sto\sround().\n[forum:/forumpost/170aeab92a|Forum\spost\s170aeab92a]. -D 2024-12-18T18:29:19.106 +C Fix\spossible\sinteger\soveflow\sin\sthe\ssecond\sand\sthird\sargument\sto\ssubstr(). +D 2024-12-18T20:29:29.783 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md e108e1e69ae8e8a59e93c455654b8ac9356a11720d3345df2a4743e9590fb20d @@ -730,7 +730,7 @@ F src/delete.c 03a77ba20e54f0f42ebd8eddf15411ed6bdb06a2c472ac4b6b336521bf7cea42 F src/expr.c 3329173aacc6c37da3971b6253827799b32e301673be00126df8271bf018e15f F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007 F src/fkey.c 928ed2517e8732113d2b9821aa37af639688d752f4ea9ac6e0e393d713eeb76f -F src/func.c 33d06376d6fed6dfce22deb475f99317b0b76694e688f06e9fce9480ff44a5c9 +F src/func.c 92f1c5a5116fd96e009f1a6ae59c15ee571985f75cbcddab0ba10f84035a2805 F src/global.c a19e4b1ca1335f560e9560e590fc13081e21f670643367f99cb9e8f9dc7d615b F src/hash.c 9ee4269fb1d6632a6fecfb9479c93a1f29271bddbbaf215dd60420bcb80c7220 F src/hash.h 3340ab6e1d13e725571d7cee6d3e3135f0779a7d8e76a9ce0a85971fa3953c51 @@ -1258,7 +1258,7 @@ F test/fts4umlaut.test fcaca4471de7e78c9d1f7e8976e3e8704d7d8ad979d57a739d00f3f75 F test/fts4unicode.test 82a9c16b68ba2f358a856226bb2ee02f81583797bc4744061c54401bf1a0f4c9 F test/fts4upfrom.test f25835162c989dffd5e2ef91ec24c4848cc9973093e2d492d1c7b32afac1b49d F test/full.test 6b3c8fb43c6beab6b95438c1675374b95fab245d -F test/func.test 4b8d5e7f1356ca42084e56e6c6f28f9e380db727756fb40dc319107c7632b157 +F test/func.test 59ae5fbfc2d5d565e3475824b25df2acc6f1b728d1a8d8e3e719ce64c494f69d F test/func2.test 69f6ae3751b4ec765bdc3b803c0a255aa0f693f28f44805bef03e6b4a3fd242f F test/func3.test 600a632c305a88f3946d38f9a51efe145c989b2e13bd2b2a488db47fe76bab6a F test/func4.test a02e695f62beb31cb092dccf6873ff97543407fff97a5f3ec4da70b5b337bc84 @@ -2202,8 +2202,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P 0ce42fa586049e8864c5fd1a1d8703722f8549ba0a20ca748b887b7975ba9eb7 -R fec4eb95d4677d8b995343c16db49fdb +P a9759fc78d6cb0df7c81f20c2c5c358729e571ebee50ee2b1441a15239d0b4b6 +R 0e55189459a80d645412fd9406897915 U drh -Z 79885f3615d84c43267a5b2a5adaf77f +Z ddc339cbca9c68ef9d9f1e1df3d93e64 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 9781afa1e5..3e1bf40a1b 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -a9759fc78d6cb0df7c81f20c2c5c358729e571ebee50ee2b1441a15239d0b4b6 +b04b4006f38f83d36eaf43c4bace7d53866b02b45e0ddcf1704266fed3bfc11c diff --git a/src/func.c b/src/func.c index 00dad97e43..e4c628047d 100644 --- a/src/func.c +++ b/src/func.c @@ -363,7 +363,7 @@ static void substrFunc( return; } p0type = sqlite3_value_type(argv[0]); - p1 = sqlite3_value_int(argv[1]); + p1 = sqlite3_value_int64(argv[1]); if( p0type==SQLITE_BLOB ){ len = sqlite3_value_bytes(argv[0]); z = sqlite3_value_blob(argv[0]); @@ -388,7 +388,7 @@ static void substrFunc( if( p1==0 ) p1 = 1; /* */ #endif if( argc==3 ){ - p2 = sqlite3_value_int(argv[2]); + p2 = sqlite3_value_int64(argv[2]); if( p2<0 ){ p2 = -p2; negP2 = 1; diff --git a/test/func.test b/test/func.test index b8a2cd6659..2b25c94340 100644 --- a/test/func.test +++ b/test/func.test @@ -117,6 +117,12 @@ do_test func-2.9 { do_test func-2.10 { execsql {SELECT substr(a,2,2) FROM t2} } {{} {} 45 {} 78} +do_test func-2.11 { + execsql {SELECT substr('abcdefg',0x100000001,2)} +} {{}} +do_test func-2.12 { + execsql {SELECT substr('abcdefg',1,0x100000002)} +} {abcdefg} # Only do the following tests if TCL has UTF-8 capabilities # From 2dcd4fad6b1a4cfbaa0c1e106b840d15caf574dd Mon Sep 17 00:00:00 2001 From: drh <> Date: Thu, 19 Dec 2024 12:08:39 +0000 Subject: [PATCH 05/13] Fix additional integer overflow problems in the substr() function. FossilOrigin-Name: 472abb492f1d1553ae6bdf53cc64bebfe75423526335beab7eaff26cc495cd7d --- manifest | 14 +++++++------- manifest.uuid | 2 +- src/func.c | 6 ++++-- test/func.test | 3 +++ 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/manifest b/manifest index 266012a6f8..890f176556 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\spossible\sinteger\soveflow\sin\sthe\ssecond\sand\sthird\sargument\sto\ssubstr(). -D 2024-12-18T20:29:29.783 +C Fix\sadditional\sinteger\soverflow\sproblems\sin\sthe\ssubstr()\sfunction. +D 2024-12-19T12:08:39.381 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md e108e1e69ae8e8a59e93c455654b8ac9356a11720d3345df2a4743e9590fb20d @@ -730,7 +730,7 @@ F src/delete.c 03a77ba20e54f0f42ebd8eddf15411ed6bdb06a2c472ac4b6b336521bf7cea42 F src/expr.c 3329173aacc6c37da3971b6253827799b32e301673be00126df8271bf018e15f F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007 F src/fkey.c 928ed2517e8732113d2b9821aa37af639688d752f4ea9ac6e0e393d713eeb76f -F src/func.c 92f1c5a5116fd96e009f1a6ae59c15ee571985f75cbcddab0ba10f84035a2805 +F src/func.c 3772ea69ace31835841629f893d86c9316a6facbc489f8113c7a205ec373de29 F src/global.c a19e4b1ca1335f560e9560e590fc13081e21f670643367f99cb9e8f9dc7d615b F src/hash.c 9ee4269fb1d6632a6fecfb9479c93a1f29271bddbbaf215dd60420bcb80c7220 F src/hash.h 3340ab6e1d13e725571d7cee6d3e3135f0779a7d8e76a9ce0a85971fa3953c51 @@ -1258,7 +1258,7 @@ F test/fts4umlaut.test fcaca4471de7e78c9d1f7e8976e3e8704d7d8ad979d57a739d00f3f75 F test/fts4unicode.test 82a9c16b68ba2f358a856226bb2ee02f81583797bc4744061c54401bf1a0f4c9 F test/fts4upfrom.test f25835162c989dffd5e2ef91ec24c4848cc9973093e2d492d1c7b32afac1b49d F test/full.test 6b3c8fb43c6beab6b95438c1675374b95fab245d -F test/func.test 59ae5fbfc2d5d565e3475824b25df2acc6f1b728d1a8d8e3e719ce64c494f69d +F test/func.test 15f686741608294340bbea9f35f751074b4cf7df3797724dda40a9f4905ddbe1 F test/func2.test 69f6ae3751b4ec765bdc3b803c0a255aa0f693f28f44805bef03e6b4a3fd242f F test/func3.test 600a632c305a88f3946d38f9a51efe145c989b2e13bd2b2a488db47fe76bab6a F test/func4.test a02e695f62beb31cb092dccf6873ff97543407fff97a5f3ec4da70b5b337bc84 @@ -2202,8 +2202,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P a9759fc78d6cb0df7c81f20c2c5c358729e571ebee50ee2b1441a15239d0b4b6 -R 0e55189459a80d645412fd9406897915 +P b04b4006f38f83d36eaf43c4bace7d53866b02b45e0ddcf1704266fed3bfc11c +R 345d60c42f9cb58fb08744de2e2cd750 U drh -Z ddc339cbca9c68ef9d9f1e1df3d93e64 +Z 5a2ba1d4ac587b2805dae851878da0c3 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 3e1bf40a1b..50afdd985d 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -b04b4006f38f83d36eaf43c4bace7d53866b02b45e0ddcf1704266fed3bfc11c +472abb492f1d1553ae6bdf53cc64bebfe75423526335beab7eaff26cc495cd7d diff --git a/src/func.c b/src/func.c index e4c628047d..2fe50f0155 100644 --- a/src/func.c +++ b/src/func.c @@ -427,9 +427,11 @@ static void substrFunc( sqlite3_result_text64(context, (char*)z, z2-z, SQLITE_TRANSIENT, SQLITE_UTF8); }else{ - if( p1+p2>len ){ + if( p1>=len ){ + p1 = p2 = 0; + }else if( p2>len-p1 ){ p2 = len-p1; - if( p2<0 ) p2 = 0; + assert( p2>0 ); } sqlite3_result_blob64(context, (char*)&z[p1], (u64)p2, SQLITE_TRANSIENT); } diff --git a/test/func.test b/test/func.test index 2b25c94340..85c9ada7eb 100644 --- a/test/func.test +++ b/test/func.test @@ -123,6 +123,9 @@ do_test func-2.11 { do_test func-2.12 { execsql {SELECT substr('abcdefg',1,0x100000002)} } {abcdefg} +do_test func-2.13 { + execsql {SELECT quote(substr(x'313233343536373839',0x7ffffffffffffffe,5))} +} {X''} # Only do the following tests if TCL has UTF-8 capabilities # From 543ee479eb3ec73c9611e23b28934871f9ec9331 Mon Sep 17 00:00:00 2001 From: drh <> Date: Thu, 19 Dec 2024 13:36:36 +0000 Subject: [PATCH 06/13] Enhance lemon so that it accepts the -U command-line option that undefines a preprocessor macro. FossilOrigin-Name: e2188a3edf3576963b45e9ffe6ef53e2a85aa68ea3dfb3243b4943d06ffaf829 --- manifest | 12 ++++++------ manifest.uuid | 2 +- tool/lemon.c | 18 ++++++++++++++++++ 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/manifest b/manifest index 890f176556..feb0519e3d 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sadditional\sinteger\soverflow\sproblems\sin\sthe\ssubstr()\sfunction. -D 2024-12-19T12:08:39.381 +C Enhance\slemon\sso\sthat\sit\saccepts\sthe\s-U\scommand-line\soption\sthat\sundefines\na\spreprocessor\smacro. +D 2024-12-19T13:36:36.903 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md e108e1e69ae8e8a59e93c455654b8ac9356a11720d3345df2a4743e9590fb20d @@ -2131,7 +2131,7 @@ F tool/genfkey.test b6afd7b825d797a1e1274f519ab5695373552ecad5cd373530c63533638a F tool/getlock.c f4c39b651370156cae979501a7b156bdba50e7ce F tool/index_usage.c f62a0c701b2c7ff2f3e21d206f093c123f222dbf07136a10ffd1ca15a5c706c5 F tool/kvtest-speed.sh 4761a9c4b3530907562314d7757995787f7aef8f -F tool/lemon.c d048516b2c3ad4119b1c1154a73f4f9435b275fea076318959f817effe23b827 +F tool/lemon.c 2418ee31f65764d150f7dd87ef00b4408f1b01a55db0b30bed673a3e336ae718 F tool/lempar.c e6b649778e5c027c8365ff01d7ef39297cd7285fa1f881cce31792689541e79f F tool/libvers.c caafc3b689638a1d88d44bc5f526c2278760d9b9 F tool/loadfts.c c3c64e4d5e90e8ba41159232c2189dba4be7b862 @@ -2202,8 +2202,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P b04b4006f38f83d36eaf43c4bace7d53866b02b45e0ddcf1704266fed3bfc11c -R 345d60c42f9cb58fb08744de2e2cd750 +P 472abb492f1d1553ae6bdf53cc64bebfe75423526335beab7eaff26cc495cd7d +R 9ee08cc86a2ab41c90aabb4242760c7f U drh -Z 5a2ba1d4ac587b2805dae851878da0c3 +Z 57993657619d1e9f48e898579d8c0801 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 50afdd985d..2dfb20d161 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -472abb492f1d1553ae6bdf53cc64bebfe75423526335beab7eaff26cc495cd7d +e2188a3edf3576963b45e9ffe6ef53e2a85aa68ea3dfb3243b4943d06ffaf829 diff --git a/tool/lemon.c b/tool/lemon.c index d92df2a1a7..5747520b6e 100644 --- a/tool/lemon.c +++ b/tool/lemon.c @@ -1628,6 +1628,23 @@ static void handle_D_option(char *z){ *z = 0; } +/* This routine is called with the argument to each -U command-line option. +** Omit a previously defined macro. +*/ +static void handle_U_option(char *z){ + int i; + for(i=0; i Date: Thu, 19 Dec 2024 14:08:06 +0000 Subject: [PATCH 07/13] Fix the Microsoft makefile so that it does not set SQLITE_TEMP_STORE unnecessarily. FossilOrigin-Name: f9b92f9513def690311a5ca46b68cab02bedec7984960d44e7dea5c2d196725a --- Makefile.msc | 9 --------- autoconf/Makefile.msc | 9 --------- manifest | 14 +++++++------- manifest.uuid | 2 +- 4 files changed, 8 insertions(+), 26 deletions(-) diff --git a/Makefile.msc b/Makefile.msc index 14f2ab8c67..942f759eed 100644 --- a/Makefile.msc +++ b/Makefile.msc @@ -1103,15 +1103,6 @@ RCC = $(RCC) -DSQLITE_THREAD_OVERRIDE_LOCK=-1 TLIBS = !ENDIF -# Flags controlling use of the in memory btree implementation -# -# SQLITE_TEMP_STORE is 0 to force temporary tables to be in a file, 1 to -# default to file, 2 to default to memory, and 3 to force temporary -# tables to always be in memory. -# -TCC = $(TCC) -DSQLITE_TEMP_STORE=1 -RCC = $(RCC) -DSQLITE_TEMP_STORE=1 - # Enable/disable loadable extensions, and other optional features # based on configuration. (-DSQLITE_OMIT*, -DSQLITE_ENABLE*). # The same set of OMIT and ENABLE flags should be passed to the diff --git a/autoconf/Makefile.msc b/autoconf/Makefile.msc index c23bbf494a..1f0e42db4b 100644 --- a/autoconf/Makefile.msc +++ b/autoconf/Makefile.msc @@ -801,15 +801,6 @@ RCC = $(RCC) -DSQLITE_THREAD_OVERRIDE_LOCK=-1 TLIBS = !ENDIF -# Flags controlling use of the in memory btree implementation -# -# SQLITE_TEMP_STORE is 0 to force temporary tables to be in a file, 1 to -# default to file, 2 to default to memory, and 3 to force temporary -# tables to always be in memory. -# -TCC = $(TCC) -DSQLITE_TEMP_STORE=1 -RCC = $(RCC) -DSQLITE_TEMP_STORE=1 - # Enable/disable loadable extensions, and other optional features # based on configuration. (-DSQLITE_OMIT*, -DSQLITE_ENABLE*). # The same set of OMIT and ENABLE flags should be passed to the diff --git a/manifest b/manifest index feb0519e3d..adf5f72696 100644 --- a/manifest +++ b/manifest @@ -1,11 +1,11 @@ -C Enhance\slemon\sso\sthat\sit\saccepts\sthe\s-U\scommand-line\soption\sthat\sundefines\na\spreprocessor\smacro. -D 2024-12-19T13:36:36.903 +C Fix\sthe\sMicrosoft\smakefile\sso\sthat\sit\sdoes\snot\sset\sSQLITE_TEMP_STORE\nunnecessarily. +D 2024-12-19T14:08:06.761 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md e108e1e69ae8e8a59e93c455654b8ac9356a11720d3345df2a4743e9590fb20d F Makefile.in ad349acf91b3569033439fe498fa197aa530cafaa01362eb7daad2f84e43d265 F Makefile.linux-generic bd3e3cacd369821a6241d4ea1967395c962dfe3057e38cb0a435cee0e8b789d0 -F Makefile.msc f402bb6ea63b44f5143aa3c637aa3f69794cf14b1cc964eb97c4f53124198561 +F Makefile.msc eed0c40c365d100f3329e8fb7d0e18bad09a6f0c026aa1e4dc7f88270378929d F README.md c3c0f19532ce28f6297a71870f3c7b424729f0e6d9ab889616d3587dd2332159 F VERSION 8dc0c3df15fd5ff0622f88fc483533fce990b1cbb2f5fb9fdfb4dbd71eef2889 F art/icon-243x273.gif 9750b734f82fdb3dc43127753d5e6fbf3b62c9f4e136c2fbf573b2f57ea87af5 @@ -18,7 +18,7 @@ F auto.def f2876c94403be1055db47273dde33e8fea0998b1c1d36a386f76698919ea36ad F autoconf/INSTALL 83e4a25da9fd053c7b3665eaaaf7919707915903 F autoconf/Makefile.am adedc1324b6a87fdd1265ddd336d2fb7d4f36a0e77b86ea553ae7cc4ea239347 F autoconf/Makefile.fallback 22fe523eb36dfce31e0f6349f782eb084e86a5620b2b0b4f84a2d6133f53f5ac -F autoconf/Makefile.msc 0735351f6002f0bf78b73b3b7a6a120cff38573dd37c37005b682ecc44c25bc2 +F autoconf/Makefile.msc ffff61fe851443015ddb6600ab69a9df503cfec25459b336be7ba8c9a9e473f8 F autoconf/README.first 6c4f34fe115ff55d4e8dbfa3cecf04a0188292f7 F autoconf/README.txt 5e946ffb6fbdbb114c81e1bdc862df27fce8beab557d7b0421820b0fe8fc048f F autoconf/configure.ac ec7fa914c5e74ff212fe879f9bb6918e1234497e05facfb641f30c4d5893b277 @@ -2202,8 +2202,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P 472abb492f1d1553ae6bdf53cc64bebfe75423526335beab7eaff26cc495cd7d -R 9ee08cc86a2ab41c90aabb4242760c7f +P e2188a3edf3576963b45e9ffe6ef53e2a85aa68ea3dfb3243b4943d06ffaf829 +R fca299ca2e778dc1f6b849301fe4d4fb U drh -Z 57993657619d1e9f48e898579d8c0801 +Z 5ca71bb0728c1324bb94823ee29eaeef # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 2dfb20d161..bc9b17953b 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -e2188a3edf3576963b45e9ffe6ef53e2a85aa68ea3dfb3243b4943d06ffaf829 +f9b92f9513def690311a5ca46b68cab02bedec7984960d44e7dea5c2d196725a From 166f4eb5cf5ae25ba203f860e48efb9a258bf1f6 Mon Sep 17 00:00:00 2001 From: stephan Date: Thu, 19 Dec 2024 14:09:35 +0000 Subject: [PATCH 08/13] configure script: only set the SQLITE_TEMP_STORE feature flag if --with-tempstore is explicitly set, to avoid colliding with that flag being set by other means via the test fixture scripts. FossilOrigin-Name: c7839b80972fb31df6ac81af38cf6d04c9542714c20fbaa7457c1eaf955f9222 --- auto.def | 35 ++++++++++++++++++++--------------- manifest | 14 +++++++------- manifest.uuid | 2 +- 3 files changed, 28 insertions(+), 23 deletions(-) diff --git a/auto.def b/auto.def index c52ce44986..c9aa0cb9d1 100644 --- a/auto.def +++ b/auto.def @@ -864,22 +864,27 @@ proj-if-opt-truthy threadsafe { ######################################################################## # Do we want temporary databases in memory? # -apply {{} { - set ts [opt-val with-tempstore no] - set tsn 1 - msg-checking "Use an in-RAM database for temporary tables? " - switch -exact -- $ts { - never { set tsn 0 } - no { set tsn 1 } - yes { set tsn 2 } - always { set tsn 3 } - default { - user-error "Invalid --with-tempstore value '$ts'. Use one of: never, no, yes, always" +# The test fixture likes to set SQLITE_TEMP_STORE on its own, so do +# not set that feature flag unless it was explicitly provided to the +# configure script. +if {[proj-opt-was-provided with-tempstore]} { + apply {{} { + set ts [opt-val with-tempstore no] + set tsn 1 + msg-checking "Use an in-RAM database for temporary tables? " + switch -exact -- $ts { + never { set tsn 0 } + no { set tsn 1 } + yes { set tsn 2 } + always { set tsn 3 } + default { + user-error "Invalid --with-tempstore value '$ts'. Use one of: never, no, yes, always" + } } - } - msg-result $ts - sqlite-add-feature-flag -DSQLITE_TEMP_STORE=$tsn -}} + msg-result $ts + sqlite-add-feature-flag -DSQLITE_TEMP_STORE=$tsn + }} +} ######################################################################## # sqlite-check-line-editing jumps through proverbial hoops to try to diff --git a/manifest b/manifest index adf5f72696..476bc293f5 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sthe\sMicrosoft\smakefile\sso\sthat\sit\sdoes\snot\sset\sSQLITE_TEMP_STORE\nunnecessarily. -D 2024-12-19T14:08:06.761 +C configure\sscript:\sonly\sset\sthe\sSQLITE_TEMP_STORE\sfeature\sflag\sif\s--with-tempstore\sis\sexplicitly\sset,\sto\savoid\scolliding\swith\sthat\sflag\sbeing\sset\sby\sother\smeans\svia\sthe\stest\sfixture\sscripts. +D 2024-12-19T14:09:35.677 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md e108e1e69ae8e8a59e93c455654b8ac9356a11720d3345df2a4743e9590fb20d @@ -14,7 +14,7 @@ F art/sqlite370.eps aa97a671332b432a54e1d74ff5e8775be34200c2 F art/sqlite370.ico af56c1d00fee7cd4753e8631ed60703ed0fc6e90 F art/sqlite370.jpg d512473dae7e378a67e28ff96a34da7cb331def2 F art/sqlite370.svg 40b7e2fe8aac3add5d56dd86ab8d427a4eca5bcb3fe4f8946cb3794e1821d531 -F auto.def f2876c94403be1055db47273dde33e8fea0998b1c1d36a386f76698919ea36ad +F auto.def 63dfbbc58b041d1c5c516f31a02679cce8d79123c89ad87fd2783f4ef26dedbb F autoconf/INSTALL 83e4a25da9fd053c7b3665eaaaf7919707915903 F autoconf/Makefile.am adedc1324b6a87fdd1265ddd336d2fb7d4f36a0e77b86ea553ae7cc4ea239347 F autoconf/Makefile.fallback 22fe523eb36dfce31e0f6349f782eb084e86a5620b2b0b4f84a2d6133f53f5ac @@ -2202,8 +2202,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P e2188a3edf3576963b45e9ffe6ef53e2a85aa68ea3dfb3243b4943d06ffaf829 -R fca299ca2e778dc1f6b849301fe4d4fb -U drh -Z 5ca71bb0728c1324bb94823ee29eaeef +P f9b92f9513def690311a5ca46b68cab02bedec7984960d44e7dea5c2d196725a +R 1677c650b894e550921b2c6865a336f8 +U stephan +Z 945c85e044fc70c85b4eacbaf56b56af # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index bc9b17953b..7c5ebd691d 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -f9b92f9513def690311a5ca46b68cab02bedec7984960d44e7dea5c2d196725a +c7839b80972fb31df6ac81af38cf6d04c9542714c20fbaa7457c1eaf955f9222 From f2d422c528475e8f39a5b71e108c37b4083d5385 Mon Sep 17 00:00:00 2001 From: drh <> Date: Thu, 19 Dec 2024 14:20:47 +0000 Subject: [PATCH 09/13] Fix the sort4.test module so that the first two test cases are omitted when SQLite has been compiled using SQLITE_MAX_WORKER_THREADS=0. FossilOrigin-Name: 5b96dcf5f6bf41dcb89ced64efd4585e36dce718c428c2324d94e4942905c3bb --- manifest | 14 +++++++------- manifest.uuid | 2 +- test/sort4.test | 30 ++++++++++++++++-------------- 3 files changed, 24 insertions(+), 22 deletions(-) diff --git a/manifest b/manifest index 476bc293f5..0da317676b 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C configure\sscript:\sonly\sset\sthe\sSQLITE_TEMP_STORE\sfeature\sflag\sif\s--with-tempstore\sis\sexplicitly\sset,\sto\savoid\scolliding\swith\sthat\sflag\sbeing\sset\sby\sother\smeans\svia\sthe\stest\sfixture\sscripts. -D 2024-12-19T14:09:35.677 +C Fix\sthe\ssort4.test\smodule\sso\sthat\sthe\sfirst\stwo\stest\scases\sare\somitted\nwhen\sSQLite\shas\sbeen\scompiled\susing\sSQLITE_MAX_WORKER_THREADS=0. +D 2024-12-19T14:20:47.005 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md e108e1e69ae8e8a59e93c455654b8ac9356a11720d3345df2a4743e9590fb20d @@ -1664,7 +1664,7 @@ F test/softheap1.test 843cd84db9891b2d01b9ab64cef3e9020f98d087 F test/sort.test f86751134159abb5e5fd4381a0d7038c91013638cd1e3fa1d7850901f6df6196 F test/sort2.test 2f8c66402a03adebe77ce7aafca129fbf32df27d6c9b8f7a9f1b958e39f56da8 F test/sort3.test 1480ed7c4c157682542224e05e3b75faf4a149e5 -F test/sort4.test cca6f4b0b5255882645bbbe346a6a9f4a5c7b6a18513a6a7bf4ac1c4761ddc19 +F test/sort4.test c7a88629aecc8eec3c919eda54b221da5cf7a1b48f0cd372e7e832188d6737d8 F test/sort5.test 6b43ae0e2169b5ceed441844492e55ba7f1ae0790528395ddf7888ab3094525d F test/sorterref.test 9a606c86a4c682db5eeaaefa0565b52102778db53e48ca7101cd4f9ebcc0ad94 F test/sortfault.test d4ccf606a0c77498e2beb542764fd9394acb4d66 @@ -2202,8 +2202,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P f9b92f9513def690311a5ca46b68cab02bedec7984960d44e7dea5c2d196725a -R 1677c650b894e550921b2c6865a336f8 -U stephan -Z 945c85e044fc70c85b4eacbaf56b56af +P c7839b80972fb31df6ac81af38cf6d04c9542714c20fbaa7457c1eaf955f9222 +R c12eed049f52c9f1b08689c19a769296 +U drh +Z 0f8a15c21cb4f473505e48e4b944f5d1 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 7c5ebd691d..410230928d 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -c7839b80972fb31df6ac81af38cf6d04c9542714c20fbaa7457c1eaf955f9222 +5b96dcf5f6bf41dcb89ced64efd4585e36dce718c428c2324d94e4942905c3bb diff --git a/test/sort4.test b/test/sort4.test index 84125885ab..17aa28baec 100644 --- a/test/sort4.test +++ b/test/sort4.test @@ -26,20 +26,22 @@ sqlite3_initialize sqlite3 db test.db -# Configure the sorter to use 3 background threads. -# -# EVIDENCE-OF: R-19249-32353 SQLITE_LIMIT_WORKER_THREADS The maximum -# number of auxiliary worker threads that a single prepared statement -# may start. -# -do_test sort4-init001 { - db eval {PRAGMA threads=5} - sqlite3_limit db SQLITE_LIMIT_WORKER_THREADS -1 -} {5} -do_test sort4-init002 { - sqlite3_limit db SQLITE_LIMIT_WORKER_THREADS 3 - db eval {PRAGMA threads} -} {3} +if {![string match *MAX_WORKER_THREADS=0* [db eval {PRAGMA compile_options}]]} { + # Configure the sorter to use 3 background threads. + # + # EVIDENCE-OF: R-19249-32353 SQLITE_LIMIT_WORKER_THREADS The maximum + # number of auxiliary worker threads that a single prepared statement + # may start. + # + do_test sort4-init001 { + db eval {PRAGMA threads=5} + sqlite3_limit db SQLITE_LIMIT_WORKER_THREADS -1 + } {5} + do_test sort4-init002 { + sqlite3_limit db SQLITE_LIMIT_WORKER_THREADS 3 + db eval {PRAGMA threads} + } {3} +} # Minimum number of seconds to run for. If the value is 0, each test From be2a40d48967fbcb68250b51d556f9a2fb4ad649 Mon Sep 17 00:00:00 2001 From: drh <> Date: Thu, 19 Dec 2024 19:02:09 +0000 Subject: [PATCH 10/13] The BTree mutex must be held when calling sqlite3BtreeLastPage(). This check-in fixes a bug introduced by [cf8b99e17872c054]. FossilOrigin-Name: e6c30ee52c5cdc193804cec63374d558b45e4d67fc6bde58771ca78485ca0acf --- manifest | 12 ++++++------ manifest.uuid | 2 +- src/dbpage.c | 2 ++ 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/manifest b/manifest index 0da317676b..cd5c02a999 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sthe\ssort4.test\smodule\sso\sthat\sthe\sfirst\stwo\stest\scases\sare\somitted\nwhen\sSQLite\shas\sbeen\scompiled\susing\sSQLITE_MAX_WORKER_THREADS=0. -D 2024-12-19T14:20:47.005 +C The\sBTree\smutex\smust\sbe\sheld\swhen\scalling\ssqlite3BtreeLastPage().\s\sThis\ncheck-in\sfixes\sa\sbug\sintroduced\sby\s[cf8b99e17872c054]. +D 2024-12-19T19:02:09.632 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md e108e1e69ae8e8a59e93c455654b8ac9356a11720d3345df2a4743e9590fb20d @@ -724,7 +724,7 @@ F src/callback.c db3a45e376deff6a16c0058163fe0ae2b73a2945f3f408ca32cf74960b28d49 F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e F src/ctime.c d35723024b963edce9c0fad5b3303e8bb9266083784844baed10a6dedfe26f3b F src/date.c 89ce1ff20512a7fa5070ba6e7dd5c171148ca7d580955795bf97c79c2456144a -F src/dbpage.c d1778e74b15549e3967974b5addf740462db1a9d441da35666177f5a6ccf34c5 +F src/dbpage.c b1aeb47c1004f26c39c6800f0045b8d729d232aca24f6aa430c491b83003d033 F src/dbstat.c 73362c0df0f40ad5523a6f5501224959d0976757b511299bf892313e79d14f5c F src/delete.c 03a77ba20e54f0f42ebd8eddf15411ed6bdb06a2c472ac4b6b336521bf7cea42 F src/expr.c 3329173aacc6c37da3971b6253827799b32e301673be00126df8271bf018e15f @@ -2202,8 +2202,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P c7839b80972fb31df6ac81af38cf6d04c9542714c20fbaa7457c1eaf955f9222 -R c12eed049f52c9f1b08689c19a769296 +P 5b96dcf5f6bf41dcb89ced64efd4585e36dce718c428c2324d94e4942905c3bb +R 0d5d0fe22a08bb0bc92b56fa701d1de4 U drh -Z 0f8a15c21cb4f473505e48e4b944f5d1 +Z e8045b14a30fff6abbf0f3c593a246f0 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 410230928d..c49f5bdd66 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -5b96dcf5f6bf41dcb89ced64efd4585e36dce718c428c2324d94e4942905c3bb +e6c30ee52c5cdc193804cec63374d558b45e4d67fc6bde58771ca78485ca0acf diff --git a/src/dbpage.c b/src/dbpage.c index 3bb18b6775..74f345570e 100644 --- a/src/dbpage.c +++ b/src/dbpage.c @@ -428,9 +428,11 @@ static int dbpageSync(sqlite3_vtab *pVtab){ if( pTab->pgnoTrunc>0 ){ Btree *pBt = pTab->db->aDb[pTab->iDbTrunc].pBt; Pager *pPager = sqlite3BtreePager(pBt); + sqlite3BtreeEnter(pBt); if( pTab->pgnoTruncpgnoTrunc); } + sqlite3BtreeLeave(pBt); } pTab->pgnoTrunc = 0; return SQLITE_OK; From ccfb50d55efa27006fdd07d88ad7f4f2c51f5152 Mon Sep 17 00:00:00 2001 From: drh <> Date: Thu, 19 Dec 2024 19:52:13 +0000 Subject: [PATCH 11/13] Correction to check-in [a9759fc78d6cb0df] - printf() parameters values must be integers. FossilOrigin-Name: 2db531d1911369ea932d3559abcc02389e5f9ad72b46b0801dfb6063855aee1b --- manifest | 12 ++++++------ manifest.uuid | 2 +- src/func.c | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/manifest b/manifest index cd5c02a999..f9217095bd 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C The\sBTree\smutex\smust\sbe\sheld\swhen\scalling\ssqlite3BtreeLastPage().\s\sThis\ncheck-in\sfixes\sa\sbug\sintroduced\sby\s[cf8b99e17872c054]. -D 2024-12-19T19:02:09.632 +C Correction\sto\scheck-in\s[a9759fc78d6cb0df]\s-\sprintf()\sparameters\svalues\smust\nbe\sintegers. +D 2024-12-19T19:52:13.470 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md e108e1e69ae8e8a59e93c455654b8ac9356a11720d3345df2a4743e9590fb20d @@ -730,7 +730,7 @@ F src/delete.c 03a77ba20e54f0f42ebd8eddf15411ed6bdb06a2c472ac4b6b336521bf7cea42 F src/expr.c 3329173aacc6c37da3971b6253827799b32e301673be00126df8271bf018e15f F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007 F src/fkey.c 928ed2517e8732113d2b9821aa37af639688d752f4ea9ac6e0e393d713eeb76f -F src/func.c 3772ea69ace31835841629f893d86c9316a6facbc489f8113c7a205ec373de29 +F src/func.c e6e997efb9ffaf8b07842e745159695669fdfa020f03635a2f774adab8b0f4af F src/global.c a19e4b1ca1335f560e9560e590fc13081e21f670643367f99cb9e8f9dc7d615b F src/hash.c 9ee4269fb1d6632a6fecfb9479c93a1f29271bddbbaf215dd60420bcb80c7220 F src/hash.h 3340ab6e1d13e725571d7cee6d3e3135f0779a7d8e76a9ce0a85971fa3953c51 @@ -2202,8 +2202,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P 5b96dcf5f6bf41dcb89ced64efd4585e36dce718c428c2324d94e4942905c3bb -R 0d5d0fe22a08bb0bc92b56fa701d1de4 +P e6c30ee52c5cdc193804cec63374d558b45e4d67fc6bde58771ca78485ca0acf +R f31f33bbdca91555eb20e3616452ac98 U drh -Z e8045b14a30fff6abbf0f3c593a246f0 +Z 72db1b78a2863ce7bb7c272a3115f243 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index c49f5bdd66..459988f0ee 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -e6c30ee52c5cdc193804cec63374d558b45e4d67fc6bde58771ca78485ca0acf +2db531d1911369ea932d3559abcc02389e5f9ad72b46b0801dfb6063855aee1b diff --git a/src/func.c b/src/func.c index 2fe50f0155..a4b72ecc4d 100644 --- a/src/func.c +++ b/src/func.c @@ -463,7 +463,7 @@ static void roundFunc(sqlite3_context *context, int argc, sqlite3_value **argv){ }else if( n==0 ){ r = (double)((sqlite_int64)(r+(r<0?-0.5:+0.5))); }else{ - zBuf = sqlite3_mprintf("%!.*f",n,r); + zBuf = sqlite3_mprintf("%!.*f",(int)n,r); if( zBuf==0 ){ sqlite3_result_error_nomem(context); return; From 142c5de4dd603deea49189c84a301ef18293a5a8 Mon Sep 17 00:00:00 2001 From: drh <> Date: Thu, 19 Dec 2024 20:29:36 +0000 Subject: [PATCH 12/13] Fix a test case in sqllimits1.test so that it works with the Apple configuration which changes the default SQLITE_MAX_LENGTH. FossilOrigin-Name: 536fff14acb3335ad00fb1165cfb2f97e7a31c36273b9b97ffdb4b572fe72c08 --- manifest | 12 ++++++------ manifest.uuid | 2 +- test/sqllimits1.test | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/manifest b/manifest index f9217095bd..903d85a92a 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Correction\sto\scheck-in\s[a9759fc78d6cb0df]\s-\sprintf()\sparameters\svalues\smust\nbe\sintegers. -D 2024-12-19T19:52:13.470 +C Fix\sa\stest\scase\sin\ssqllimits1.test\sso\sthat\sit\sworks\swith\sthe\sApple\nconfiguration\swhich\schanges\sthe\sdefault\sSQLITE_MAX_LENGTH. +D 2024-12-19T20:29:36.166 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md e108e1e69ae8e8a59e93c455654b8ac9356a11720d3345df2a4743e9590fb20d @@ -1682,7 +1682,7 @@ F test/spellfix2.test dfc8f519a3fc204cb2dfa8b4f29821ae90f6f8c3 F test/spellfix3.test 0f9efaaa502a0e0a09848028518a6fb096c8ad33 F test/spellfix4.test 51c7c26514ade169855c66bcf130bd5acfb4d7fd090cc624645ab275ae6a41fb F test/sqldiff1.test 1b7ab4f312442c5cc6b3a5f299fa8ca051416d1dd173cb1126fd51bf64f2c3fb -F test/sqllimits1.test 7fa5027c2686e0a752f9a35616966eabfb9959ce041701b091932692c4bb6448 +F test/sqllimits1.test 408131e4975d61868711c83f101a56d4602313cc5cae88d3eee81c1da364fd89 F test/sqllog.test 6af6cb0b09f4e44e1917e06ce85be7670302517a F test/starschema1.test a84205f97fe278a015ac39546c86b97228d22043af28f3a2ef809e8d5637ce1d F test/startup.c 1beb5ca66fcc0fce95c3444db9d1674f90fc605499a574ae2434dcfc10d22805 @@ -2202,8 +2202,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P e6c30ee52c5cdc193804cec63374d558b45e4d67fc6bde58771ca78485ca0acf -R f31f33bbdca91555eb20e3616452ac98 +P 2db531d1911369ea932d3559abcc02389e5f9ad72b46b0801dfb6063855aee1b +R a03a4dd396ef02112c6a33e420d224ad U drh -Z 72db1b78a2863ce7bb7c272a3115f243 +Z 911cb8ba7f00f67e5f02965dae2fd664 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 459988f0ee..3af7305020 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -2db531d1911369ea932d3559abcc02389e5f9ad72b46b0801dfb6063855aee1b +536fff14acb3335ad00fb1165cfb2f97e7a31c36273b9b97ffdb4b572fe72c08 diff --git a/test/sqllimits1.test b/test/sqllimits1.test index e6283e4e4a..efe656db6a 100644 --- a/test/sqllimits1.test +++ b/test/sqllimits1.test @@ -78,8 +78,8 @@ do_test sqllimits1-1.23 { # Minimum value for SQLITE_LIMIT_LENGTH is 30 # do_test sqllimits1-1.30 { - sqlite3_limit db SQLITE_LIMIT_LENGTH 1 - sqlite3_limit db SQLITE_LIMIT_LENGTH 1000000000 + set prior [sqlite3_limit db SQLITE_LIMIT_LENGTH 1] + sqlite3_limit db SQLITE_LIMIT_LENGTH $prior } 30 From 9591d3fe93936533c8c3b0dc4d025ac999539e11 Mon Sep 17 00:00:00 2001 From: drh <> Date: Sun, 22 Dec 2024 21:17:27 +0000 Subject: [PATCH 13/13] In the (debugging) rtreenode() function, do not override an error coming out of sqlite3_result_text(). FossilOrigin-Name: 286559dfb3ad01fcf34360991a108dbe6bf81e7919c461ada6c691ee8f43868f --- ext/rtree/rtree.c | 2 +- manifest | 12 ++++++------ manifest.uuid | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/ext/rtree/rtree.c b/ext/rtree/rtree.c index 6efa20d162..8ed8978bde 100644 --- a/ext/rtree/rtree.c +++ b/ext/rtree/rtree.c @@ -3775,8 +3775,8 @@ static void rtreenode(sqlite3_context *ctx, int nArg, sqlite3_value **apArg){ sqlite3_str_append(pOut, "}", 1); } errCode = sqlite3_str_errcode(pOut); - sqlite3_result_text(ctx, sqlite3_str_finish(pOut), -1, sqlite3_free); sqlite3_result_error_code(ctx, errCode); + sqlite3_result_text(ctx, sqlite3_str_finish(pOut), -1, sqlite3_free); } /* This routine implements an SQL function that returns the "depth" parameter diff --git a/manifest b/manifest index 903d85a92a..2e54ede973 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sa\stest\scase\sin\ssqllimits1.test\sso\sthat\sit\sworks\swith\sthe\sApple\nconfiguration\swhich\schanges\sthe\sdefault\sSQLITE_MAX_LENGTH. -D 2024-12-19T20:29:36.166 +C In\sthe\s(debugging)\srtreenode()\sfunction,\sdo\snot\soverride\san\serror\scoming\sout\nof\ssqlite3_result_text(). +D 2024-12-22T21:17:27.858 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md e108e1e69ae8e8a59e93c455654b8ac9356a11720d3345df2a4743e9590fb20d @@ -536,7 +536,7 @@ F ext/repair/test/checkindex01.test b530f141413b587c9eb78ff734de6bb79bc3515c3350 F ext/repair/test/test.tcl 686d76d888dffd021f64260abf29a55c57b2cedfa7fc69150b42b1d6119aac3c F ext/rtree/README 6315c0d73ebf0ec40dedb5aa0e942bc8b54e3761 F ext/rtree/geopoly.c 0dd4775e896cee6067979d67aff7c998e75c2c9d9cd8d62a1a790c09cde7adca -F ext/rtree/rtree.c e002d8c58bf128d812db662ecc72b61c00ff14408ec807e103d5312a6d29817a +F ext/rtree/rtree.c 4c58755830a0902435322bf61b2994ae02951a039daefb31cff9457d3e2aa201 F ext/rtree/rtree.h 4a690463901cb5e6127cf05eb8e642f127012fd5003830dbc974eca5802d9412 F ext/rtree/rtree1.test e0608db762b2aadca0ecb6f97396cf66244490adc3ba88f2a292b27be3e1da3e F ext/rtree/rtree2.test 9d9deddbb16fd0c30c36e6b4fdc3ee3132d765567f0f9432ee71e1303d32603d @@ -2202,8 +2202,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P 2db531d1911369ea932d3559abcc02389e5f9ad72b46b0801dfb6063855aee1b -R a03a4dd396ef02112c6a33e420d224ad +P 536fff14acb3335ad00fb1165cfb2f97e7a31c36273b9b97ffdb4b572fe72c08 +R 4447fcd0ccb80498c83515e29fbbdcc2 U drh -Z 911cb8ba7f00f67e5f02965dae2fd664 +Z 75ed33204df12b76c729fccd2a0270dd # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 3af7305020..7604fcbe51 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -536fff14acb3335ad00fb1165cfb2f97e7a31c36273b9b97ffdb4b572fe72c08 +286559dfb3ad01fcf34360991a108dbe6bf81e7919c461ada6c691ee8f43868f