mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-07 02:42:48 +03:00
Allow the RETURNING trigger to exist for virtual tables.
FossilOrigin-Name: 2f244ab4a2ba2bdb608cf44ef02e00738ad58c10a76d9e4222dc843a17103d92
This commit is contained in:
@@ -735,7 +735,8 @@ Trigger *sqlite3TriggersExist(
|
||||
if( (pParse->db->flags & SQLITE_EnableTrigger)!=0 ){
|
||||
pList = sqlite3TriggerList(pParse, pTab);
|
||||
}
|
||||
assert( pList==0 || IsVirtual(pTab)==0 );
|
||||
assert( pList==0 || IsVirtual(pTab)==0
|
||||
|| (pList->bReturning && pList->pNext==0) );
|
||||
for(p=pList; p; p=p->pNext){
|
||||
if( p->op==op && checkColumnOverlap(p->pColumns, pChanges) ){
|
||||
mask |= p->tr_tm;
|
||||
@@ -810,13 +811,14 @@ static ExprList *sqlite3ExpandReturning(
|
||||
for(i=0; i<pList->nExpr; i++){
|
||||
Expr *pOldExpr = pList->a[i].pExpr;
|
||||
if( ALWAYS(pOldExpr!=0) && pOldExpr->op==TK_ASTERISK ){
|
||||
int j;
|
||||
for(j=0; j<pTab->nCol; j++){
|
||||
Expr *pNewExpr = sqlite3Expr(db, TK_ID, pTab->aCol[j].zName);
|
||||
int jj;
|
||||
for(jj=0; jj<pTab->nCol; jj++){
|
||||
if( IsHiddenColumn(pTab->aCol+jj) ) continue;
|
||||
Expr *pNewExpr = sqlite3Expr(db, TK_ID, pTab->aCol[jj].zName);
|
||||
pNew = sqlite3ExprListAppend(pParse, pNew, pNewExpr);
|
||||
if( !db->mallocFailed ){
|
||||
struct ExprList_item *pItem = &pNew->a[pNew->nExpr-1];
|
||||
pItem->zEName = sqlite3DbStrDup(db, pTab->aCol[j].zName);
|
||||
pItem->zEName = sqlite3DbStrDup(db, pTab->aCol[jj].zName);
|
||||
pItem->eEName = ENAME_NAME;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user