Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix a case where the BTCF_AtLast flag was being left set incorrectly. This was causing obscure window function queries to fail. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
e042eb024738a83eed92cd2dfac3d2a5 |
User & Date: | dan 2024-08-29 16:27:57.817 |
Context
2024-08-29
| ||
18:32 | All makefiles are responsive to OPTIONS=... command-line arguments, and add the RHS value of OPTIONS= to builds and to lemon and other build steps that might respond to -D or -U options. (check-in: 854b3776ee user: drh tags: trunk) | |
17:42 | Merge all the latest trunk enhancements into the reuse-schema branch. (check-in: 87aa6fc212 user: drh tags: reuse-schema) | |
17:18 | Fix a case where the BTCF_AtLast flag was being left set incorrectly. This was causing obscure window function queries to fail. (check-in: 45778b0bb8 user: drh tags: branch-3.46) | |
16:27 | Fix a case where the BTCF_AtLast flag was being left set incorrectly. This was causing obscure window function queries to fail. (check-in: e042eb0247 user: dan tags: trunk) | |
2024-08-28
| ||
19:13 | Do not allow sqlite3_blob_open() to work on a any table that contains generated columns, even columns of the table which are not generated themselves, because such columns might be part of the expression of a STORED column. This restriction could be relaxed some, but that would be a lot of code for something that nobody ever uses. (check-in: 6e84947123 user: drh tags: trunk) | |
Changes
Changes to src/btree.c.
︙ | ︙ | |||
5985 5986 5987 5988 5989 5990 5991 | *pRes = c; return SQLITE_OK; /* Cursor already pointing at the correct spot */ } if( pCur->iPage>0 && indexCellCompare(pCur, 0, pIdxKey, xRecordCompare)<=0 && pIdxKey->errCode==SQLITE_OK ){ | | | 5985 5986 5987 5988 5989 5990 5991 5992 5993 5994 5995 5996 5997 5998 5999 | *pRes = c; return SQLITE_OK; /* Cursor already pointing at the correct spot */ } if( pCur->iPage>0 && indexCellCompare(pCur, 0, pIdxKey, xRecordCompare)<=0 && pIdxKey->errCode==SQLITE_OK ){ pCur->curFlags &= ~(BTCF_ValidOvfl|BTCF_AtLast); if( !pCur->pPage->isInit ){ return SQLITE_CORRUPT_BKPT; } goto bypass_moveto_root; /* Start search on the current page */ } pIdxKey->errCode = SQLITE_OK; } |
︙ | ︙ |
Changes to test/windowE.test.
︙ | ︙ | |||
68 69 70 71 72 73 74 75 76 77 78 | WINDOW w1 AS (PARTITION BY x_count(x) OVER w1); } {1 {x_count() may not be used as a window function}} do_catchsql_test 2.2 { SELECT min(x) FILTER (WHERE x_count(x) OVER w1) OVER w1 FROM t1 WINDOW w1 AS (PARTITION BY x OVER w1); } {1 {near "OVER": syntax error}} finish_test | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | WINDOW w1 AS (PARTITION BY x_count(x) OVER w1); } {1 {x_count() may not be used as a window function}} do_catchsql_test 2.2 { SELECT min(x) FILTER (WHERE x_count(x) OVER w1) OVER w1 FROM t1 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 |