mirror of
https://github.com/sqlite/sqlite.git
synced 2025-11-11 01:42:22 +03:00
Enforce column affinity on the materialization of a subquery or view.
FossilOrigin-Name: b6692de374d7f489d8cf8877bdfef19501bc5ecb0781d42750807eeb58f2e7cd
This commit is contained in:
@@ -1287,6 +1287,9 @@ static void selectInnerLoop(
|
||||
testcase( eDest==SRT_Fifo );
|
||||
testcase( eDest==SRT_DistFifo );
|
||||
sqlite3VdbeAddOp3(v, OP_MakeRecord, regResult, nResultCol, r1+nPrefixReg);
|
||||
if( pDest->zAffSdst ){
|
||||
sqlite3VdbeChangeP4(v, -1, pDest->zAffSdst, nResultCol);
|
||||
}
|
||||
#ifndef SQLITE_OMIT_CTE
|
||||
if( eDest==SRT_DistFifo ){
|
||||
/* If the destination is DistFifo, then cursor (iParm+1) is open
|
||||
@@ -7071,7 +7074,10 @@ int sqlite3Select(
|
||||
}
|
||||
sqlite3SelectDestInit(&dest, SRT_EphemTab, pItem->iCursor);
|
||||
ExplainQueryPlan((pParse, 1, "MATERIALIZE %!S", pItem));
|
||||
dest.zAffSdst = sqlite3TableAffinityStr(db, pItem->pTab);
|
||||
sqlite3Select(pParse, pSub, &dest);
|
||||
sqlite3DbFree(db, dest.zAffSdst);
|
||||
dest.zAffSdst = 0;
|
||||
pItem->pTab->nRowLogEst = pSub->nSelectRow;
|
||||
if( onceAddr ) sqlite3VdbeJumpHere(v, onceAddr);
|
||||
sqlite3VdbeAddOp2(v, OP_Return, pItem->regReturn, topAddr+1);
|
||||
|
||||
Reference in New Issue
Block a user