Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | In expression nodes of type REGISTER with sub-type COLUMN, ensure that the iColumn field is set correctly, as otherwise the "IS NULL" operator might be incorrectly optimized. Fix for the problem described by forum post d010a26798915b53. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
0819a1869a39d54a405259ea32336550 |
User & Date: | drh 2023-01-13 19:29:46 |
Context
2023-01-13
| ||
20:49 | Fix another lsm compression-mode bug. (check-in: f9fafc94 user: dan tags: trunk) | |
19:32 | In expression nodes of type REGISTER with sub-type COLUMN, ensure that the iColumn field is set correctly, as otherwise the "IS NULL" operator might be incorrectly optimized. Fix for the problem described by forum post d010a26798915b53. (check-in: 76b440c5 user: drh tags: branch-3.40) | |
19:29 | In expression nodes of type REGISTER with sub-type COLUMN, ensure that the iColumn field is set correctly, as otherwise the "IS NULL" operator might be incorrectly optimized. Fix for the problem described by forum post d010a26798915b53. (check-in: 0819a186 user: drh tags: trunk) | |
18:20 | Add missing "const" on variables in recent RBU fixes. (check-in: 9b8dcd79 user: drh tags: trunk) | |
Changes
Changes to src/resolve.c.
︙ | ︙ | |||
502 503 504 505 506 507 508 509 510 511 512 513 514 515 | #endif /* SQLITE_OMIT_UPSERT */ { assert( ExprUseYTab(pExpr) ); pExpr->y.pTab = pTab; if( pParse->bReturning ){ eNewExprOp = TK_REGISTER; pExpr->op2 = TK_COLUMN; pExpr->iTable = pNC->uNC.iBaseReg + (pTab->nCol+1)*pExpr->iTable + sqlite3TableColumnToStorage(pTab, iCol) + 1; }else{ pExpr->iColumn = (i16)iCol; eNewExprOp = TK_TRIGGER; #ifndef SQLITE_OMIT_TRIGGER if( iCol<0 ){ | > | 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 | #endif /* SQLITE_OMIT_UPSERT */ { assert( ExprUseYTab(pExpr) ); pExpr->y.pTab = pTab; if( pParse->bReturning ){ eNewExprOp = TK_REGISTER; pExpr->op2 = TK_COLUMN; pExpr->iColumn = iCol; pExpr->iTable = pNC->uNC.iBaseReg + (pTab->nCol+1)*pExpr->iTable + sqlite3TableColumnToStorage(pTab, iCol) + 1; }else{ pExpr->iColumn = (i16)iCol; eNewExprOp = TK_TRIGGER; #ifndef SQLITE_OMIT_TRIGGER if( iCol<0 ){ |
︙ | ︙ |
Changes to test/returning1.test.
︙ | ︙ | |||
395 396 397 398 399 400 401 402 403 | UPDATE SET refcnt = refcnt+1 RETURNING fooid; } { 1 2 1 } } finish_test | > > > > > > > > | 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 | UPDATE SET refcnt = refcnt+1 RETURNING fooid; } { 1 2 1 } } # 2022-01-13 https://sqlite.org/forum/forumpost/d010a26798 # reset_db do_execsql_test 17.0 { CREATE TABLE bug(id INTEGER PRIMARY KEY NOT NULL, x); INSERT INTO bug(id,x) VALUES(20, NULL); UPDATE bug SET x=NULL WHERE id = 20 RETURNING quote(x), x IS NULL; } {NULL 1} finish_test |