SQLite

Check-in [d4dff10a3d]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Performance optimization in sqlite3PagerWrite().
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: d4dff10a3d4edf8e1cc77c0a4f185d33f2c2e953
User & Date: drh 2016-12-12 11:05:15.832
Context
2016-12-12
16:08
Faster operation for large in-memory databases. (check-in: 9675518b33 user: drh tags: trunk)
12:58
Merge recent enhancements from trunk. (check-in: dc006e08b8 user: drh tags: est_count_pragma)
11:05
Performance optimization in sqlite3PagerWrite(). (check-in: d4dff10a3d user: drh tags: trunk)
01:53
Updates to the tokenizer for EBCDIC. No changes for standard builds. (check-in: 4fc6580ffa user: drh tags: trunk)
Changes
Unified Diff Show Whitespace Changes Patch
Changes to src/pager.c.
5957
5958
5959
5960
5961
5962
5963
5964
5965
5966
5967
5968


5969
5970
5971
5972
5973
5974
5975
** as appropriate. Otherwise, SQLITE_OK.
*/
int sqlite3PagerWrite(PgHdr *pPg){
  Pager *pPager = pPg->pPager;
  assert( (pPg->flags & PGHDR_MMAP)==0 );
  assert( pPager->eState>=PAGER_WRITER_LOCKED );
  assert( assert_pager_state(pPager) );
  if( pPager->errCode ){
    return pPager->errCode;
  }else if( (pPg->flags & PGHDR_WRITEABLE)!=0 && pPager->dbSize>=pPg->pgno ){
    if( pPager->nSavepoint ) return subjournalPageIfRequired(pPg);
    return SQLITE_OK;


  }else if( pPager->sectorSize > (u32)pPager->pageSize ){
    assert( pPager->tempFile==0 );
    return pagerWriteLargeSector(pPg);
  }else{
    return pager_write(pPg);
  }
}







<
<
|


>
>







5957
5958
5959
5960
5961
5962
5963


5964
5965
5966
5967
5968
5969
5970
5971
5972
5973
5974
5975
** as appropriate. Otherwise, SQLITE_OK.
*/
int sqlite3PagerWrite(PgHdr *pPg){
  Pager *pPager = pPg->pPager;
  assert( (pPg->flags & PGHDR_MMAP)==0 );
  assert( pPager->eState>=PAGER_WRITER_LOCKED );
  assert( assert_pager_state(pPager) );


  if( (pPg->flags & PGHDR_WRITEABLE)!=0 && pPager->dbSize>=pPg->pgno ){
    if( pPager->nSavepoint ) return subjournalPageIfRequired(pPg);
    return SQLITE_OK;
  }else if( pPager->errCode ){
    return pPager->errCode;
  }else if( pPager->sectorSize > (u32)pPager->pageSize ){
    assert( pPager->tempFile==0 );
    return pagerWriteLargeSector(pPg);
  }else{
    return pager_write(pPg);
  }
}