]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix a case where the BTCF_AtLast flag was being left set incorrectly. This was causin...
authordrh <>
Thu, 29 Aug 2024 17:18:41 +0000 (17:18 +0000)
committerdrh <>
Thu, 29 Aug 2024 17:18:41 +0000 (17:18 +0000)
FossilOrigin-Name: 45778b0bb830c473c0733681c79c8055abadff94f552562f2e8965c9d8662abc

manifest
manifest.uuid
src/btree.c
test/windowE.test

index 990f0e725d1a93ce69dda1a100791fe6517fcbb6..d6dab8b9141de2ac0eaad5b5a2d75f8da4e091fc 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Earlier\serror\sdetection\swhile\sprocessing\scomplex\saggregate\nqueries.\s\sdbsqlfuzz\s5242c2f07f4aa031aa3c80461f18e9b7619ede9b\n(The\sprevious\scheck-in\son\sthis\sbranch\sreally\sshould\shave\sbeen\sthis\ncherrypick.)
-D 2024-08-26T23:32:02.308
+C Fix\sa\scase\swhere\sthe\sBTCF_AtLast\sflag\swas\sbeing\sleft\sset\sincorrectly.\sThis\swas\scausing\sobscure\swindow\sfunction\squeries\sto\sfail.
+D 2024-08-29T17:18:41.863
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -693,7 +693,7 @@ F src/auth.c 19b7ccacae3dfba23fc6f1d0af68134fa216e9040e53b0681b4715445ea030b4
 F src/backup.c 5c97e8023aab1ce14a42387eb3ae00ba5a0644569e3476f38661fa6f824c3523
 F src/bitvec.c 9eac5f42c11914d5ef00a75605bb205e934f435c579687f985f1f8b0995c8645
 F src/btmutex.c 79a43670447eacc651519a429f6ece9fd638563cf95b469d6891185ddae2b522
-F src/btree.c 71b80e77b255144db47180fda8138740608e382a44231942464029b1a45fc036
+F src/btree.c 8c05b5d63732c69879cb57561a420d74edccdc73d488e53f24a9d5059b7be5f5
 F src/btree.h 55066f513eb095db935169dab1dc2f7c7a747ef223c533f5d4ad4dfed346cbd0
 F src/btreeInt.h 98aadb6dcb77b012cab2574d6a728fad56b337fc946839b9898c4b4c969e30b6
 F src/build.c 237ccc0290d131d646be722f418e92ee0a38043aee25e7dfdc75f8ce5b3abe4e
@@ -2053,7 +2053,7 @@ F test/windowA.test 6d63dc1260daa17141a55007600581778523a8b420629f1282d2acfc36af
 F test/windowB.test aad7c31739999f68a98a813cfd78390918fc70f56d2d925317a1523cab548ecf
 F test/windowC.test 6fd75f5bb2f1343d34e470e36e68f0ff638d8a42f6aa7d99471261b31a0d42f2
 F test/windowD.test 65cf5a765fb8072450e8a0de2979ce7f09a38d87724fe1280c6444073e3da49b
-F test/windowE.test c98507e0b0d95980ad25845db758557757be2d7054198ccf522c7d277057a3df
+F test/windowE.test d045a5fbaaf50ecac9483e1249dd317ba4f9d189c405a730ba6effdefb87b94f
 F test/windowerr.tcl f5acd6fbc210d7b5546c0e879d157888455cd4a17a1d3f28f07c1c8a387019e0
 F test/windowerr.test a8b752402109c15aa1c5efe1b93ccb0ce1ef84fa964ae1cd6684dd0b3cc1819b
 F test/windowfault.test 15094c1529424e62f798bc679e3fe9dfab6e8ba2f7dfe8c923b6248c31660a7c
@@ -2192,9 +2192,9 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P faecd4505d35ae4f8112b8e18a013676d7303537845696c1f44c7988f6bf08fe
-Q +70f4973078ffc72f4ff247234e6f8e695b40803c3e7c9ed12050d97195728352
-R d727e5d0eaec830d0100a5ce8e7c01bb
+P f9c6cbc1d38f30529e064edd7a7c1471b4ac54d576c9b9f0a77b36f23ed74b1a
+Q +e042eb024738a83eed92cd2dfac3d2a50d2589715a3d81b1a494564dd7d8e7fa
+R 416f28292b1625ed2e419bbf305bb8e1
 U drh
