Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Add another missing column number translation to the foreign key logic. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
32df5edcfef2605009f45d6ef1b97c63 |
User & Date: | drh 2019-11-01 16:08:20.952 |
Context
2019-11-01
| ||
16:37 | Fix a potential use-after-free bug that follows an OOM error in code added two days ago by check-in [84e02d773d60cffe]. Problem discovered by OSSFuzz. (check-in: 0a2eb949f8 user: drh tags: trunk) | |
16:08 | Add another missing column number translation to the foreign key logic. (check-in: 32df5edcfe user: drh tags: trunk) | |
15:19 | Omit the optimization that reduces the column-count on rowid-table cursors when the table has generated columns, because we do not know what columns the generator expressions might try to access. (check-in: e6c96ed91e user: drh tags: trunk) | |
Changes
Changes to src/fkey.c.
︙ | ︙ | |||
928 929 930 931 932 933 934 | ** If the parent table of an FK constraint on the current table is ** missing, behave as if it is empty. i.e. decrement the relevant ** FK counter for each row of the current table with non-NULL keys. */ Vdbe *v = sqlite3GetVdbe(pParse); int iJump = sqlite3VdbeCurrentAddr(v) + pFKey->nCol + 1; for(i=0; i<pFKey->nCol; i++){ | > | > | 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 | ** If the parent table of an FK constraint on the current table is ** missing, behave as if it is empty. i.e. decrement the relevant ** FK counter for each row of the current table with non-NULL keys. */ Vdbe *v = sqlite3GetVdbe(pParse); int iJump = sqlite3VdbeCurrentAddr(v) + pFKey->nCol + 1; for(i=0; i<pFKey->nCol; i++){ int iCol, iReg; iCol = pFKey->aCol[i].iFrom; iReg = sqlite3TableColumnToStorage(pFKey->pFrom,iCol) + regOld + 1; sqlite3VdbeAddOp2(v, OP_IsNull, iReg, iJump); VdbeCoverage(v); } sqlite3VdbeAddOp2(v, OP_FkCounter, pFKey->isDeferred, -1); } continue; } assert( pFKey->nCol==1 || (aiFree && pIdx) ); |
︙ | ︙ |