SQLite

Check-in [d9a5f44f4a]
Login

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

Overview
Comment:Fix handling of errors returned by the SQLITE_FCNTL_OMIT_SYNCED file-control.
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | zipvfs-multifile-commit
Files: files | file ages | folders
SHA1: d9a5f44f4a27336d41e60b6c3791bd018fbbff6f
User & Date: dan 2013-12-10 16:27:59.750
Context
2013-12-10
16:35
Merge changes from the trunk. (check-in: 3ee736a39d user: dan tags: zipvfs-multifile-commit)
16:27
Fix handling of errors returned by the SQLITE_FCNTL_OMIT_SYNCED file-control. (check-in: d9a5f44f4a user: dan tags: zipvfs-multifile-commit)
2013-12-09
20:42
Modify the way some internal file-controls are invoked. In order to support multi-file transactions in the zipvfs extension. (check-in: 32fb1784af user: dan tags: zipvfs-multifile-commit)
Changes
Unified Diff Ignore Whitespace Patch
Changes to src/pager.c.
6016
6017
6018
6019
6020
6021
6022
6023
6024
6025
6026
6027
6028
6029
6030
  int rc = SQLITE_OK;

  if( isOpen(pPager->fd) ){
    void *pArg = (void*)zMaster;
    rc = sqlite3OsFileControl(pPager->fd, SQLITE_FCNTL_SYNC_OMITTED, pArg);
    if( rc==SQLITE_NOTFOUND ) rc = SQLITE_OK;
  }
  if( !pPager->noSync ){
    assert( !MEMDB );
    rc = sqlite3OsSync(pPager->fd, pPager->syncFlags);
  }
  return rc;
}

/*







|







6016
6017
6018
6019
6020
6021
6022
6023
6024
6025
6026
6027
6028
6029
6030
  int rc = SQLITE_OK;

  if( isOpen(pPager->fd) ){
    void *pArg = (void*)zMaster;
    rc = sqlite3OsFileControl(pPager->fd, SQLITE_FCNTL_SYNC_OMITTED, pArg);
    if( rc==SQLITE_NOTFOUND ) rc = SQLITE_OK;
  }
  if( rc==SQLITE_OK && !pPager->noSync ){
    assert( !MEMDB );
    rc = sqlite3OsSync(pPager->fd, pPager->syncFlags);
  }
  return rc;
}

/*
6346
6347
6348
6349
6350
6351
6352
6353


6354
6355
6356
6357
6358
6359
6360
    }
  }else{
    rc = pager_playback(pPager, 0);
  }

  assert( pPager->eState==PAGER_READER || rc!=SQLITE_OK );
  assert( rc==SQLITE_OK || rc==SQLITE_FULL || rc==SQLITE_CORRUPT
          || rc==SQLITE_NOMEM || (rc&0xFF)==SQLITE_IOERR );



  /* If an error occurs during a ROLLBACK, we can no longer trust the pager
  ** cache. So call pager_error() on the way out to make any error persistent.
  */
  return pager_error(pPager, rc);
}








|
>
>







6346
6347
6348
6349
6350
6351
6352
6353
6354
6355
6356
6357
6358
6359
6360
6361
6362
    }
  }else{
    rc = pager_playback(pPager, 0);
  }

  assert( pPager->eState==PAGER_READER || rc!=SQLITE_OK );
  assert( rc==SQLITE_OK || rc==SQLITE_FULL || rc==SQLITE_CORRUPT
          || rc==SQLITE_NOMEM || (rc&0xFF)==SQLITE_IOERR 
          || rc==SQLITE_CANTOPEN
  );

  /* If an error occurs during a ROLLBACK, we can no longer trust the pager
  ** cache. So call pager_error() on the way out to make any error persistent.
  */
  return pager_error(pPager, rc);
}