Add asserts as evidence that all FK constraints are either immediate or
deferred. FossilOrigin-Name: 634ef4fc9f4051245b38f558bb1c733031548c2f
This commit is contained in:
parent
9a616f5607
commit
4c4298392e
22
manifest
22
manifest
@ -1,8 +1,8 @@
|
|||||||
-----BEGIN PGP SIGNED MESSAGE-----
|
-----BEGIN PGP SIGNED MESSAGE-----
|
||||||
Hash: SHA1
|
Hash: SHA1
|
||||||
|
|
||||||
C When\sprocessing\sFK\sconstraints\son\schanges\sto\sparent\stables,\smake\ssure\sthe\nnames\sof\schild\stables\sappear\scorrectly\sin\sthe\soutput\sof\sEXPLAIN\sQUERY\sPLAN.
|
C Add\sasserts\sas\sevidence\sthat\sall\sFK\sconstraints\sare\seither\simmediate\sor\ndeferred.
|
||||||
D 2009-10-12T20:01:50
|
D 2009-10-12T22:30:49
|
||||||
F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
|
F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
|
||||||
F Makefile.in 4ca3f1dd6efa2075bcb27f4dc43eef749877740d
|
F Makefile.in 4ca3f1dd6efa2075bcb27f4dc43eef749877740d
|
||||||
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
|
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
|
||||||
@ -112,14 +112,14 @@ F src/btmutex.c 0f43a75bb5b8147b386e8e1c3e71ba734e3863b7
|
|||||||
F src/btree.c 9c425425784c5d569bc0309c22251698ba906451
|
F src/btree.c 9c425425784c5d569bc0309c22251698ba906451
|
||||||
F src/btree.h 577448a890c2ab9b21e6ab74f073526184bceebe
|
F src/btree.h 577448a890c2ab9b21e6ab74f073526184bceebe
|
||||||
F src/btreeInt.h 1c86297e69380f6577e7ae67452597dd8d5c2705
|
F src/btreeInt.h 1c86297e69380f6577e7ae67452597dd8d5c2705
|
||||||
F src/build.c 1988dad2799d0421cd9fb6431fd3a1667115522e
|
F src/build.c 3c5762687d0554ebe8844dfaddb828fcc15fe16d
|
||||||
F src/callback.c 10d237171472865f58fb07d515737238c9e06688
|
F src/callback.c 10d237171472865f58fb07d515737238c9e06688
|
||||||
F src/complete.c 5ad5c6cd4548211867c204c41a126d73a9fbcea0
|
F src/complete.c 5ad5c6cd4548211867c204c41a126d73a9fbcea0
|
||||||
F src/date.c 657ff12ca0f1195b531561afacbb38b772d16638
|
F src/date.c 657ff12ca0f1195b531561afacbb38b772d16638
|
||||||
F src/delete.c 308e300d599d2d11b838687e2cf7309d42f29a1a
|
F src/delete.c 308e300d599d2d11b838687e2cf7309d42f29a1a
|
||||||
F src/expr.c c7f3f718bd5c392344ec8694a41c1824f30cf375
|
F src/expr.c c7f3f718bd5c392344ec8694a41c1824f30cf375
|
||||||
F src/fault.c dc88c821842157460750d2d61a8a8b4197d047ff
|
F src/fault.c dc88c821842157460750d2d61a8a8b4197d047ff
|
||||||
F src/fkey.c 2b79b3851b6f12104ab1d9f63566a117728926e2
|
F src/fkey.c 34ee2b0d60cc52f05dd6a205ce843c248096b509
|
||||||
F src/func.c e536218d193b8d326aab91120bc4c6f28aa2b606
|
F src/func.c e536218d193b8d326aab91120bc4c6f28aa2b606
|
||||||
F src/global.c 271952d199a8cc59d4ce840b3bbbfd2f30c8ba32
|
F src/global.c 271952d199a8cc59d4ce840b3bbbfd2f30c8ba32
|
||||||
F src/hash.c ebcaa921ffd9d86f7ea5ae16a0a29d1c871130a7
|
F src/hash.c ebcaa921ffd9d86f7ea5ae16a0a29d1c871130a7
|
||||||
@ -167,7 +167,7 @@ F src/select.c 1d0a13137532321b4364f964e46f057d271691e3
|
|||||||
F src/shell.c 270231b3f587f1f86391b9994fdfcd5d472c3fdf
|
F src/shell.c 270231b3f587f1f86391b9994fdfcd5d472c3fdf
|
||||||
F src/sqlite.h.in 8e1ccddb12b5e983d0a17e1f1477c72b0a72dd84
|
F src/sqlite.h.in 8e1ccddb12b5e983d0a17e1f1477c72b0a72dd84
|
||||||
F src/sqlite3ext.h 1db7d63ab5de4b3e6b83dd03d1a4e64fef6d2a17
|
F src/sqlite3ext.h 1db7d63ab5de4b3e6b83dd03d1a4e64fef6d2a17
|
||||||
F src/sqliteInt.h 61c55f5f83c63813903f374e9b33173572f0559a
|
F src/sqliteInt.h 44cded4d6b78fe5fb5339454c44e51c64b7d8ed8
|
||||||
F src/sqliteLimit.h 38b2fffcd01faeaeaadea71b2b47695a81580c8b
|
F src/sqliteLimit.h 38b2fffcd01faeaeaadea71b2b47695a81580c8b
|
||||||
F src/status.c 237b193efae0cf6ac3f0817a208de6c6c6ef6d76
|
F src/status.c 237b193efae0cf6ac3f0817a208de6c6c6ef6d76
|
||||||
F src/table.c cc86ad3d6ad54df7c63a3e807b5783c90411a08d
|
F src/table.c cc86ad3d6ad54df7c63a3e807b5783c90411a08d
|
||||||
@ -759,14 +759,14 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
|
|||||||
F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
|
F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
|
||||||
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
|
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
|
||||||
F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
|
F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
|
||||||
P 5633cb2b5b91a54e677dde76e31e319cd7d51780
|
P a4ab5215fed231c8e5f8714f5cadafd1209b362a
|
||||||
R bbf4996fcde5fed7535634c628dbe80e
|
R 4b18d30182072a8cd3031fc782eadfe8
|
||||||
U drh
|
U drh
|
||||||
Z ca40e99b9f3c91922320c8e8c4d2d4d4
|
Z ae8de04e4c5b2fdecf560180fe83fec1
|
||||||
-----BEGIN PGP SIGNATURE-----
|
-----BEGIN PGP SIGNATURE-----
|
||||||
Version: GnuPG v1.4.6 (GNU/Linux)
|
Version: GnuPG v1.4.6 (GNU/Linux)
|
||||||
|
|
||||||
iD8DBQFK04sxoxKgR168RlERAmiVAJwP98j7ZksNarQBrEoSyQpXdMhFawCeNsx6
|
iD8DBQFK064doxKgR168RlERAlWQAJ92yqj4W/BOhV0IW1IUn+D4AqGiwgCeKY3c
|
||||||
Fz9yjd/luwPASc49P+Yopuk=
|
ofWKl3KBlauHoZ3hAzBbU2Y=
|
||||||
=NY9x
|
=e87L
|
||||||
-----END PGP SIGNATURE-----
|
-----END PGP SIGNATURE-----
|
||||||
|
@ -1 +1 @@
|
|||||||
a4ab5215fed231c8e5f8714f5cadafd1209b362a
|
634ef4fc9f4051245b38f558bb1c733031548c2f
|
@ -2267,7 +2267,7 @@ void sqlite3DeferForeignKey(Parse *pParse, int isDeferred){
|
|||||||
Table *pTab;
|
Table *pTab;
|
||||||
FKey *pFKey;
|
FKey *pFKey;
|
||||||
if( (pTab = pParse->pNewTable)==0 || (pFKey = pTab->pFKey)==0 ) return;
|
if( (pTab = pParse->pNewTable)==0 || (pFKey = pTab->pFKey)==0 ) return;
|
||||||
assert( isDeferred==0 || isDeferred==1 );
|
assert( isDeferred==0 || isDeferred==1 ); /* EV: R-30323-21917 */
|
||||||
pFKey->isDeferred = (u8)isDeferred;
|
pFKey->isDeferred = (u8)isDeferred;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -1178,7 +1178,11 @@ void sqlite3FkDelete(Table *pTab){
|
|||||||
fkTriggerDelete(pTab->dbMem, pFKey->apTrigger[1]);
|
fkTriggerDelete(pTab->dbMem, pFKey->apTrigger[1]);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Delete the memory allocated for the FK structure. */
|
/* EV: R-30323-21917 Each foreign key constraint in SQLite is
|
||||||
|
** classified as either immediate or deferred.
|
||||||
|
*/
|
||||||
|
assert( pFKey->isDeferred==0 || pFKey->isDeferred==1 );
|
||||||
|
|
||||||
pNext = pFKey->pNextFrom;
|
pNext = pFKey->pNextFrom;
|
||||||
sqlite3DbFree(pTab->dbMem, pFKey);
|
sqlite3DbFree(pTab->dbMem, pFKey);
|
||||||
}
|
}
|
||||||
|
@ -1289,6 +1289,7 @@ struct FKey {
|
|||||||
FKey *pNextTo; /* Next foreign key on table named zTo */
|
FKey *pNextTo; /* Next foreign key on table named zTo */
|
||||||
FKey *pPrevTo; /* Previous foreign key on table named zTo */
|
FKey *pPrevTo; /* Previous foreign key on table named zTo */
|
||||||
int nCol; /* Number of columns in this key */
|
int nCol; /* Number of columns in this key */
|
||||||
|
/* EV: R-30323-21917 */
|
||||||
u8 isDeferred; /* True if constraint checking is deferred till COMMIT */
|
u8 isDeferred; /* True if constraint checking is deferred till COMMIT */
|
||||||
u8 aAction[2]; /* ON DELETE and ON UPDATE actions, respectively */
|
u8 aAction[2]; /* ON DELETE and ON UPDATE actions, respectively */
|
||||||
Trigger *apTrigger[2]; /* Triggers for aAction[] actions */
|
Trigger *apTrigger[2]; /* Triggers for aAction[] actions */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user