Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Make sure errors in the FROM clause of a SELECT cause analysis to abort and unwind the stack before those errors have a chance to mischief in the "*" column-name wildcard expander. Fix for ticket [32b63d542433ca67]. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
9e6eae660a02303fd140dac5fbff8236 |
User & Date: | drh 2015-01-22 12:00:17 |
Context
2015-01-24
| ||
12:12 | In the command-line shell, make sure stderr is unbuffered so that it automatically flushes. This has always been the case already for unix and on Windows when the output is a console, but apparently was not the case on Windows when the output was a pipe. (check-in: 2a9ea9b4 user: drh tags: trunk) | |
2015-01-22
| ||
12:00 | Make sure errors in the FROM clause of a SELECT cause analysis to abort and unwind the stack before those errors have a chance to mischief in the "*" column-name wildcard expander. Fix for ticket [32b63d542433ca67]. (check-in: 9e6eae66 user: drh tags: trunk) | |
11:29 | Change the undocumented ".selecttrace" command in the shell to accept an integer bitmask rather than a boolean. (check-in: bd63bf88 user: drh tags: trunk) | |
Changes
Changes to src/select.c.
︙ | ︙ | |||
4149 4150 4151 4152 4153 4154 4155 | #endif if( pFrom->zName==0 ){ #ifndef SQLITE_OMIT_SUBQUERY Select *pSel = pFrom->pSelect; /* A sub-query in the FROM clause of a SELECT */ assert( pSel!=0 ); assert( pFrom->pTab==0 ); | | | 4149 4150 4151 4152 4153 4154 4155 4156 4157 4158 4159 4160 4161 4162 4163 | #endif if( pFrom->zName==0 ){ #ifndef SQLITE_OMIT_SUBQUERY Select *pSel = pFrom->pSelect; /* A sub-query in the FROM clause of a SELECT */ assert( pSel!=0 ); assert( pFrom->pTab==0 ); if( sqlite3WalkSelect(pWalker, pSel) ) return WRC_Abort; pFrom->pTab = pTab = sqlite3DbMallocZero(db, sizeof(Table)); if( pTab==0 ) return WRC_Abort; pTab->nRef = 1; pTab->zName = sqlite3MPrintf(db, "sqlite_sq_%p", (void*)pTab); while( pSel->pPrior ){ pSel = pSel->pPrior; } selectColumnsFromExprList(pParse, pSel->pEList, &pTab->nCol, &pTab->aCol); pTab->iPKey = -1; |
︙ | ︙ |
Changes to test/fuzz2.test.
︙ | ︙ | |||
120 121 122 123 124 125 126 127 128 129 | do_test fuzz2-6.4a { db eval {DROP TABLE IF EXISTS t0; CREATE TABLE t0(t);} catchsql {INSERT INTO t0 SELECT strftime();} } {0 {}} do_test fuzz2-6.4b { db eval {SELECT quote(t) FROM t0} } {NULL} finish_test | > > > > > > > > > > | 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 | do_test fuzz2-6.4a { db eval {DROP TABLE IF EXISTS t0; CREATE TABLE t0(t);} catchsql {INSERT INTO t0 SELECT strftime();} } {0 {}} do_test fuzz2-6.4b { db eval {SELECT quote(t) FROM t0} } {NULL} # Another test case discovered by Michal Zalewski, this on on 2015-01-22. # Ticket 32b63d542433ca6757cd695aca42addf8ed67aa6 # do_test fuzz2-7.1 { catchsql {select e.*,0 from(s,(L))e;} } {1 {no such table: s}} do_test fuzz2-7.2 { catchsql {SELECT c.* FROM (a,b) AS c} } {1 {no such table: a}} finish_test |