diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/update.c | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/src/update.c b/src/update.c index 5d4e5ae7d..fa80a7da8 100644 --- a/src/update.c +++ b/src/update.c @@ -169,18 +169,28 @@ static void updatePopulateEphTable( Expr *pLimit ){ int i; - sqlite3 *db = pParse->db; SelectDest dest; Select *pSelect = 0; ExprList *pList = 0; - Table *pTab = pTabList->a[0].pTab; - SrcList *pSrc = sqlite3SrcListDup(db, pTabList, 0); - Expr *pWhere2 = sqlite3ExprDup(db, pWhere, 0); - Expr *pLimit2 = sqlite3ExprDup(db, pLimit, 0); - ExprList *pOrderBy2 = sqlite3ExprListDup(db, pOrderBy, 0); ExprList *pGroupBy = 0; + sqlite3 *db = pParse->db; + Table *pTab = pTabList->a[0].pTab; + SrcList *pSrc; + Expr *pWhere2; + Expr *pLimit2; + ExprList *pOrderBy2; int eDest; + if( pOrderBy && pLimit==0 ) { + sqlite3ErrorMsg(pParse, "ORDER BY without LIMIT on UPDATE"); + return; + } + + pSrc = sqlite3SrcListDup(db, pTabList, 0); + pWhere2 = sqlite3ExprDup(db, pWhere, 0); + pLimit2 = sqlite3ExprDup(db, pLimit, 0); + pOrderBy2 = sqlite3ExprListDup(db, pOrderBy, 0); + assert( pTabList->nSrc>1 ); if( pSrc ){ pSrc->a[0].iCursor = -1; |