Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Disallow access to the rowid column on WITHOUT ROWID virtual tables. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | without-rowid-vtab |
Files: | files | file ages | folders |
SHA1: |
d31c25972bfb6d04caad055345056987 |
User & Date: | drh 2016-06-03 17:27:14.741 |
Context
2016-06-03
| ||
18:21 | Fix a memory leak when a WITHOUT ROWID eponymous virtual table is used. (Closed-Leaf check-in: 31b83a7d7e user: drh tags: without-rowid-vtab) | |
17:27 | Disallow access to the rowid column on WITHOUT ROWID virtual tables. (check-in: d31c25972b user: drh tags: without-rowid-vtab) | |
01:01 | Performance optimizations on the CSV virtual table. Disallow WITHOUT ROWID virtual tables that have an xUpdate method, for now. (check-in: 3134b3266c user: drh tags: without-rowid-vtab) | |
Changes
Changes to src/vtab.c.
︙ | ︙ | |||
754 755 756 757 758 759 760 | && (pParse->pNewTable->tabFlags & TF_Virtual)==0 ){ if( !pTab->aCol ){ Table *pNew = pParse->pNewTable; Index *pIdx; pTab->aCol = pNew->aCol; pTab->nCol = pNew->nCol; | | | 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 | && (pParse->pNewTable->tabFlags & TF_Virtual)==0 ){ if( !pTab->aCol ){ Table *pNew = pParse->pNewTable; Index *pIdx; pTab->aCol = pNew->aCol; pTab->nCol = pNew->nCol; pTab->tabFlags |= pNew->tabFlags & (TF_WithoutRowid|TF_NoVisibleRowid); pNew->nCol = 0; pNew->aCol = 0; assert( pTab->pIndex==0 ); if( !HasRowid(pNew) && pCtx->pVTable->pMod->pModule->xUpdate!=0 ){ rc = SQLITE_ERROR; } pIdx = pNew->pIndex; |
︙ | ︙ |
Changes to test/csv01.test.
︙ | ︙ | |||
83 84 85 86 87 88 89 90 91 92 93 94 95 96 | testflags=1 ); SELECT a FROM t3 WHERE b=6 OR c=7 OR d=12 ORDER BY +a; } {5 9} do_execsql_test 3.1 { SELECT a FROM t3 WHERE +b=6 OR c=7 OR d=12 ORDER BY +a; } {5 9} do_catchsql_test 4.0 { DROP TABLE t3; CREATE VIRTUAL TABLE temp.t4 USING csv_wr( data= '1,2,3,4 5,6,7,8 | > > > > > | 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | testflags=1 ); SELECT a FROM t3 WHERE b=6 OR c=7 OR d=12 ORDER BY +a; } {5 9} do_execsql_test 3.1 { SELECT a FROM t3 WHERE +b=6 OR c=7 OR d=12 ORDER BY +a; } {5 9} # The rowid column is not visible on a WITHOUT ROWID virtual table do_catchsql_test 3.2 { SELECT rowid, a FROM t3; } {1 {no such column: rowid}} do_catchsql_test 4.0 { DROP TABLE t3; CREATE VIRTUAL TABLE temp.t4 USING csv_wr( data= '1,2,3,4 5,6,7,8 |
︙ | ︙ |