sqlite3 关于pagesize的疑惑
小弟测试时用的是sqlite3.5.4 ,并且加上了wxsqlite的加密模块,有个问题很不解
创建表的时候设定pagesize为2048,然后用sqlite3_key加密
在sqlite3_open的时候,在sqlite3BtreeOpen函数里,要读取前100个字节为zDbHeader
unsigned char zDbHeader[100];sqlite3PagerReadFileheader(pBt->pPager,sizeof(zDbHeader),zDbHeader);
pBt->pageSize = get2byte(&zDbHeader[16]);nReserve = zDbHeader[20];pBt->maxEmbedFrac = zDbHeader[21];pBt->minEmbedFrac = zDbHeader[22];pBt->minLeafFrac = zDbHeader[23];
if( pBt->pageSize<512 || pBt->pageSize>SQLITE_MAX_PAGE_SIZE || ((pBt->pageSize-1)&pBt->pageSize)!=0 ){pBt->pageSize = 0;sqlite3PagerSetPagesize(pBt->pPager, &pBt->pageSize);pBt->maxEmbedFrac = 64; /* 25% */pBt->minEmbedFrac = 32; /* 12.5% */pBt->minLeafFrac = 32; /* 12.5% */}sqlite3_exec( db, "select * from MyTable_1", LoadMyInfo, NULL, &errmsg );
pageSize = get2byte(&page1[16]);assert( (pageSize & 7)==0 );pBt->pageSize = pageSize;pBt->usableSize = pageSize - page1[20];pBt->maxEmbedFrac = page1[21];pBt->minEmbedFrac = page1[22];pBt->minLeafFrac = page1[23];