fix(tdb): make txn write when insert subdb into main db
This commit is contained in:
parent
afc48c3d55
commit
1d3648fc9b
|
@ -103,10 +103,9 @@ int tdbBtreeOpen(int keyLen, int valLen, SPager *pPager, char const *tbname, SPg
|
||||||
// if pgno == 0 fetch new btree root leaf page
|
// if pgno == 0 fetch new btree root leaf page
|
||||||
if (pgno == 0) {
|
if (pgno == 0) {
|
||||||
// fetch page & insert into main db
|
// fetch page & insert into main db
|
||||||
// allocate a new child page
|
|
||||||
SPage *pPage;
|
SPage *pPage;
|
||||||
TXN txn;
|
TXN txn;
|
||||||
tdbTxnOpen(&txn, 0, tdbDefaultMalloc, tdbDefaultFree, NULL, 0);
|
tdbTxnOpen(&txn, 0, tdbDefaultMalloc, tdbDefaultFree, NULL, TDB_TXN_WRITE | TDB_TXN_READ_UNCOMMITTED);
|
||||||
|
|
||||||
pPager->inTran = 1;
|
pPager->inTran = 1;
|
||||||
|
|
||||||
|
@ -118,8 +117,6 @@ int tdbBtreeOpen(int keyLen, int valLen, SPager *pPager, char const *tbname, SPg
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Need to zero the page
|
|
||||||
|
|
||||||
ret = tdbPagerWrite(pPager, pPage);
|
ret = tdbPagerWrite(pPager, pPage);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
return -1;
|
return -1;
|
||||||
|
|
|
@ -473,12 +473,6 @@ int tdbPagerRestore(SPager *pPager, SBTree *pBt) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
TXN txn;
|
|
||||||
tdbTxnOpen(&txn, 0, tdbDefaultMalloc, tdbDefaultFree, NULL, TDB_TXN_WRITE | TDB_TXN_READ_UNCOMMITTED);
|
|
||||||
SBtreeInitPageArg iArg;
|
|
||||||
iArg.pBt = pBt;
|
|
||||||
iArg.flags = 0;
|
|
||||||
|
|
||||||
for (int pgIndex = 0; pgIndex < journalSize; ++pgIndex) {
|
for (int pgIndex = 0; pgIndex < journalSize; ++pgIndex) {
|
||||||
// read pgno & the page from journal
|
// read pgno & the page from journal
|
||||||
SPgno pgno;
|
SPgno pgno;
|
||||||
|
@ -494,20 +488,6 @@ int tdbPagerRestore(SPager *pPager, SBTree *pBt) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
ret = tdbPagerFetchPage(pPager, &pgno, &pPage, tdbBtreeInitPage, &iArg, &txn);
|
|
||||||
if (ret < 0) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// write the page to db
|
|
||||||
ret = tdbPagerWritePageToDB(pPager, pPage);
|
|
||||||
if (ret < 0) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
tdbPCacheRelease(pPager->pCache, pPage, &txn);
|
|
||||||
*/
|
|
||||||
i64 offset = pPager->pageSize * (pgno - 1);
|
i64 offset = pPager->pageSize * (pgno - 1);
|
||||||
if (tdbOsLSeek(pPager->fd, offset, SEEK_SET) < 0) {
|
if (tdbOsLSeek(pPager->fd, offset, SEEK_SET) < 0) {
|
||||||
ASSERT(0);
|
ASSERT(0);
|
||||||
|
@ -523,8 +503,6 @@ int tdbPagerRestore(SPager *pPager, SBTree *pBt) {
|
||||||
|
|
||||||
tdbOsFSync(pPager->fd);
|
tdbOsFSync(pPager->fd);
|
||||||
|
|
||||||
tdbTxnClose(&txn);
|
|
||||||
|
|
||||||
tdbOsFree(pageBuf);
|
tdbOsFree(pageBuf);
|
||||||
|
|
||||||
tdbOsClose(jfd);
|
tdbOsClose(jfd);
|
||||||
|
|
Loading…
Reference in New Issue