aboutsummaryrefslogtreecommitdiff
path: root/src/select.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2015-09-24 14:26:51 +0000
committerdrh <drh@noemail.net>2015-09-24 14:26:51 +0000
commit9ec0efd946b8015f8b3ba3b726bc39f0b15d306c (patch)
treeb4764dfa9ca1b2d064f80f3d13056f2b5bbeba61 /src/select.c
parent438b881540c83370029c73c8a1d7eba78979c491 (diff)
parent22c733da644bcf8d614b7caf058c7a2b51286ab8 (diff)
downloadsqlite-9ec0efd946b8015f8b3ba3b726bc39f0b15d306c.tar.gz
sqlite-9ec0efd946b8015f8b3ba3b726bc39f0b15d306c.zip
Merge all the latest trunk enhancements into the sessions branch.
FossilOrigin-Name: c91065f8edb1e54076791716fc20d3fcfe3070dc
Diffstat (limited to 'src/select.c')
-rw-r--r--src/select.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/select.c b/src/select.c
index 0dea56ba1..a4aaa0eca 100644
--- a/src/select.c
+++ b/src/select.c
@@ -4267,9 +4267,12 @@ static int selectExpander(Walker *pWalker, Select *p){
pTab->nRef++;
#if !defined(SQLITE_OMIT_VIEW) || !defined (SQLITE_OMIT_VIRTUALTABLE)
if( pTab->pSelect || IsVirtual(pTab) ){
- /* We reach here if the named table is a really a view */
if( sqlite3ViewGetColumnNames(pParse, pTab) ) return WRC_Abort;
assert( pFrom->pSelect==0 );
+ if( pFrom->fg.isTabFunc && !IsVirtual(pTab) ){
+ sqlite3ErrorMsg(pParse, "'%s' is not a function", pTab->zName);
+ return WRC_Abort;
+ }
pFrom->pSelect = sqlite3SelectDup(db, pTab->pSelect, 0);
sqlite3SelectSetName(pFrom->pSelect, pTab->zName);
sqlite3WalkSelect(pWalker, pFrom->pSelect);