From: dan Date: Wed, 18 Sep 2024 15:52:05 +0000 (+0000) Subject: Fix the preupdate hook so that it works when the "old.*" row has a column with a... X-Git-Tag: version-3.47.0~107 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=704561f346c0ab5e115da4ce29c422ef65fb81bb;p=thirdparty%2Fsqlite.git Fix the preupdate hook so that it works when the "old.*" row has a column with a non-NULL default value that was added by ALTER TABLE ADD COLUMN after the current record was created. FossilOrigin-Name: 6a8c687904e92f00c1a5f768947545d2920ab9025bf8649adb0ea8053f5aec4e --- 704561f346c0ab5e115da4ce29c422ef65fb81bb diff --cc ext/session/sessionalter.test index 34424cf275,34424cf275..bcff7c5357 --- a/ext/session/sessionalter.test +++ b/ext/session/sessionalter.test @@@ -202,6 -202,6 +202,7 @@@ foreach {tn sql1 at sql2} sqlite3changegroup grp grp schema db main ++ breakpoint grp add $C1 grp add $C2 set T1 [grp output] diff --cc ext/session/sqlite3session.c index 7a8132bfa6,72f4249234..ca1b7503c0 --- a/ext/session/sqlite3session.c +++ b/ext/session/sqlite3session.c @@@ -5660,6 -5662,6 +5662,9 @@@ static int sessionChangesetExtendRecord sessionAppendBlob(pOut, aRec, nRec, &rc); if( rc==SQLITE_OK && pTab->pDfltStmt==0 ){ rc = sessionPrepareDfltStmt(pGrp->db, pTab, &pTab->pDfltStmt); ++ if( rc==SQLITE_OK && SQLITE_ROW!=sqlite3_step(pTab->pDfltStmt) ){ ++ rc = sqlite3_errcode(pGrp->db); ++ } } for(ii=nCol; rc==SQLITE_OK && iinCol; ii++){ int eType = sqlite3_column_type(pTab->pDfltStmt, ii); @@@ -5676,6 -5678,6 +5681,7 @@@ } if( SQLITE_OK==sessionBufferGrow(pOut, 8, &rc) ){ sessionPutI64(&pOut->aBuf[pOut->nBuf], iVal); ++ pOut->nBuf += 8; } break; } diff --cc manifest index 2eab375cf8,b8687b09f6..6ec1524487 --- a/manifest +++ b/manifest @@@ -1,5 -1,5 +1,5 @@@ - C Fix\ssqlite3-rsync\sso\sthat\sit\srecognizes\sdrive-letters\son\sthe\sfront\sof\spathnames\nin\sWindows,\sand\sdoes\snot\smisinterpret\sthem\sas\shostnames. - D 2024-09-18T15:38:05.984 + C Fix\sthe\spreupdate\shook\sso\sthat\sit\sworks\swhen\sthe\s"old.*"\srow\shas\sa\scolumn\swith\sa\snon-NULL\sdefault\svalue\sthat\swas\sadded\sby\sALTER\sTABLE\sADD\sCOLUMN\safter\sthe\scurrent\srecord\swas\screated. -D 2024-09-18T15:02:27.631 ++D 2024-09-18T15:52:05.754 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@@ -575,7 -575,7 +575,7 @@@ F ext/session/sessionG.test 3efe388282d F ext/session/sessionH.test 71bbff6b1abb2c4ac62b84dee53273c37e0b21e5fde3aed80929403e091ef859 F ext/session/session_common.tcl e5598096425486b363718e2cda48ee85d660c96b4f8ea9d9d7a4c3ef514769da F ext/session/session_speed_test.c dcf0ef58d76b70c8fbd9eab3be77cf9deb8bc1638fed8be518b62d6cbdef88b3 --F ext/session/sessionalter.test 460bdac2832a550519f6bc32e5db2c0cee94f335870aaf25a3a403a81ab20e17 ++F ext/session/sessionalter.test e852acb3d2357aac7d0b920a2109da758c4331bfdf85b41d39aa3a8c18914f65 F ext/session/sessionat.test 00c8badb35e43a2f12a716d2734a44d614ff62361979b6b85419035bc04b45ee F ext/session/sessionbig.test 47c381e7acfabeef17d98519a3080d69151723354d220afa2053852182ca7adf F ext/session/sessionchange.test 77c4702050f24270b58070e2cf01c95c3d232a3ef164b70f31974b386ce69903 @@@ -594,7 -594,7 +594,7 @@@ F ext/session/sessionrowid.test 85187c2 F ext/session/sessionsize.test 8fcf4685993c3dbaa46a24183940ab9f5aa9ed0d23e5fb63bfffbdb56134b795 F ext/session/sessionstat1.test 5e718d5888c0c49bbb33a7a4f816366db85f59f6a4f97544a806421b85dc2dec F ext/session/sessionwor.test 6fd9a2256442cebde5b2284936ae9e0d54bde692d0f5fd009ecef8511f4cf3fc - F ext/session/sqlite3session.c c7473aafbd88f796391a8c25aa90975a8f3729ab7f4f8cf74ab9d3b014e10abe -F ext/session/sqlite3session.c e74d3e58d4c20e72c14c23f909e1a6c7ea71ae31129fb1685babf2cab558d613 ++F ext/session/sqlite3session.c 41698a74f9bf8d82a83d270263f270333afe988e376669be60ccb18e000d7324 F ext/session/sqlite3session.h 683ccbf16e2c2521661fc4c1cf918ce57002039efbcabcd8097fa4bca569104b F ext/session/test_session.c aa29abdcc9011ac02f4fa38e8ede226106eaeee7c3ea7d8b2b999a124e0c368c F ext/userauth/sqlite3userauth.h 7f3ea8c4686db8e40b0a0e7a8e0b00fac13aa7a3 @@@ -2213,8 -2213,11 +2213,9 @@@ F vsixtest/vsixtest.tcl 6195aba1f12a5e1 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 --P a63e412b6b2939422ecfa99d91fccb7a9c61e1533bb0db20ff12f3815ef41a2c - R 64239a9e7fef3c7cc0e28ec0a65d0646 - U drh - Z f93b9837214dfb9db0480248c539a72c -R 2022f5c82821db1ada9b61c2c71e65f9 -T *branch * preupdate-hook-fix -T *sym-preupdate-hook-fix * -T -sym-trunk * ++P 54a3bbd5781f76bd73f5276b632d1107312f7a789134910793262317edd8359c 00a398cf900179aa5a8aab09fe4a671d99e7a31583282848ef39390f2ef246eb ++R ab206cf8e455565d06975b2e8cfc2717 ++T +closed 00a398cf900179aa5a8aab09fe4a671d99e7a31583282848ef39390f2ef246eb + U dan -Z c649b0105c7af3011732c3c809572a4f ++Z b1eae9775aa4a20e1661adc929c01183 # Remove this line to create a well-formed Fossil manifest. diff --cc manifest.uuid index 662cc718b2,14998f1fd5..6197bc3230 --- a/manifest.uuid +++ b/manifest.uuid @@@ -1,1 -1,1 +1,1 @@@ - 54a3bbd5781f76bd73f5276b632d1107312f7a789134910793262317edd8359c -00a398cf900179aa5a8aab09fe4a671d99e7a31583282848ef39390f2ef246eb ++6a8c687904e92f00c1a5f768947545d2920ab9025bf8649adb0ea8053f5aec4e