mirror of
https://github.com/sqlite/sqlite.git
synced 2025-11-15 11:41:13 +03:00
Make the sqlite3DeleteTable() routine smaller and faster.
FossilOrigin-Name: d75140b851a34a5eb66041e294e421628efbc5ba
This commit is contained in:
12
manifest
12
manifest
@@ -1,5 +1,5 @@
|
|||||||
C Fix\stypo\sin\sthe\sintpkey-17.2\stest.
|
C Make\sthe\ssqlite3DeleteTable()\sroutine\ssmaller\sand\sfaster.
|
||||||
D 2016-05-07T12:15:15.906
|
D 2016-05-07T12:15:34.317
|
||||||
F Makefile.in 9eda6e1c90d05c199c3ec8a7069b0682ad307657
|
F Makefile.in 9eda6e1c90d05c199c3ec8a7069b0682ad307657
|
||||||
F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
|
F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
|
||||||
F Makefile.msc db82b35aef27f412fef14d8534afc022138bcdfd
|
F Makefile.msc db82b35aef27f412fef14d8534afc022138bcdfd
|
||||||
@@ -324,7 +324,7 @@ F src/btmutex.c bc87dd3b062cc26edfe79918de2200ccb8d41e73
|
|||||||
F src/btree.c 3ae6aea66cc4e13d30162ff0d0d43c7088e34abf
|
F src/btree.c 3ae6aea66cc4e13d30162ff0d0d43c7088e34abf
|
||||||
F src/btree.h a5008b9afe56e8e54ade6c436a910f112defcca9
|
F src/btree.h a5008b9afe56e8e54ade6c436a910f112defcca9
|
||||||
F src/btreeInt.h c18b7d2a3494695133e4e60ee36061d37f45d9a5
|
F src/btreeInt.h c18b7d2a3494695133e4e60ee36061d37f45d9a5
|
||||||
F src/build.c 42e8ee74dfa3a4b99bfb2c201f8a66ab50688d95
|
F src/build.c d65be62254ca9df36e1e1c433324f0333f80009c
|
||||||
F src/callback.c 2e76147783386374bf01b227f752c81ec872d730
|
F src/callback.c 2e76147783386374bf01b227f752c81ec872d730
|
||||||
F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
|
F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
|
||||||
F src/ctime.c 60e135af364d777a9ab41c97e5e89cd224da6198
|
F src/ctime.c 60e135af364d777a9ab41c97e5e89cd224da6198
|
||||||
@@ -1487,7 +1487,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
|
|||||||
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
||||||
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
||||||
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
||||||
P 3a695263183303e3f64eb2320752d0fdef53eaf2
|
P a45fda657d987f5c923d141584841a6c62dfb504
|
||||||
R 51aec2bae3f4c90b051a05d513fd048f
|
R de01d2c88028a3b709951f9d3730409b
|
||||||
U drh
|
U drh
|
||||||
Z 7d38c3073c92b6f84127f76ce4d99aa3
|
Z c83c111125ba50dd275150f90f412c72
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
a45fda657d987f5c923d141584841a6c62dfb504
|
d75140b851a34a5eb66041e294e421628efbc5ba
|
||||||
17
src/build.c
17
src/build.c
@@ -592,16 +592,10 @@ void sqlite3DeleteColumnNames(sqlite3 *db, Table *pTable){
|
|||||||
** db parameter can be used with db->pnBytesFreed to measure the memory
|
** db parameter can be used with db->pnBytesFreed to measure the memory
|
||||||
** used by the Table object.
|
** used by the Table object.
|
||||||
*/
|
*/
|
||||||
void sqlite3DeleteTable(sqlite3 *db, Table *pTable){
|
static void SQLITE_NOINLINE deleteTable(sqlite3 *db, Table *pTable){
|
||||||
Index *pIndex, *pNext;
|
Index *pIndex, *pNext;
|
||||||
TESTONLY( int nLookaside; ) /* Used to verify lookaside not used for schema */
|
TESTONLY( int nLookaside; ) /* Used to verify lookaside not used for schema */
|
||||||
|
|
||||||
assert( !pTable || pTable->nRef>0 );
|
|
||||||
|
|
||||||
/* Do not delete the table until the reference count reaches zero. */
|
|
||||||
if( !pTable ) return;
|
|
||||||
if( ((!db || db->pnBytesFreed==0) && (--pTable->nRef)>0) ) return;
|
|
||||||
|
|
||||||
/* Record the number of outstanding lookaside allocations in schema Tables
|
/* Record the number of outstanding lookaside allocations in schema Tables
|
||||||
** prior to doing any free() operations. Since schema Tables do not use
|
** prior to doing any free() operations. Since schema Tables do not use
|
||||||
** lookaside, this number should not change. */
|
** lookaside, this number should not change. */
|
||||||
@@ -641,6 +635,13 @@ void sqlite3DeleteTable(sqlite3 *db, Table *pTable){
|
|||||||
/* Verify that no lookaside memory was used by schema tables */
|
/* Verify that no lookaside memory was used by schema tables */
|
||||||
assert( nLookaside==0 || nLookaside==db->lookaside.nOut );
|
assert( nLookaside==0 || nLookaside==db->lookaside.nOut );
|
||||||
}
|
}
|
||||||
|
void sqlite3DeleteTable(sqlite3 *db, Table *pTable){
|
||||||
|
/* Do not delete the table until the reference count reaches zero. */
|
||||||
|
if( !pTable ) return;
|
||||||
|
if( ((!db || db->pnBytesFreed==0) && (--pTable->nRef)>0) ) return;
|
||||||
|
deleteTable(db, pTable);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Unlink the given table from the hash tables and the delete the
|
** Unlink the given table from the hash tables and the delete the
|
||||||
@@ -2221,7 +2222,7 @@ int sqlite3ViewGetColumnNames(Parse *pParse, Table *pTable){
|
|||||||
pTable->nCol = 0;
|
pTable->nCol = 0;
|
||||||
nErr++;
|
nErr++;
|
||||||
}
|
}
|
||||||
if( pSelTab ) sqlite3DeleteTable(db, pSelTab);
|
sqlite3DeleteTable(db, pSelTab);
|
||||||
sqlite3SelectDelete(db, pSel);
|
sqlite3SelectDelete(db, pSel);
|
||||||
db->lookaside.bDisable--;
|
db->lookaside.bDisable--;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user