Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Comment enhancements. Add an ALWAYS macro in fkey.c to indicate a branch that is always taken. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
d5b714cffffe588dd4dd10e0b82df8d9 |
User & Date: | drh 2009-09-24 13:48:11.000 |
Context
2009-09-24
| ||
14:27 | Remove the ALWAYS() added by the previous check-in. It is not needed. (check-in: 3656896335 user: drh tags: trunk) | |
13:48 | Comment enhancements. Add an ALWAYS macro in fkey.c to indicate a branch that is always taken. (check-in: d5b714cfff user: drh tags: trunk) | |
11:31 | Ensure foreign key related processing takes place when rows are deleted from the database by REPLACE conflict handling. (check-in: 3f40c142c8 user: dan tags: trunk) | |
Changes
Changes to src/fkey.c.
︙ | ︙ | |||
842 843 844 845 846 847 848 | } pList = sqlite3ExprListAppend(pParse, pList, pNew); sqlite3ExprListSetName(pParse, pList, &tFromCol, 0); } } sqlite3DbFree(db, aiCol); | | | | > > | | 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 | } pList = sqlite3ExprListAppend(pParse, pList, pNew); sqlite3ExprListSetName(pParse, pList, &tFromCol, 0); } } sqlite3DbFree(db, aiCol); /* In the current implementation, pTab->dbMem==0 for all tables except ** for temporary tables used to describe subqueries. And temporary ** tables do not have foreign key constraints. Hence, pTab->dbMem ** should always be 0 there. */ enableLookaside = db->lookaside.bEnabled; if( ALWAYS(pTab->dbMem==0) ){ db->lookaside.bEnabled = 0; } zFrom = pFKey->pFrom->zName; nFrom = sqlite3Strlen30(zFrom); pTrigger = (Trigger *)sqlite3DbMallocZero(db, sizeof(Trigger) + /* struct Trigger */ |
︙ | ︙ |
Changes to src/sqliteInt.h.
︙ | ︙ | |||
1279 1280 1281 1282 1283 1284 1285 | ** For foreign key "fk1", the from-table is "ex1" and the to-table is "ex2". ** ** Each REFERENCES clause generates an instance of the following structure ** which is attached to the from-table. The to-table need not exist when ** the from-table is created. The existence of the to-table is not checked. */ struct FKey { | | | | 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 | ** For foreign key "fk1", the from-table is "ex1" and the to-table is "ex2". ** ** Each REFERENCES clause generates an instance of the following structure ** which is attached to the from-table. The to-table need not exist when ** the from-table is created. The existence of the to-table is not checked. */ struct FKey { Table *pFrom; /* Table containing the REFERENCES clause (aka: Child) */ FKey *pNextFrom; /* Next foreign key in pFrom */ char *zTo; /* Name of table that the key points to (aka: Parent) */ FKey *pNextTo; /* Next foreign key on table named zTo */ FKey *pPrevTo; /* Previous foreign key on table named zTo */ int nCol; /* Number of columns in this key */ u8 isDeferred; /* True if constraint checking is deferred till COMMIT */ u8 aAction[2]; /* ON DELETE and ON UPDATE actions, respectively */ Trigger *apTrigger[2]; /* Triggers for aAction[] actions */ struct sColMap { /* Mapping of columns in pFrom to columns in zTo */ |
︙ | ︙ |