Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | The "apndvfs" VFS shim now appears to be working for both reads and writes. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | appendvfs |
Files: | files | file ages | folders |
SHA3-256: |
7f7b72d83633922e2b5dbf0d3455d0fe |
User & Date: | drh 2017-12-14 16:57:11.644 |
Context
2017-12-14
| ||
19:24 | Fixes to the appendvfs.c extension. Add the "sqltclsh" application that uses appendvfs.c to find its scripts. (check-in: ee248b529c user: drh tags: appendvfs) | |
16:57 | The "apndvfs" VFS shim now appears to be working for both reads and writes. (check-in: 7f7b72d836 user: drh tags: appendvfs) | |
16:28 | Add the ability to write to an appended database. This check-in compiles but is otherwise untested. (check-in: e343c63cbd user: drh tags: appendvfs) | |
Changes
Changes to ext/misc/appendvfs.c.
︙ | ︙ | |||
208 209 210 211 212 213 214 | static int apndWriteMark(ApndFile *p, sqlite3_file *pFile){ int i; unsigned char a[APND_MARK_SIZE]; memcpy(a, APND_MARK_PREFIX, APND_MARK_PREFIX_SZ); for(i=0; i<8; i++){ a[APND_MARK_PREFIX_SZ+i] = (p->iPgOne >> (56 - i*8)) & 0xff; } | | | 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 | static int apndWriteMark(ApndFile *p, sqlite3_file *pFile){ int i; unsigned char a[APND_MARK_SIZE]; memcpy(a, APND_MARK_PREFIX, APND_MARK_PREFIX_SZ); for(i=0; i<8; i++){ a[APND_MARK_PREFIX_SZ+i] = (p->iPgOne >> (56 - i*8)) & 0xff; } return pFile->pMethods->xWrite(pFile, a, APND_MARK_SIZE, p->iMark); } /* ** Write data to an apnd-file. */ static int apndWrite( sqlite3_file *pFile, |
︙ | ︙ | |||
327 328 329 330 331 332 333 | } /* ** Return the device characteristic flags supported by an apnd-file. */ static int apndDeviceCharacteristics(sqlite3_file *pFile){ pFile = ORIGFILE(pFile); | < | | 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 | } /* ** Return the device characteristic flags supported by an apnd-file. */ static int apndDeviceCharacteristics(sqlite3_file *pFile){ pFile = ORIGFILE(pFile); return pFile->pMethods->xDeviceCharacteristics(pFile); } /* Create a shared memory file mapping */ static int apndShmMap( sqlite3_file *pFile, int iPg, int pgsz, |
︙ | ︙ | |||
546 547 548 549 550 551 552 | ){ int rc = SQLITE_OK; sqlite3_vfs *pOrig; SQLITE_EXTENSION_INIT2(pApi); pOrig = sqlite3_vfs_find(0); apnd_vfs.iVersion = pOrig->iVersion; apnd_vfs.pAppData = pOrig; | | | 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 | ){ int rc = SQLITE_OK; sqlite3_vfs *pOrig; SQLITE_EXTENSION_INIT2(pApi); pOrig = sqlite3_vfs_find(0); apnd_vfs.iVersion = pOrig->iVersion; apnd_vfs.pAppData = pOrig; apnd_vfs.szOsFile = pOrig->szOsFile + sizeof(ApndFile); rc = sqlite3_vfs_register(&apnd_vfs, 0); #ifdef APPENDVFS_TEST if( rc==SQLITE_OK ){ rc = sqlite3_auto_extension((void(*)(void))apndvfsRegister); } #endif if( rc==SQLITE_OK ) rc = SQLITE_OK_LOAD_PERMANENTLY; return rc; } |