Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Ensure that when the col in an operator like "val IN(col)" is a column of a view, its affinity is not used to coerce val. Fix for [0a5e2c1d]. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
17b3d2218c02a4005d4c96471c452105 |
User & Date: | dan 2019-08-06 21:16:28 |
Context
2019-08-07
| ||
13:25 | Do not make SQLITE_READ authorizer calls for tables without names, as all such tables will be internal-use-only tables for subqueries and whatnot. (check-in: 193c87fc user: drh tags: trunk) | |
2019-08-06
| ||
21:16 | Ensure that when the col in an operator like "val IN(col)" is a column of a view, its affinity is not used to coerce val. Fix for [0a5e2c1d]. (check-in: 17b3d221 user: dan tags: trunk) | |
20:55 | Improved reuse of file descriptors for which close() is delayed to prevent clearing of posix advisory locks. (check-in: 509c1ba2 user: drh tags: trunk) | |
Changes
Changes to src/select.c.
︙ | ︙ | |||
3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 | pNew = sqlite3ExprDup(db, pCopy, 0); if( pNew && pSubst->isLeftJoin ){ ExprSetProperty(pNew, EP_CanBeNull); } if( pNew && ExprHasProperty(pExpr,EP_FromJoin) ){ pNew->iRightJoinTable = pExpr->iRightJoinTable; ExprSetProperty(pNew, EP_FromJoin); } sqlite3ExprDelete(db, pExpr); pExpr = pNew; } } }else{ if( pExpr->op==TK_IF_NULL_ROW && pExpr->iTable==pSubst->iTable ){ | > > > | 3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 3485 3486 3487 | pNew = sqlite3ExprDup(db, pCopy, 0); if( pNew && pSubst->isLeftJoin ){ ExprSetProperty(pNew, EP_CanBeNull); } if( pNew && ExprHasProperty(pExpr,EP_FromJoin) ){ pNew->iRightJoinTable = pExpr->iRightJoinTable; ExprSetProperty(pNew, EP_FromJoin); } if( pNew && ExprHasProperty(pExpr,EP_Generic) ){ ExprSetProperty(pNew, EP_Generic); } sqlite3ExprDelete(db, pExpr); pExpr = pNew; } } }else{ if( pExpr->op==TK_IF_NULL_ROW && pExpr->iTable==pSubst->iTable ){ |
︙ | ︙ |
Changes to test/view.test.
︙ | ︙ | |||
756 757 758 759 760 761 762 763 764 | } 0 do_execsql_test view-27.8 { SELECT 1 FROM (SELECT t0.c0 AS c0, AVG(t0.c1) AS c1 FROM t0) WHERE c1<c0 } {} do_execsql_test view-27.9 { SELECT 1 FROM (SELECT t0.c0 AS c0, AVG(t0.c1) AS c1 FROM t0) WHERE c0<c1 } {1} finish_test | > > > > > > > > > > > > > > | 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 | } 0 do_execsql_test view-27.8 { SELECT 1 FROM (SELECT t0.c0 AS c0, AVG(t0.c1) AS c1 FROM t0) WHERE c1<c0 } {} do_execsql_test view-27.9 { SELECT 1 FROM (SELECT t0.c0 AS c0, AVG(t0.c1) AS c1 FROM t0) WHERE c0<c1 } {1} #------------------------------------------------------------------------- reset_db do_execsql_test view-28.0 { CREATE TABLE t0(c0 TEXT); CREATE VIEW v0(c0) AS SELECT t0.c0 FROM t0; INSERT INTO t0(c0) VALUES ('0'); } do_execsql_test view-28.1 { SELECT 0 IN (c0) FROM t0; } {0} do_execsql_test view-28.2 { SELECT 0 IN (c0) FROM (SELECT c0 FROM t0); } {0} finish_test |