Skip to content

Commit e1851f1

Browse files
committed
Refactor
1 parent 5e3114e commit e1851f1

File tree

1 file changed

+38
-47
lines changed

1 file changed

+38
-47
lines changed

ceshim.c

Lines changed: 38 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -805,7 +805,7 @@ static int ceshimPageMapSet(
805805

806806
*outLwrPgno = pMapEntry->lwrPgno;
807807
*outCmpOfst = pMapEntry->cmprOfst;
808-
ceshim_printf(pInfo, "Updated placeholder entry (uppOfst=%lld, lwrPgno=%lu,cmpOfst=%lu,cmpSz=%lu) \n",
808+
ceshim_printf(pInfo, "Updated entry (uppOfst=%lld, lwrPgno=%lu,cmpOfst=%lu,cmpSz=%lu)\n",
809809
(long long)uppOfst, (unsigned long)pMapEntry->lwrPgno, (unsigned long)pMapEntry->cmprOfst, (unsigned long)pMapEntry->cmprSz);
810810
return SQLITE_OK;
811811
}else if( cmpSz<oldCmpSz ){
@@ -904,49 +904,41 @@ static int ceshimRead(
904904
ceshim_info *pInfo = p->pInfo;
905905
u32 uppPgSz = pInfo->ceshimHeader.uppPgSz;
906906
int rc;
907-
ceshim_printf(pInfo, "%s.xRead(%s,ofst=%lld,amt=%d)", pInfo->zVfsName, p->zFName, iOfst, iAmt);
908907

909908
if( p->pPager && pInfo->pPage1 ){
910909
DbPage *pPage;
911910
Pgno uppPgno, mappedPgno;
912911
CeshimCmpOfst cmprPgOfst;
913912
CeshimCmpSize uCmpPgSz;
914-
if( (rc = ceshimPageMapGet(p, iOfst, &uppPgno, &mappedPgno, &cmprPgOfst, &uCmpPgSz, NULL)) == SQLITE_ERROR ){
915-
if( iOfst<uppPgSz ) {
916-
mappedPgno = CESHIM_FIRST_MAPPED_PAGE;
917-
rc = SQLITE_OK;
918-
}
919-
}
920-
if( mappedPgno==0 ){
921-
memset(zBuf, 0, iAmt);
922-
return SQLITE_OK;
923-
}
924-
if( rc==SQLITE_OK && (rc = sqlite3PagerGet(p->pPager, mappedPgno, &pPage, 0)) == SQLITE_OK ){
925-
CeshimMemPage *pMemPage = memPageFromDbPage(pPage, mappedPgno);
926-
ceshim_printf(pInfo, "\n%s.xRead(%s,pgno=%u->%u,ofst=%lld,amt=%d,cmprPgOfst=%u,cmprSz=%u)",
927-
pInfo->zVfsName, p->zFName, uppPgno, mappedPgno, iOfst, iAmt, cmprPgOfst, uCmpPgSz);
928-
if( uCmpPgSz > 0 ){ // <- should be able to remove this check now
913+
if( (rc = ceshimPageMapGet(p, iOfst, &uppPgno, &mappedPgno, &cmprPgOfst, &uCmpPgSz, NULL)) == SQLITE_OK ){
914+
if( rc==SQLITE_OK && (rc = sqlite3PagerGet(p->pPager, mappedPgno, &pPage, 0)) == SQLITE_OK ){
915+
CeshimMemPage *pMemPage = memPageFromDbPage(pPage, mappedPgno);
916+
ceshim_printf(pInfo, "%s.xRead(%s,pgno=%u->%u,ofst=%08lld->%u,amt=%d->%u)",
917+
pInfo->zVfsName, p->zFName, uppPgno, mappedPgno, iOfst, cmprPgOfst, iAmt, uCmpPgSz);
918+
assert( uCmpPgSz > 0 );
929919
int iDstAmt = uppPgSz;
930920
void *pBuf = sqlite3_malloc(iDstAmt);
931921
pInfo->xUncompress(
932922
NULL,
933923
pBuf,
934924
&iDstAmt,
935925
(char *)pMemPage->aData
936-
+pMemPage->dbHdrOffset
937-
+pMemPage->pgHdrOffset
938-
+cmprPgOfst,
926+
+pMemPage->dbHdrOffset
927+
+pMemPage->pgHdrOffset
928+
+cmprPgOfst,
939929
uCmpPgSz
940930
);
941931
u16 uBufOfst = iOfst % uppPgSz;
942932
memcpy(zBuf, pBuf+uBufOfst, iAmt);
943933
sqlite3_free(pBuf);
944-
}else{
945-
memset(zBuf, 0, iAmt);
934+
sqlite3PagerUnref(pPage);
946935
}
947-
sqlite3PagerUnref(pPage);
936+
}else{
937+
memset(zBuf, 0, iAmt);
938+
rc = SQLITE_OK;
948939
}
949940
}else{
941+
ceshim_printf(pInfo, "%s.xRead(%s,ofst=%08lld,amt=%d)", pInfo->zVfsName, p->zFName, iOfst, iAmt);
950942
rc = p->pReal->pMethods->xRead(p->pReal, zBuf, iAmt, iOfst);
951943
}
952944
ceshim_print_errcode(pInfo, " -> %s\n", rc);
@@ -978,39 +970,38 @@ static int ceshimWrite(
978970
CeshimCmpOfst cmprPgOfst;
979971
pInfo->xCompress(NULL, pBuf, &pnDest, (void *)zBuf, iAmt);
980972
ceshimPageMapSet(p, iOfst, pnDest, &uppPgno, &mappedPgno, &cmprPgOfst);
981-
ceshim_printf(pInfo, "%s.xWrite(%s, pgno=%u->%u, offset=%06lld, amt=%06d)", pInfo->zVfsName, p->zFName, uppPgno, mappedPgno, iOfst, iAmt);
982973
if( rc==SQLITE_OK && (rc = sqlite3PagerGet(p->pPager, mappedPgno, &pPage, 0))==SQLITE_OK ){
983974
// write
984975
CeshimMemPage *pMemPage = memPageFromDbPage(pPage, mappedPgno);
985-
if( (rc = ceshimPagerWrite(p, pPage))==SQLITE_OK ){
986-
ceshim_printf(
987-
pInfo,
988-
"\n%s.xWrite(%s, pgno=%u->%u, offset=%06lld, amt=%06d, compressed=%06d)",
989-
pInfo->zVfsName,
990-
p->zFName, uppPgno, mappedPgno,
991-
pMemPage->dbHdrOffset+pMemPage->pgHdrOffset+cmprPgOfst,
992-
iAmt, pnDest
993-
);
994-
memcpy(
995-
pMemPage->aData
996-
+pMemPage->dbHdrOffset
997-
+pMemPage->pgHdrOffset
998-
+cmprPgOfst,
999-
pBuf,
1000-
pnDest
1001-
);
1002-
1003-
// Keep track of sizes of upper and lower pagers
1004-
if( pInfo->ceshimHeader.uppPageFile<uppPgno ) pInfo->ceshimHeader.uppPageFile = uppPgno;
1005-
if( pInfo->lwrPageFile<mappedPgno ) pInfo->lwrPageFile = mappedPgno;
1006-
}
976+
if( (rc = ceshimPagerWrite(p, pPage))==SQLITE_OK ){
977+
ceshim_printf(
978+
pInfo,
979+
"%s.xWrite(%s, pgno=%u->%u, offset=%08lld->%06lu, amt=%06d->%06d)",
980+
pInfo->zVfsName, p->zFName,
981+
uppPgno, mappedPgno,
982+
iOfst, (long unsigned)(pMemPage->dbHdrOffset+pMemPage->pgHdrOffset+cmprPgOfst),
983+
iAmt, pnDest
984+
);
985+
memcpy(
986+
pMemPage->aData
987+
+pMemPage->dbHdrOffset
988+
+pMemPage->pgHdrOffset
989+
+cmprPgOfst,
990+
pBuf,
991+
pnDest
992+
);
993+
994+
// Keep track of sizes of upper and lower pagers
995+
if( pInfo->ceshimHeader.uppPageFile<uppPgno ) pInfo->ceshimHeader.uppPageFile = uppPgno;
996+
if( pInfo->lwrPageFile<mappedPgno ) pInfo->lwrPageFile = mappedPgno;
997+
}
1007998
sqlite3PagerUnref(pPage);
1008999
}
10091000
sqlite3_free(pBuf);
10101001
}
10111002
}
10121003
}else{
1013-
ceshim_printf(pInfo, "%s.xWrite(%s, offset=%06lld, amt=%06d)", pInfo->zVfsName, p->zFName, iOfst, iAmt);
1004+
ceshim_printf(pInfo, "%s.xWrite(%s, offset=%08lld, amt=%06d)", pInfo->zVfsName, p->zFName, iOfst, iAmt);
10141005
rc = p->pReal->pMethods->xWrite(p->pReal, zBuf, iAmt, iOfst);
10151006
}
10161007
ceshim_print_errcode(pInfo, " -> %s\n", rc);

0 commit comments

Comments
 (0)