diff --git a/manifest b/manifest index cde71db315..4f22c2b67d 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Replace\ssqlite3_memdb_config()\swith\ssqlite3_deserialize().\s\sRemove\sthe\n"db\smemdb"\scommand\sfrom\sthe\sTCL\sinterface,\sreplacing\sit\swith\s"db\sserialize"\nand\s"db\sdeserialize". -D 2018-01-03T19:03:31.558 +C Miscellaneous\scode\sand\scomment\scleanup. +D 2018-01-03T22:48:38.759 F Makefile.in 892bf253c48f3d2d8d4e4e89b44b71aa548a0eba11b148c338690cfb99822859 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc 3b7ee2ebaf579fe7d30bece93e61e52782c3ff836455cba3a192f7a8f6f269d6 @@ -415,7 +415,7 @@ F sqlite3.1 fc7ad8990fc8409983309bb80de8c811a7506786 F sqlite3.pc.in 48fed132e7cb71ab676105d2a4dc77127d8c1f3a F src/alter.c cf7a8af45cb0ace672f47a1b29ab24092a9e8cd8d945a9974e3b5d925f548594 F src/analyze.c 0d0ccf7520a201d8747ea2f02c92c26e26f801bc161f714f27b9f7630dde0421 -F src/attach.c 52c34c2fb1a8852739aca3c4ae797f02660d826d1e79c067dadac97fe3335b6c +F src/attach.c af582a55cdb0435dc21da926cfcd5545eadfd99ea201b5b9e067cbeae1077077 F src/auth.c 6277d63837357549fe14e723490d6dc1a38768d71c795c5eb5c0f8a99f918f73 F src/backup.c faf17e60b43233c214aae6a8179d24503a61e83b F src/bitvec.c 17ea48eff8ba979f1f5b04cc484c7bb2be632f33 @@ -450,7 +450,7 @@ F src/mem1.c c12a42539b1ba105e3707d0e628ad70e611040d8f5e38cf942cee30c867083de F src/mem2.c f1940d9e91948dd6a908fbb9ce3835c36b5d83c3 F src/mem3.c 8768ac94694f31ffaf8b4d0ea5dc08af7010a35a F src/mem5.c 9bf955937b07f8c32541c8a9991f33ce3173d944 -F src/memdb.c 67c01e51b9e515721fbb4a27375233c67a8a8e5d66bd3fa6f4f84c85de43c05e +F src/memdb.c d58bb51e6029a7bd91b2148b98ab00c3a271c6cd2632eb756cfcd91e1252930b F src/memjournal.c 6f3d36a0a8f72f48f6c3c722f04301ac64f2515435fa42924293e46fc7994661 F src/msvc.h 4942752b6a253116baaa8de75256c51a459a5e81 F src/mutex.c b021263554c8a3995e9d53193b8194b96d1ed28e06c3b532dd7f7d29cf0c7d53 @@ -1690,7 +1690,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 8cf2ed4eff6d2e0958656e23384b05ead2128b678b0b69a591878af4190cd077 -R 752064346b8d3ad9381bcf73633be499 +P 2f6e9df9f0c5a9e5b1acb99cfa9486850cc1822d35b0989e779a7a10f3b1f1ac +R bb0359f4210b8aee0e32802f6ef52a4c U drh -Z 59a3fb5e3f8eae3c5ea078db9efbd371 +Z c49fae41835e3bd8d0d8eeb0cf1f4a88 diff --git a/manifest.uuid b/manifest.uuid index 08b82513bb..cf39388ce7 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -2f6e9df9f0c5a9e5b1acb99cfa9486850cc1822d35b0989e779a7a10f3b1f1ac \ No newline at end of file +fa6069fb3b0a4411fd6661dec7de40ece3064a2fe4b94ebfbda9e5e524e04e86 \ No newline at end of file diff --git a/src/attach.c b/src/attach.c index 151b52e7a4..f177f1a5b5 100644 --- a/src/attach.c +++ b/src/attach.c @@ -84,7 +84,13 @@ static void attachFunc( if( zFile==0 ) zFile = ""; if( zName==0 ) zName = ""; - if( db->init.reopenMemdb ){ +#ifdef SQLITE_ENABLE_MEMDB +# define REOPEN_AS_MEMDB(db) (db->init.reopenMemdb) +#else +# define REOPEN_AS_MEMDB(db) (0) +#endif + + if( REOPEN_AS_MEMDB(db) ){ /* This is not a real ATTACH. Instead, this routine is being called ** from sqlite3_deserialize() to close database db->init.iDb and ** reopen it as a MemDB */ @@ -96,9 +102,9 @@ static void attachFunc( pNew->pSchema = 0; rc = sqlite3BtreeOpen(pVfs, "x", db, &pNew->pBt, 0, SQLITE_OPEN_MAIN_DB); }else{ - /* This is a real ATTACH */ - - /* Check for the following errors: + /* This is a real ATTACH + ** + ** Check for the following errors: ** ** * Too many attached databases, ** * Transaction currently open @@ -178,7 +184,7 @@ static void attachFunc( sqlite3BtreeLeave(pNew->pBt); } pNew->safety_level = SQLITE_DEFAULT_SYNCHRONOUS+1; - if( !db->init.reopenMemdb ) pNew->zDbSName = sqlite3DbStrDup(db, zName); + if( !REOPEN_AS_MEMDB(db) ) pNew->zDbSName = sqlite3DbStrDup(db, zName); if( rc==SQLITE_OK && pNew->zDbSName==0 ){ rc = SQLITE_NOMEM_BKPT; } @@ -235,7 +241,7 @@ static void attachFunc( } } #endif - if( rc ){ + if( rc && !REOPEN_AS_MEMDB(db) ){ int iDb = db->nDb - 1; assert( iDb>=2 ); if( db->aDb[iDb].pBt ){ diff --git a/src/memdb.c b/src/memdb.c index 5a1f12dcbb..5aa66f1fde 100644 --- a/src/memdb.c +++ b/src/memdb.c @@ -10,8 +10,11 @@ ** ****************************************************************************** ** -** This is an in-memory VFS implementation. The application supplies -** a chunk of memory to hold the database file. +** This file implements in-memory VFS. A database is held as a contiguous +** block of memory. +** +** This file also implements interface sqlite3_serialize() and +** sqlite3_deserialize(). */ #ifdef SQLITE_ENABLE_MEMDB #include "sqliteInt.h" @@ -52,10 +55,6 @@ static int memdbCheckReservedLock(sqlite3_file*, int *pResOut); static int memdbFileControl(sqlite3_file*, int op, void *pArg); static int memdbSectorSize(sqlite3_file*); static int memdbDeviceCharacteristics(sqlite3_file*); -static int memdbShmMap(sqlite3_file*, int iPg, int pgsz, int, void volatile**); -static int memdbShmLock(sqlite3_file*, int offset, int n, int flags); -static void memdbShmBarrier(sqlite3_file*); -static int memdbShmUnmap(sqlite3_file*, int deleteFlag); static int memdbFetch(sqlite3_file*, sqlite3_int64 iOfst, int iAmt, void **pp); static int memdbUnfetch(sqlite3_file*, sqlite3_int64 iOfst, void *p); @@ -112,10 +111,10 @@ static const sqlite3_io_methods memdb_io_methods = { memdbFileControl, /* xFileControl */ memdbSectorSize, /* xSectorSize */ memdbDeviceCharacteristics, /* xDeviceCharacteristics */ - memdbShmMap, /* xShmMap */ - memdbShmLock, /* xShmLock */ - memdbShmBarrier, /* xShmBarrier */ - memdbShmUnmap, /* xShmUnmap */ + 0, /* xShmMap */ + 0, /* xShmLock */ + 0, /* xShmBarrier */ + 0, /* xShmUnmap */ memdbFetch, /* xFetch */ memdbUnfetch /* xUnfetch */ }; @@ -264,32 +263,6 @@ static int memdbDeviceCharacteristics(sqlite3_file *pFile){ SQLITE_IOCAP_SEQUENTIAL; } -/* Create a shared memory file mapping */ -static int memdbShmMap( - sqlite3_file *pFile, - int iPg, - int pgsz, - int bExtend, - void volatile **pp -){ - return SQLITE_IOERR_SHMMAP; -} - -/* Perform locking on a shared-memory segment */ -static int memdbShmLock(sqlite3_file *pFile, int offset, int n, int flags){ - return SQLITE_IOERR_SHMLOCK; -} - -/* Memory barrier operation on shared memory */ -static void memdbShmBarrier(sqlite3_file *pFile){ - return; -} - -/* Unmap a shared memory segment */ -static int memdbShmUnmap(sqlite3_file *pFile, int deleteFlag){ - return SQLITE_OK; -} - /* Fetch a page of a memory-mapped file */ static int memdbFetch( sqlite3_file *pFile,