-Z 9bdc2c4b5f07b758f43ddb927c3d7b96
+Z 4fc524a5b28042ff547544c8c83a27fd
 # Remove this line to create a well-formed Fossil manifest.
index 6304be723770ab710e637a220792e0c3264650a3..784c2bad785e49e6b74db8187c2f35d0b1997d9a 100644 (file)
@@ -1 +1 @@
-f9c6cbc1d38f30529e064edd7a7c1471b4ac54d576c9b9f0a77b36f23ed74b1a
+45778b0bb830c473c0733681c79c8055abadff94f552562f2e8965c9d8662abc
index 62b89897967cdba22595d9ae02a26d7bd00a8fa9..3c1c5bc539d4c8a7a8019284a10e10ba1f807e9c 100644 (file)
@@ -5989,7 +5989,7 @@ int sqlite3BtreeIndexMoveto(
      && indexCellCompare(pCur, 0, pIdxKey, xRecordCompare)<=0
      && pIdxKey->errCode==SQLITE_OK
     ){
-      pCur->curFlags &= ~BTCF_ValidOvfl;
+      pCur->curFlags &= ~(BTCF_ValidOvfl|BTCF_AtLast);
       if( !pCur->pPage->isInit ){
         return SQLITE_CORRUPT_BKPT;
       }
index 9128468b3c8f795184334cd41fd6fe68759e2412..1cb67f56b05bd2917e5ce378cb7f07f51ea42622 100644 (file)
@@ -73,6 +73,38 @@ do_catchsql_test 2.2 {
     WINDOW w1 AS (PARTITION BY x OVER w1);
 } {1 {near "OVER": syntax error}}
 
+#-------------------------------------------------------------------------
+reset_db
+do_execsql_test 3.0 {
+  BEGIN TRANSACTION;
+    CREATE TABLE t2(c1 INT, c2 REAL);
+    INSERT INTO t2 VALUES
+    (447,0.0), (448,0.0), (449,0.0), (452,0.0), (453,0.0), (454,0.0), (455,0.0),
+    (456,0.0), (459,0.0), (460,0.0), (462,0.0), (463,0.0), (466,0.0), (467,0.0),
+    (468,0.0), (469,0.0), (470,0.0), (473,0.0), (474,0.0), (475,0.0), (476,0.0),
+    (477,0.0), (480,0.0), (481,0.0), (482,0.0), (483,0.0), (484,0.0), (487,0.0),
+    (488,0.0), (489,0.0), (490,0.0), (491,0.0), (494,0.0), (495,0.0), (496,0.0),
+    (497,0.0), (498,0.0), (501,0.0), (502,0.0), (503,0.0), (504,0.0), (505,0.0),
+    (508,0.0), (509,0.0), (510,0.0), (511,0.0), (512,0.0), (515,0.0), (516,0.0),
+    (517,0.0), (518,0.0), (519,0.0), (522,0.0), (523,0.0), (524,0.0), (525,0.0),
+    (526,0.0), (529,0.0), (530,0.0), (531,0.0), (532,0.0), (533,0.0), (536,0.0),
+    (537,1.0), (538,0.0), (539,0.0), (540,0.0), (543,0.0), (544,0.0);
+  COMMIT;
+}
+
+do_execsql_test 3.1 {
+  select c1, max(c2) over (order by c1 range 366.0 preceding) from t2;
+} {
+  447 0.0 448 0.0 449 0.0 452 0.0 453 0.0 454 0.0 455 0.0 456 0.0 459 0.0 
+  460 0.0 462 0.0 463 0.0 466 0.0 467 0.0 468 0.0 469 0.0 470 0.0 473 0.0 
+  474 0.0 475 0.0 476 0.0 477 0.0 480 0.0 481 0.0 482 0.0 483 0.0 484 0.0 
+  487 0.0 488 0.0 489 0.0 490 0.0 491 0.0 494 0.0 495 0.0 496 0.0 497 0.0 
+  498 0.0 501 0.0 502 0.0 503 0.0 504 0.0 505 0.0 508 0.0 509 0.0 510 0.0 
+  511 0.0 512 0.0 515 0.0 516 0.0 517 0.0 518 0.0 519 0.0 522 0.0 523 0.0 
+  524 0.0 525 0.0 526 0.0 529 0.0 530 0.0 531 0.0 532 0.0 533 0.0 536 0.0 
+  537 1.0 538 1.0 539 1.0 540 1.0 543 1.0 544 1.0
+}
+
 
 finish_test