From: drh Date: Fri, 3 Jun 2016 17:27:14 +0000 (+0000) Subject: Disallow access to the rowid column on WITHOUT ROWID virtual tables. X-Git-Tag: version-3.14.0~115^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7edcf627af2b62cd0914cd25299d704a9751f617;p=thirdparty%2Fsqlite.git Disallow access to the rowid column on WITHOUT ROWID virtual tables. FossilOrigin-Name: d31c25972bfb6d04caad05534505698776e7e6d5 --- diff --git a/manifest b/manifest index 21eb765e24..14b0bedf9c 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Performance\soptimizations\son\sthe\sCSV\svirtual\stable.\s\sDisallow\sWITHOUT\sROWID\nvirtual\stables\sthat\shave\san\sxUpdate\smethod,\sfor\snow. -D 2016-06-03T01:01:57.592 +C Disallow\saccess\sto\sthe\srowid\scolumn\son\sWITHOUT\sROWID\svirtual\stables. +D 2016-06-03T17:27:14.741 F Makefile.in 7321ef0b584224781ec7731408857fa8962c32cc F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc 831503fc4e988f571590af1405645fff121b5f1e @@ -456,7 +456,7 @@ F src/vdbeblob.c c9f2f494b911c6fa34efd9803f0a10807da80f77 F src/vdbemem.c 5cfef60e60e19cab6275d1b975bf4c791d575beb F src/vdbesort.c 91fda3909326860382b0ca8aa251e609c6a9d62c F src/vdbetrace.c f75c5455d8cf389ef86a8bfdfd3177e0e3692484 -F src/vtab.c a9e8175477539660814a4704e8eaba6df3678651 +F src/vtab.c 7a143175f5586d99f78f61b43a563caa03eb4d63 F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9 F src/wal.c 02eeecc265f6ffd0597378f5d8ae9070b62a406a F src/wal.h 2f7c831cf3b071fa548bf2d5cac640846a7ff19c @@ -612,7 +612,7 @@ F test/crashM.test d95f59046fa749b0d0822edf18a717788c8f318d F test/crashtest1.c 09c1c7d728ccf4feb9e481671e29dda5669bbcc2 F test/createtab.test b5de160630b209c4b8925bdcbbaf48cc90b67fe8 F test/cse.test 277350a26264495e86b1785f34d2d0c8600e021c -F test/csv01.test 69aecc17f11f597390b47700aec8d748b8364140 +F test/csv01.test 0929a9ce47021519512be92861f29e32d2538e5f F test/ctime.test 7bd009071e242aac4f18521581536b652b789a47 F test/cursorhint.test 7bc346788390475e77a345da2b92270d04d35856 F test/date.test 984ac1e3e5e031386866f034006148d3972b4a65 @@ -1498,7 +1498,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 95f483e86e30ae68108904400e18ed41d389446b -R 110a9ed97c9cb7052ae396116c46b04d +P 3134b3266c36c9d018e8d365ef46ef638c0792f4 +R 6bd90244b320ac429cd2120cdab002d9 U drh -Z 863bf523824cd922d795a07ca8451a6d +Z 5fa00a97540dd1b5ac1a6e73a3f78ebc diff --git a/manifest.uuid b/manifest.uuid index 935a081c06..0f61bc8586 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -3134b3266c36c9d018e8d365ef46ef638c0792f4 \ No newline at end of file +d31c25972bfb6d04caad05534505698776e7e6d5 \ No newline at end of file diff --git a/src/vtab.c b/src/vtab.c index 30cdd43e4b..eeef64c67a 100644 --- a/src/vtab.c +++ b/src/vtab.c @@ -758,7 +758,7 @@ int sqlite3_declare_vtab(sqlite3 *db, const char *zCreateTable){ Index *pIdx; pTab->aCol = pNew->aCol; pTab->nCol = pNew->nCol; - pTab->tabFlags |= pNew->tabFlags & TF_WithoutRowid; + pTab->tabFlags |= pNew->tabFlags & (TF_WithoutRowid|TF_NoVisibleRowid); pNew->nCol = 0; pNew->aCol = 0; assert( pTab->pIndex==0 ); diff --git a/test/csv01.test b/test/csv01.test index ba3a947dfc..a6fff81c3f 100644 --- a/test/csv01.test +++ b/test/csv01.test @@ -88,6 +88,11 @@ 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(