mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-08 14:02:16 +03:00
Refactor the Table.nRef field as Table.nTabRef for easier grepping.
FossilOrigin-Name: 9cae4c2e300e20304ced0dc8c1415c4922185928
This commit is contained in:
26
manifest
26
manifest
@@ -1,5 +1,5 @@
|
|||||||
C Increase\sthe\ssize\sof\sthe\sreference\scount\son\sTable\sobjects\sto\s32\sbits.
|
C Refactor\sthe\sTable.nRef\sfield\sas\sTable.nTabRef\sfor\seasier\sgrepping.
|
||||||
D 2016-12-14T13:54:25.287
|
D 2016-12-14T14:07:35.372
|
||||||
F Makefile.in c194b58fe00c370a48ac6ae6945e92a7781db1c8
|
F Makefile.in c194b58fe00c370a48ac6ae6945e92a7781db1c8
|
||||||
F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
|
F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
|
||||||
F Makefile.msc b8ca53350ae545e3562403d5da2a69cec79308da
|
F Makefile.msc b8ca53350ae545e3562403d5da2a69cec79308da
|
||||||
@@ -324,7 +324,7 @@ F spec.template 86a4a43b99ebb3e75e6b9a735d5fd293a24e90ca
|
|||||||
F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b
|
F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b
|
||||||
F sqlite3.1 fc7ad8990fc8409983309bb80de8c811a7506786
|
F sqlite3.1 fc7ad8990fc8409983309bb80de8c811a7506786
|
||||||
F sqlite3.pc.in 48fed132e7cb71ab676105d2a4dc77127d8c1f3a
|
F sqlite3.pc.in 48fed132e7cb71ab676105d2a4dc77127d8c1f3a
|
||||||
F src/alter.c 299117695b1f21ac62dfc5b608588810ba22ed0d
|
F src/alter.c 0f83ee1d5963e85f8f3316cb11a90227807a74c8
|
||||||
F src/analyze.c 8b62b2cf4da85451534ac0af82cafc418d837f68
|
F src/analyze.c 8b62b2cf4da85451534ac0af82cafc418d837f68
|
||||||
F src/attach.c f6725410c184a80d8141b294fdf98a854c8a52b5
|
F src/attach.c f6725410c184a80d8141b294fdf98a854c8a52b5
|
||||||
F src/auth.c 930b376a9c56998557367e6f7f8aaeac82a2a792
|
F src/auth.c 930b376a9c56998557367e6f7f8aaeac82a2a792
|
||||||
@@ -334,16 +334,16 @@ F src/btmutex.c bc87dd3b062cc26edfe79918de2200ccb8d41e73
|
|||||||
F src/btree.c b2055dff0b94e03eaad48a760984a2d8e39244e6
|
F src/btree.c b2055dff0b94e03eaad48a760984a2d8e39244e6
|
||||||
F src/btree.h 2349a588abcd7e0c04f984e15c5c777b61637583
|
F src/btree.h 2349a588abcd7e0c04f984e15c5c777b61637583
|
||||||
F src/btreeInt.h 10c4b77c2fb399580babbcc7cf652ac10dba796e
|
F src/btreeInt.h 10c4b77c2fb399580babbcc7cf652ac10dba796e
|
||||||
F src/build.c 66bab5ee3998b1ebbea66ce0de60a82dcf497747
|
F src/build.c e2b32766847eb16d4314c99067571ae08b888dfe
|
||||||
F src/callback.c 2e76147783386374bf01b227f752c81ec872d730
|
F src/callback.c 2e76147783386374bf01b227f752c81ec872d730
|
||||||
F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
|
F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
|
||||||
F src/ctime.c 9f2296a4e5d26ebf0e0d95a0af4628f1ea694e7a
|
F src/ctime.c 9f2296a4e5d26ebf0e0d95a0af4628f1ea694e7a
|
||||||
F src/date.c b48378aeac68fa20c811404955a9b62108df47d8
|
F src/date.c b48378aeac68fa20c811404955a9b62108df47d8
|
||||||
F src/dbstat.c 19ee7a4e89979d4df8e44cfac7a8f905ec89b77d
|
F src/dbstat.c 19ee7a4e89979d4df8e44cfac7a8f905ec89b77d
|
||||||
F src/delete.c 42768e673861dffec92664b2036da6be51720e49
|
F src/delete.c c8bc10d145c9666a34ae906250326fdaa8d58fa5
|
||||||
F src/expr.c 84a5e590184ad7ccae22e7ad484d6394dec46f16
|
F src/expr.c c7c11fbe8bd4d27d04f1370efcce5a05b4fca229
|
||||||
F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
|
F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
|
||||||
F src/fkey.c 4f527ddd05250b3f750f17be76ca65ec76b4e6cb
|
F src/fkey.c 2e9aabe1aee76273aff8a84ee92c464e095400ae
|
||||||
F src/func.c 43916c1d8e6da5d107d91d2b212577d4f69a876a
|
F src/func.c 43916c1d8e6da5d107d91d2b212577d4f69a876a
|
||||||
F src/global.c 235021a21ee2cb52b304589f8f9e85a36bbe24fa
|
F src/global.c 235021a21ee2cb52b304589f8f9e85a36bbe24fa
|
||||||
F src/hash.c 63d0ee752a3b92d4695b2b1f5259c4621b2cfebd
|
F src/hash.c 63d0ee752a3b92d4695b2b1f5259c4621b2cfebd
|
||||||
@@ -388,12 +388,12 @@ F src/printf.c f94da4935d1dd25420ac50c6745db1deb35e07c1
|
|||||||
F src/random.c 80f5d666f23feb3e6665a6ce04c7197212a88384
|
F src/random.c 80f5d666f23feb3e6665a6ce04c7197212a88384
|
||||||
F src/resolve.c bb070cf5f23611c44ab7e4788803684e385fc3fb
|
F src/resolve.c bb070cf5f23611c44ab7e4788803684e385fc3fb
|
||||||
F src/rowset.c 7b7e7e479212e65b723bf40128c7b36dc5afdfac
|
F src/rowset.c 7b7e7e479212e65b723bf40128c7b36dc5afdfac
|
||||||
F src/select.c b4bd43e1233c87e8a7cf66150421997b0396417e
|
F src/select.c 204491a5e09a66380a067943d8651af8bda1d358
|
||||||
F src/shell.c f1c7fde7a83421e6ed620df41d200674a2327e65
|
F src/shell.c f1c7fde7a83421e6ed620df41d200674a2327e65
|
||||||
F src/sqlite.h.in e8e2d108d82647f0a812fdb74accf91c1ec08ddc
|
F src/sqlite.h.in e8e2d108d82647f0a812fdb74accf91c1ec08ddc
|
||||||
F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
|
F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
|
||||||
F src/sqlite3ext.h 8648034aa702469afb553231677306cc6492a1ae
|
F src/sqlite3ext.h 8648034aa702469afb553231677306cc6492a1ae
|
||||||
F src/sqliteInt.h 69345b355da43b89216e9cea619eb24ddd418896
|
F src/sqliteInt.h 657a892d885253768c82f1e04e8053468b13cb6a
|
||||||
F src/sqliteLimit.h c0373387c287c8d0932510b5547ecde31b5da247
|
F src/sqliteLimit.h c0373387c287c8d0932510b5547ecde31b5da247
|
||||||
F src/status.c a9e66593dfb28a9e746cba7153f84d49c1ddc4b1
|
F src/status.c a9e66593dfb28a9e746cba7153f84d49c1ddc4b1
|
||||||
F src/table.c 5226df15ab9179b9ed558d89575ea0ce37b03fc9
|
F src/table.c 5226df15ab9179b9ed558d89575ea0ce37b03fc9
|
||||||
@@ -464,7 +464,7 @@ F src/vdbeblob.c f4f98ea672b242f807c08c92c7faaa79e5091b65
|
|||||||
F src/vdbemem.c d3fd85b7b7ef3eb75de29c6d7e1d10d3ca78b4fd
|
F src/vdbemem.c d3fd85b7b7ef3eb75de29c6d7e1d10d3ca78b4fd
|
||||||
F src/vdbesort.c bb34eed4fb52e11ac037dccea4ee3190594c7f9e
|
F src/vdbesort.c bb34eed4fb52e11ac037dccea4ee3190594c7f9e
|
||||||
F src/vdbetrace.c 41963d5376f0349842b5fc4aaaaacd7d9cdc0834
|
F src/vdbetrace.c 41963d5376f0349842b5fc4aaaaacd7d9cdc0834
|
||||||
F src/vtab.c e02cacb5c7ae742631edeb9ae9f53d399f093fd8
|
F src/vtab.c 2d5db3fd68c41c5a7476e43e79eb54181fa01713
|
||||||
F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9
|
F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9
|
||||||
F src/wal.c 40c543f0a2195d1b0dc88ef12142bea690009344
|
F src/wal.c 40c543f0a2195d1b0dc88ef12142bea690009344
|
||||||
F src/wal.h 06b2a0b599cc0f53ea97f497cf8c6b758c999f71
|
F src/wal.h 06b2a0b599cc0f53ea97f497cf8c6b758c999f71
|
||||||
@@ -1536,7 +1536,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 00a184b65f73f361e1728fea06529f746fab66b5
|
P d08b72c38ff6fae6ddf7dc84a54f6d7189876289
|
||||||
R bb3d64fa96b2e381730c4f4039396de5
|
R ee18812138ebcbd59cf246eeb625fa00
|
||||||
U drh
|
U drh
|
||||||
Z 286d124da8f3f0702924a8d69dad9e38
|
Z c1d49b9032916157524a152005703654
|
||||||
|
@@ -1 +1 @@
|
|||||||
d08b72c38ff6fae6ddf7dc84a54f6d7189876289
|
9cae4c2e300e20304ced0dc8c1415c4922185928
|
@@ -773,7 +773,7 @@ void sqlite3AlterBeginAddColumn(Parse *pParse, SrcList *pSrc){
|
|||||||
pNew = (Table*)sqlite3DbMallocZero(db, sizeof(Table));
|
pNew = (Table*)sqlite3DbMallocZero(db, sizeof(Table));
|
||||||
if( !pNew ) goto exit_begin_add_column;
|
if( !pNew ) goto exit_begin_add_column;
|
||||||
pParse->pNewTable = pNew;
|
pParse->pNewTable = pNew;
|
||||||
pNew->nRef = 1;
|
pNew->nTabRef = 1;
|
||||||
pNew->nCol = pTab->nCol;
|
pNew->nCol = pTab->nCol;
|
||||||
assert( pNew->nCol>0 );
|
assert( pNew->nCol>0 );
|
||||||
nAlloc = (((pNew->nCol-1)/8)*8)+8;
|
nAlloc = (((pNew->nCol-1)/8)*8)+8;
|
||||||
@@ -793,7 +793,7 @@ void sqlite3AlterBeginAddColumn(Parse *pParse, SrcList *pSrc){
|
|||||||
}
|
}
|
||||||
pNew->pSchema = db->aDb[iDb].pSchema;
|
pNew->pSchema = db->aDb[iDb].pSchema;
|
||||||
pNew->addColOffset = pTab->addColOffset;
|
pNew->addColOffset = pTab->addColOffset;
|
||||||
pNew->nRef = 1;
|
pNew->nTabRef = 1;
|
||||||
|
|
||||||
/* Begin a transaction and increment the schema cookie. */
|
/* Begin a transaction and increment the schema cookie. */
|
||||||
sqlite3BeginWriteOperation(pParse, 0, iDb);
|
sqlite3BeginWriteOperation(pParse, 0, iDb);
|
||||||
|
@@ -634,7 +634,7 @@ static void SQLITE_NOINLINE deleteTable(sqlite3 *db, Table *pTable){
|
|||||||
void sqlite3DeleteTable(sqlite3 *db, Table *pTable){
|
void sqlite3DeleteTable(sqlite3 *db, Table *pTable){
|
||||||
/* Do not delete the table until the reference count reaches zero. */
|
/* Do not delete the table until the reference count reaches zero. */
|
||||||
if( !pTable ) return;
|
if( !pTable ) return;
|
||||||
if( ((!db || db->pnBytesFreed==0) && (--pTable->nRef)>0) ) return;
|
if( ((!db || db->pnBytesFreed==0) && (--pTable->nTabRef)>0) ) return;
|
||||||
deleteTable(db, pTable);
|
deleteTable(db, pTable);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -925,7 +925,7 @@ void sqlite3StartTable(
|
|||||||
pTable->zName = zName;
|
pTable->zName = zName;
|
||||||
pTable->iPKey = -1;
|
pTable->iPKey = -1;
|
||||||
pTable->pSchema = db->aDb[iDb].pSchema;
|
pTable->pSchema = db->aDb[iDb].pSchema;
|
||||||
pTable->nRef = 1;
|
pTable->nTabRef = 1;
|
||||||
pTable->nRowLogEst = 200; assert( 200==sqlite3LogEst(1048576) );
|
pTable->nRowLogEst = 200; assert( 200==sqlite3LogEst(1048576) );
|
||||||
assert( pParse->pNewTable==0 );
|
assert( pParse->pNewTable==0 );
|
||||||
pParse->pNewTable = pTable;
|
pParse->pNewTable = pTable;
|
||||||
|
@@ -36,7 +36,7 @@ Table *sqlite3SrcListLookup(Parse *pParse, SrcList *pSrc){
|
|||||||
sqlite3DeleteTable(pParse->db, pItem->pTab);
|
sqlite3DeleteTable(pParse->db, pItem->pTab);
|
||||||
pItem->pTab = pTab;
|
pItem->pTab = pTab;
|
||||||
if( pTab ){
|
if( pTab ){
|
||||||
pTab->nRef++;
|
pTab->nTabRef++;
|
||||||
}
|
}
|
||||||
if( sqlite3IndexedByLookup(pParse, pItem) ){
|
if( sqlite3IndexedByLookup(pParse, pItem) ){
|
||||||
pTab = 0;
|
pTab = 0;
|
||||||
|
@@ -1365,7 +1365,7 @@ SrcList *sqlite3SrcListDup(sqlite3 *db, SrcList *p, int flags){
|
|||||||
}
|
}
|
||||||
pTab = pNewItem->pTab = pOldItem->pTab;
|
pTab = pNewItem->pTab = pOldItem->pTab;
|
||||||
if( pTab ){
|
if( pTab ){
|
||||||
pTab->nRef++;
|
pTab->nTabRef++;
|
||||||
}
|
}
|
||||||
pNewItem->pSelect = sqlite3SelectDup(db, pOldItem->pSelect, flags);
|
pNewItem->pSelect = sqlite3SelectDup(db, pOldItem->pSelect, flags);
|
||||||
pNewItem->pOn = sqlite3ExprDup(db, pOldItem->pOn, flags);
|
pNewItem->pOn = sqlite3ExprDup(db, pOldItem->pOn, flags);
|
||||||
|
@@ -1007,7 +1007,7 @@ void sqlite3FkCheck(
|
|||||||
struct SrcList_item *pItem = pSrc->a;
|
struct SrcList_item *pItem = pSrc->a;
|
||||||
pItem->pTab = pFKey->pFrom;
|
pItem->pTab = pFKey->pFrom;
|
||||||
pItem->zName = pFKey->pFrom->zName;
|
pItem->zName = pFKey->pFrom->zName;
|
||||||
pItem->pTab->nRef++;
|
pItem->pTab->nTabRef++;
|
||||||
pItem->iCursor = pParse->nTab++;
|
pItem->iCursor = pParse->nTab++;
|
||||||
|
|
||||||
if( regNew!=0 ){
|
if( regNew!=0 ){
|
||||||
|
20
src/select.c
20
src/select.c
@@ -1806,7 +1806,7 @@ Table *sqlite3ResultSetOfSelect(Parse *pParse, Select *pSelect){
|
|||||||
/* The sqlite3ResultSetOfSelect() is only used n contexts where lookaside
|
/* The sqlite3ResultSetOfSelect() is only used n contexts where lookaside
|
||||||
** is disabled */
|
** is disabled */
|
||||||
assert( db->lookaside.bDisable );
|
assert( db->lookaside.bDisable );
|
||||||
pTab->nRef = 1;
|
pTab->nTabRef = 1;
|
||||||
pTab->zName = 0;
|
pTab->zName = 0;
|
||||||
pTab->nRowLogEst = 200; assert( 200==sqlite3LogEst(1048576) );
|
pTab->nRowLogEst = 200; assert( 200==sqlite3LogEst(1048576) );
|
||||||
sqlite3ColumnsFromExprList(pParse, pSelect->pEList, &pTab->nCol, &pTab->aCol);
|
sqlite3ColumnsFromExprList(pParse, pSelect->pEList, &pTab->nCol, &pTab->aCol);
|
||||||
@@ -3619,12 +3619,12 @@ static int flattenSubquery(
|
|||||||
*/
|
*/
|
||||||
if( ALWAYS(pSubitem->pTab!=0) ){
|
if( ALWAYS(pSubitem->pTab!=0) ){
|
||||||
Table *pTabToDel = pSubitem->pTab;
|
Table *pTabToDel = pSubitem->pTab;
|
||||||
if( pTabToDel->nRef==1 ){
|
if( pTabToDel->nTabRef==1 ){
|
||||||
Parse *pToplevel = sqlite3ParseToplevel(pParse);
|
Parse *pToplevel = sqlite3ParseToplevel(pParse);
|
||||||
pTabToDel->pNextZombie = pToplevel->pZombieTab;
|
pTabToDel->pNextZombie = pToplevel->pZombieTab;
|
||||||
pToplevel->pZombieTab = pTabToDel;
|
pToplevel->pZombieTab = pTabToDel;
|
||||||
}else{
|
}else{
|
||||||
pTabToDel->nRef--;
|
pTabToDel->nTabRef--;
|
||||||
}
|
}
|
||||||
pSubitem->pTab = 0;
|
pSubitem->pTab = 0;
|
||||||
}
|
}
|
||||||
@@ -4143,7 +4143,7 @@ static int withExpand(
|
|||||||
assert( pFrom->pTab==0 );
|
assert( pFrom->pTab==0 );
|
||||||
pFrom->pTab = pTab = sqlite3DbMallocZero(db, sizeof(Table));
|
pFrom->pTab = pTab = sqlite3DbMallocZero(db, sizeof(Table));
|
||||||
if( pTab==0 ) return WRC_Abort;
|
if( pTab==0 ) return WRC_Abort;
|
||||||
pTab->nRef = 1;
|
pTab->nTabRef = 1;
|
||||||
pTab->zName = sqlite3DbStrDup(db, pCte->zName);
|
pTab->zName = sqlite3DbStrDup(db, pCte->zName);
|
||||||
pTab->iPKey = -1;
|
pTab->iPKey = -1;
|
||||||
pTab->nRowLogEst = 200; assert( 200==sqlite3LogEst(1048576) );
|
pTab->nRowLogEst = 200; assert( 200==sqlite3LogEst(1048576) );
|
||||||
@@ -4166,20 +4166,20 @@ static int withExpand(
|
|||||||
){
|
){
|
||||||
pItem->pTab = pTab;
|
pItem->pTab = pTab;
|
||||||
pItem->fg.isRecursive = 1;
|
pItem->fg.isRecursive = 1;
|
||||||
pTab->nRef++;
|
pTab->nTabRef++;
|
||||||
pSel->selFlags |= SF_Recursive;
|
pSel->selFlags |= SF_Recursive;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Only one recursive reference is permitted. */
|
/* Only one recursive reference is permitted. */
|
||||||
if( pTab->nRef>2 ){
|
if( pTab->nTabRef>2 ){
|
||||||
sqlite3ErrorMsg(
|
sqlite3ErrorMsg(
|
||||||
pParse, "multiple references to recursive table: %s", pCte->zName
|
pParse, "multiple references to recursive table: %s", pCte->zName
|
||||||
);
|
);
|
||||||
return SQLITE_ERROR;
|
return SQLITE_ERROR;
|
||||||
}
|
}
|
||||||
assert( pTab->nRef==1 || ((pSel->selFlags&SF_Recursive) && pTab->nRef==2 ));
|
assert( pTab->nTabRef==1 || ((pSel->selFlags&SF_Recursive) && pTab->nTabRef==2 ));
|
||||||
|
|
||||||
pCte->zCteErr = "circular reference: %s";
|
pCte->zCteErr = "circular reference: %s";
|
||||||
pSavedWith = pParse->pWith;
|
pSavedWith = pParse->pWith;
|
||||||
@@ -4312,7 +4312,7 @@ static int selectExpander(Walker *pWalker, Select *p){
|
|||||||
if( sqlite3WalkSelect(pWalker, pSel) ) return WRC_Abort;
|
if( sqlite3WalkSelect(pWalker, pSel) ) return WRC_Abort;
|
||||||
pFrom->pTab = pTab = sqlite3DbMallocZero(db, sizeof(Table));
|
pFrom->pTab = pTab = sqlite3DbMallocZero(db, sizeof(Table));
|
||||||
if( pTab==0 ) return WRC_Abort;
|
if( pTab==0 ) return WRC_Abort;
|
||||||
pTab->nRef = 1;
|
pTab->nTabRef = 1;
|
||||||
pTab->zName = sqlite3MPrintf(db, "sqlite_sq_%p", (void*)pTab);
|
pTab->zName = sqlite3MPrintf(db, "sqlite_sq_%p", (void*)pTab);
|
||||||
while( pSel->pPrior ){ pSel = pSel->pPrior; }
|
while( pSel->pPrior ){ pSel = pSel->pPrior; }
|
||||||
sqlite3ColumnsFromExprList(pParse, pSel->pEList,&pTab->nCol,&pTab->aCol);
|
sqlite3ColumnsFromExprList(pParse, pSel->pEList,&pTab->nCol,&pTab->aCol);
|
||||||
@@ -4325,13 +4325,13 @@ static int selectExpander(Walker *pWalker, Select *p){
|
|||||||
assert( pFrom->pTab==0 );
|
assert( pFrom->pTab==0 );
|
||||||
pFrom->pTab = pTab = sqlite3LocateTableItem(pParse, 0, pFrom);
|
pFrom->pTab = pTab = sqlite3LocateTableItem(pParse, 0, pFrom);
|
||||||
if( pTab==0 ) return WRC_Abort;
|
if( pTab==0 ) return WRC_Abort;
|
||||||
if( pTab->nRef==0xffff ){
|
if( pTab->nTabRef>=0xffff ){
|
||||||
sqlite3ErrorMsg(pParse, "too many references to \"%s\": max 65535",
|
sqlite3ErrorMsg(pParse, "too many references to \"%s\": max 65535",
|
||||||
pTab->zName);
|
pTab->zName);
|
||||||
pFrom->pTab = 0;
|
pFrom->pTab = 0;
|
||||||
return WRC_Abort;
|
return WRC_Abort;
|
||||||
}
|
}
|
||||||
pTab->nRef++;
|
pTab->nTabRef++;
|
||||||
if( !IsVirtual(pTab) && cannotBeFunction(pParse, pFrom) ){
|
if( !IsVirtual(pTab) && cannotBeFunction(pParse, pFrom) ){
|
||||||
return WRC_Abort;
|
return WRC_Abort;
|
||||||
}
|
}
|
||||||
|
@@ -1801,7 +1801,7 @@ struct Table {
|
|||||||
ExprList *pCheck; /* All CHECK constraints */
|
ExprList *pCheck; /* All CHECK constraints */
|
||||||
/* ... also used as column name list in a VIEW */
|
/* ... also used as column name list in a VIEW */
|
||||||
int tnum; /* Root BTree page for this table */
|
int tnum; /* Root BTree page for this table */
|
||||||
u32 nRef; /* Number of pointers to this Table */
|
u32 nTabRef; /* Number of pointers to this Table */
|
||||||
i16 iPKey; /* If not negative, use aCol[iPKey] as the rowid */
|
i16 iPKey; /* If not negative, use aCol[iPKey] as the rowid */
|
||||||
i16 nCol; /* Number of columns in this table */
|
i16 nCol; /* Number of columns in this table */
|
||||||
LogEst nRowLogEst; /* Estimated rows in table - from sqlite_stat1 table */
|
LogEst nRowLogEst; /* Estimated rows in table - from sqlite_stat1 table */
|
||||||
|
@@ -1133,7 +1133,7 @@ int sqlite3VtabEponymousTableInit(Parse *pParse, Module *pMod){
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
pMod->pEpoTab = pTab;
|
pMod->pEpoTab = pTab;
|
||||||
pTab->nRef = 1;
|
pTab->nTabRef = 1;
|
||||||
pTab->pSchema = db->aDb[0].pSchema;
|
pTab->pSchema = db->aDb[0].pSchema;
|
||||||
pTab->tabFlags |= TF_Virtual;
|
pTab->tabFlags |= TF_Virtual;
|
||||||
pTab->nModuleArg = 0;
|
pTab->nModuleArg = 0;
|
||||||
|
Reference in New Issue
Block a user