From 6864f78fdf9d112d478763bd24c0684a39362a84 Mon Sep 17 00:00:00 2001 From: dan Date: Tue, 8 Apr 2025 15:58:19 +0000 Subject: [PATCH] Have sqlite3session_diff() automatically attach tables to session objects, as it has always been documented to do. FossilOrigin-Name: ec1641858ec48d96f5a2ddce4575ebd40a18932d69831fdb4eafc9acf508f216 --- ext/session/sessionD.test | 28 ++++++++++++++++++++++++++++ ext/session/sqlite3session.c | 2 ++ manifest | 17 ++++++++--------- manifest.uuid | 2 +- 4 files changed, 39 insertions(+), 10 deletions(-) diff --git a/ext/session/sessionD.test b/ext/session/sessionD.test index 9fccbfa96f..f60fbabc2a 100644 --- a/ext/session/sessionD.test +++ b/ext/session/sessionD.test @@ -230,4 +230,32 @@ do_catchsql_test 4.5.2 { SELECT * FROM ixua.i8; } {1 {no such table: ixua.i8}} +#------------------------------------------------------------------------- +# Test that sqlite3session_diff() really does automatically attach tables, +# as documented. +# +reset_db +forcedelete test.db2 +do_execsql_test 4.0 { + ATTACH 'test.db2' AS two; + CREATE TABLE two.t1(a PRIMARY KEY, b, c); + CREATE TABLE t1(a PRIMARY KEY, b, c); + + INSERT INTO two.t1 VALUES(1, 2, 3), (4, 5, 6), (7, 8, 9); +} + +do_test 4.1 { + sqlite3session S db main + S attach t8 + S diff two t1 +} {} + +do_changeset_test 4.2 S { + {DELETE t1 0 X.. {i 1 i 2 i 3} {}} + {DELETE t1 0 X.. {i 4 i 5 i 6} {}} + {DELETE t1 0 X.. {i 7 i 8 i 9} {}} +} + +S delete + finish_test diff --git a/ext/session/sqlite3session.c b/ext/session/sqlite3session.c index 7d6f21255b..6c386f42e2 100644 --- a/ext/session/sqlite3session.c +++ b/ext/session/sqlite3session.c @@ -2216,7 +2216,9 @@ int sqlite3session_diff( SessionTable *pTo; /* Table zTbl */ /* Locate and if necessary initialize the target table object */ + pSession->bAutoAttach++; rc = sessionFindTable(pSession, zTbl, &pTo); + pSession->bAutoAttach--; if( pTo==0 ) goto diff_out; if( sessionInitTable(pSession, pTo, pSession->db, pSession->zDb) ){ rc = pSession->rc; diff --git a/manifest b/manifest index aa15323e07..7b327aaacc 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Reduce\sthe\sdelay\scaused\sby\santi-virus\sretries\sin\sWindows\swhen\sattempting\sto\nopen\sa\sdatabase\sfile\swith\sinsufficient\spermission. -D 2025-03-26T22:23:22.787 +C Have\ssqlite3session_diff()\sautomatically\sattach\stables\sto\ssession\sobjects,\sas\sit\shas\salways\sbeen\sdocumented\sto\sdo. +D 2025-04-08T15:58:19.760 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md e108e1e69ae8e8a59e93c455654b8ac9356a11720d3345df2a4743e9590fb20d @@ -588,7 +588,7 @@ F ext/session/session9.test 4e3aff62d6b4294498ddbe309076de06f4fddffad4fe5f5a6c03 F ext/session/sessionA.test 1feeab0b8e03527f08f2f1defb442da25480138f F ext/session/sessionB.test c4fb7f8a688787111606e123a555f18ee04f65bb9f2a4bb2aa71d55ce4e6d02c F ext/session/sessionC.test f8a5508bc059ae646e5ec9bdbca66ad24bc92fe99fda5790ac57e1f59fce2fdf -F ext/session/sessionD.test f5c6a762d00bc6ca9d561695c322ba8ecca2bed370486707ef37cf565d2f6c73 +F ext/session/sessionD.test 9d5d1d07bfc2de8400cd8607297dcd405e2889ccae58ae17db054de5fcae37ab F ext/session/sessionE.test b2010949c9d7415306f64e3c2072ddabc4b8250c98478d3c0c4d064bce83111d F ext/session/sessionF.test d37ed800881e742c208df443537bf29aa49fd56eac520d0f0c6df3e6320f3401 F ext/session/sessionG.test 3efe388282d641b65485b5462e67851002cd91a282dc95b685d085eb8efdad0a @@ -616,7 +616,7 @@ F ext/session/sessionrowid.test 85187c2f1b38861a5844868126f69f9ec62223a03449a98a F ext/session/sessionsize.test 8fcf4685993c3dbaa46a24183940ab9f5aa9ed0d23e5fb63bfffbdb56134b795 F ext/session/sessionstat1.test 5e718d5888c0c49bbb33a7a4f816366db85f59f6a4f97544a806421b85dc2dec F ext/session/sessionwor.test 6fd9a2256442cebde5b2284936ae9e0d54bde692d0f5fd009ecef8511f4cf3fc -F ext/session/sqlite3session.c 8011b9531c7dd8dce55226def022f3303ce40d0b45966877f2c35185f4b1c3fc +F ext/session/sqlite3session.c b0f44e89facdf03feacd040b18b6fb04a5cc55095be8b688f3cbb1412eeab993 F ext/session/sqlite3session.h aa5de3ec8ef0e5313e9f65dafd69e8ba292d170f07b57da9200c040068dab061 F ext/session/test_session.c 12e0a2c15fd60f92da4bb29c697c9177ff0c0dbcdc5129a54c47e999f147937a F ext/wasm/EXPORTED_FUNCTIONS.fiddle.in 27450c8b8c70875a260aca55435ec927068b34cef801a96205adb81bdcefc65c @@ -2215,9 +2215,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 1f98fc07fdf06d699ffbf1521b0b5e937a582017e4325bd994b488e06becbecc ccdd67ad9a508530ccfcec582410768c24bca4eb8b05939577fb99a50dd44b15 -R 6c2ac8039a69021b5d572668708823ae -T +closed ccdd67ad9a508530ccfcec582410768c24bca4eb8b05939577fb99a50dd44b15 -U drh -Z 0d5fc73351502e2a61a26190ba1c4a5b +P d25c8a6222d4e3f20c137b1490572ad491d9c404ff12947d5867c3e00fcb615c +R 13e264ccaec04013121101913f0528fa +U dan +Z c782dc2350defbb4dda4222346152588 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 35e8e088e6..c9ba77d521 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -d25c8a6222d4e3f20c137b1490572ad491d9c404ff12947d5867c3e00fcb615c +ec1641858ec48d96f5a2ddce4575ebd40a18932d69831fdb4eafc9acf508f216