summaryrefslogtreecommitdiff
path: root/build_win
Commit message (Collapse)AuthorAgeFilesLines
* WT-3461 Use CLOCK_MONOTONIC for pthread_cond_timedwait if possible. (#3537)Michael Cahill2017-07-281-0/+3
| | | | | | | | * WT-3461 Use CLOCK_MONOTONIC for pthread_cond_timedwait if possible. Regardless, don't adjust the realtime clock before calculating when a timed sleep should end. Otherwise, we can sleep for longer than expected by however much the clock changed. * __wt_epoch() is now identical between POSIX and Windows, pull the OS-independent time functions out into a new file.
* WT-3181 Add timestamp support. (#3373)Michael Cahill2017-06-221-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | * MongoDB needs to control the logical order of operations and read as of timestamps that are meaningful to the (distributed) system. * threads can race setting the oldest timestamp, make sure it moves forward; * track whether a commit_timestamp was active when updates were created, only set timestamps on commit for updates that didn't get one. * Update test/checkpoint to exercise timestamps, which requires a read_timestamp parameter to checkpoints. This uncovered a bug where reads in progress when the oldest timestamp is updated were not being tracked (so updates could be discarded, leading to inconsistent results). * Errors in commit_transaction now trigger rollback (as documented). * Split timestamp-specific functions into their own source file. * Create a type for raw timestamps to avoid repeating `uint8_t timestamp[TIMESTAMP_SIZE]` everywhere a timestamp is needed. Add some macro helpers to eliminate some cases of `#ifdef HAVE_TIMESTAMPS`. * Rename 's/_ts/_timestamp/g' apart from uses in LSM where we were storing a `struct timespec`, which were renamed 's/_ts/_time/g'. * If a timestamp query cannot be satisfied, return WT_NOTFOUND. * Try to update the pinned timestamp if it is behind the the oldest timestamp. The check on timestamps being stable is slightly different to the check on transactions being stable because we know transactions are committed before we check timestamps. * Track and check the minimum timestamp during reconciliation. * Timestamp methods can return WT_NOTFOUND, don't make to ENOENT.
* WT-2880 Add Zstandard compression support (#3075)Keith Bostic2016-10-211-0/+6
| | | | | | | | | | | | | | * Fix a bug found by inspection in LZ4 code: we're going to offset the destination buffer by sizeof(LZ4_PREFIX), so we need to offset the destination buffer length by the same amount. * Prettiness pass through the snappy driver so it and the zstd driver look the same, minor cleanup in zlib. * Add the compression_level configuration option to the zstd extension initialization function so it's possible to set the compression level from an application. * Fix a bug in zlib raw compression: the destination buffer size (dst_len), can be smaller than the target page size (page_max), use the smaller of the two values to set the target compression size. * The zlib raw compression function could return without calling deflateEnd on its z_stream structures, potentially leaking memory and scratch buffers. * If the default reserved bytes for zlib raw compression isn't sufficient, we fail on compression of what might be very large blocks. We don't have information on how many bytes need to be reserved in order to know the final deflate() will succeed, and the default value was experimentally derived, for all we know there are workloads where the default will fail a lot. Add a fallback before failing hard, try with 2x the default reserved space.
* WT-2873 Refactor CRC32 code (#3000)Keith Bostic2016-09-081-0/+3
| | | | | | | | | | | | * Add --enable-crc32-hardware configuration option (configured on by default), which allows CRC32 hardware support to be turned off. * Move the CRC32 implementation in software from the x86-specific code to software/checksum.c, leave the x86-specific code in x86/crc32-x86.c. * Move the pointer to the checksum function from a file static to the WT_PROCESS.cksum field, change the __wt_cksum_init() function to set that field. * WT-2882 Create CRC32 Hardware implementation for ARM8 * Change "cksum" to "checksum" everywhere (hopefully) no semantic changes.
* WT-2857 POSIX ftruncate calls should be #ifdef'd HAVE_FTRUNCATE (#2975)Keith Bostic2016-08-241-6/+0
| | | | | | | | | | | | | | | | | | * WT-2857 POSIX ftruncate calls should be #ifdef'd HAVE_FTRUNCATE * Remove fcntl from the list of functions autoconf checks for, WiredTiger requires it for OS X fsync and the file-lock function, it's not optional. * If the Windows configuration #defines don't match, it can be because there are too many there, not just there are too few. * Remove fread_unlocked from the list of functions autoconf checks for, it was added a long time ago as part of the Riak eleveldb work, and as far as I can tell, it's never used. Remove the Windows HAVE_FCNTL and HAVE_FREAD_UNLOCKED #defines. * Another try at a reasonable error message.
* WT-2658 Only include PPC-specific files in PPC builds (#2758)Keith Bostic2016-06-031-171/+0
| | | | | | | * WT-2658 Only include PPC-specific files in PPC builds * Add support for conditional file inclusion by adding a second argument on lines in dist/filelist. Add a new automake conditional, POWERPC_HOST, set for the various PPC host CPUs. Change dist/filelist to only compile the checksum/power8 files if POWERPC_HOST is set. * Merge the Windows and POSIX file lists, use POSIX_HOST and WINDOWS_HOST to mark source files needed for builds on those systems.
* WT-2599: split out the checksum code from the support directory (#2707)Keith Bostic2016-05-021-1/+1
| | | | | * WT-2599: split out the checksum code from the support directory Also fix a lint complaint about missing enum options in a case statement and remove unnecessary WT_FILE_SYSTEM/WT_FILE_HANDLE method initialization.
* WT-2552 Add public API for pluggable filesystems (#2671)Alex Gorrod2016-04-281-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * WT-2552 Add public API for pluggable filesystems Not yet compiling. The main parts of this change should be here, but it involved extensive parameter re-organization. There are also a number of layering violations between our existing file system implementations and the WT_FH, that aren't possible with the new structure. There are a number of specific todo comments in the code. One of the main issues is that the in-memory file system had a special close semantic that relied on WiredTiger handle tracking. The in-memory file-system should do it's own tracking of file handles, I've gone part way down that road by adding a queue for closed handles. Need to also add in live handles, and manage the queue as appropriate. I haven't created an example application that uses the new API yet. * WT-2552 Add public API for pluggable filesystems I always forget you have to remove the already-built html files when changing PREDEFINED, add a reminder to the complaint. * WT-2552 Add public API for pluggable filesystems You have to remove the .js files, too. * WT-2552 Add public API for pluggable filesystems Make dist/s_all run cleanly. * WT-2552 Add public API for pluggable filesystems Whitespace. * WT-2552 Add public API for pluggable filesystems Make it compile/build/lint. * WT-2552 Add public API for pluggable filesystems block_write.c: In function '__wt_block_extend': block_write.c:130:71: error: missing terminating ' character [-Werror] * WT-2552 Add public API for pluggable filesystems os_fs_inmemory.c: In function '__im_file_truncate': os_fs_inmemory.c:344:10: error: 'session' is used uninitialized in this function [-Werror=uninitialized] * WT-2552 Add public API for pluggable filesystems os_fs.c: In function '__posix_directory_sync': os_fs.c:92:10: error: 'session' is used uninitialized in this function [-Werror=uninitialized] * WT-2552 Add public API for pluggable filesystems Go back to using bool types in the file-system API, this requires we add <stdbool.h> to the "standard" wiredtiger.h includes. Consistently use wt_session to represent a WT_SESSION, we were using "wtsession" in some places. Make a pass over the Windows code, but I'm sure it doesn't compile yet. * WT-2552 Add public API for pluggable filesystems Fix up another couple of bool types. * WT-2552 Add public API for pluggable filesystems Move the file naming work out of the underlying filesystem functions, the calls to __wt_filename are now in the upper-level code,n os_fs.i; that means the filesystem code is no longer responsible for figuring out paths. This is cleaner, although the directory-sync call is a bit of a kluge, and I've commimtted us to handling NULL filesystem methods. With this set of changes, in-memory runs again. More Windows naming fixes. * WT-2552 Add public API for pluggable filesystems os_fs.c: In function '__posix_directory_sync': os_fs.c:96:3: error: label 'err' used but not defined * WT-2552 Add public API for pluggable filesystems Pull out another call to __wt_filename() from the filesystem-dependent code. * WT-2552 Add public API for pluggable filesystems Consistently check for missing file-system methods when doing file-system calls. Other minor lint & cleanup. * WT-2552 Add public API for pluggable filesystems Change the in-memory code to maintain a complete list of the files it has ever opened, and depend on that list instead of reaching up into the common layer for the WT_FH handle list. This means __wt_handle_search is only used by the common WT_FH handle code, simplify it, and add a __wt_handle_is_open function that can be called for diagnostic purposes (to check for open files that are being renamed or removed, for example). * Fix comiler warning and ignore the file system API in Java * Flesh out the example file system implementation. * Add in some plumbing for set_file_system in wiredtiger_open. * WT-2552 Add public API for pluggable filesystems Whitespace. * WT-2552 Add public API for pluggable filesystems WT_CONFIG_ITEM.val isn't a boolean, don't use boolean types in equal/not-equal comparisons. * WT-2552 Add public API for pluggable filesystems Remove unused #includes. Increment/decrement the DEMO_FILE_SYSTEM.{opened,closed}_file_count. Allocate demo structures, they're larger than the underlying structures. Swap the number/size calloc arguments, number comes first. Fix a couple of statics. * WT-2552 Add public API for pluggable filesystems Use %u instead of casting to %d. * WT-2552 Add public API for pluggable filesystems Add ex_file_system.c to the list of example programs. * WT-2552 Add public API for pluggable filesystems Change ex_file_system.c to not require <wt_internal.h>: strip down a copy of FreeBSD's <queue.h> for local inclusion, rewrite a few other minor pieces of code. * WT-2552 Add public API for pluggable filesystems Update spell check info * WT-2552 Add public API for pluggable filesystems __conn_load_extensions() shouldn't set the "early" boolean to true. * WT-2552 Add public API for pluggable filesystems Don't indirect through a NULL pointer if "local" was set and no path was specified, always set the name to something useful. * WT-2552 Add public API for pluggable filesystems Don't indirect through a NULL pointer if "local" was set and no path was specified, always set the name to something useful. * WT-2552 Add public API for pluggable filesystems wt_off_t vs. size_t conversion lint. * WT-2552 Add public API for pluggable filesystems Add -rdynamic to the load for ex_file_system, the main executable symbols are not exported by default. * WT-2552 Add public API for pluggable filesystems The underlying handle name includes the enclosing directory, compare against the WT_FH.name field instead. * WT-2552 Add public API for pluggable filesystems demo_fs_rename should return 0 if successful, simplify error handling Don't bother casting arguments to free(), it's not necessary. * WT-2552 Add public API for pluggable filesystems General WT_FILE_SYSTEM cleanup. Move OS initialization into the wiredtiger_open() code (the os_common/os_init.c file is no longer needed). Allow early-load extensions to be part of the environment settings, matching the "in-memory" and "readonly" configurations. Syntax check the set of a file-system, remove tests for NULL methods in the file-system structure unless it's legal for them to be NULL. Windows, POSIX and in-memory file systems now set WT_FILE_SYSTEM.terminate, call that function to cleanup when discarding a WT_CONNECTION. Export file-type and open-flags constants for WT_FILE_SYSTEM.open_file, sort the WT_FILE_SYSTEM methods, do an editing pass. Change the WT_FILE_HANDLE type from (const char *) to (char *), it's "owned" by the underlying layer, and it's simpler that way. Minor (untested) cleanup of the Windows WT_FILE_SYSTEM.open-file method. * WT-2552 Add public API for pluggable filesystems Export the advise argument #defines for the WT_FILE_HANDLE.fadvise method. Sort the WT_FILE_HANDLE methods. * WT-2552 Add public API for pluggable filesystems Clean up and simplify WT_FILE_SYSTEM/WT_FILE_HANDLE documentation's description of the handles. * WT-2552 Add public API for pluggable filesystems WT_FILE_HANDLE.close is a required function (at the least, it has to free the memory). WT_FILE_HANDLE.fadvise isn't a required function, if it's not configured, don't call it. * WT-2552 Add public API for pluggable filesystems The WT_FILE_HANDLE.lock function is required. Change the __wt_open() signature to match WT_FILE_SYSTEM.open_file(). * WT-2552 Add public API for pluggable filesystems Rework all of the WT_FILE_HANDLE mapped region methods to be optional. * WT-2552 Add public API for pluggable filesystems The WT_FILE_HANDLE.{read,size} methods are required. The WT_FILE_HANDLE.sync method is not required. Split the WT_FILE_HANDLE.sync method into .sync and .sync_nowait versions, it makes the upper-level code simpler (Windows supports .sync but doesn't support .sync_nowait). * WT-2552 Add public API for pluggable filesystems The WT_FILE_HANDLE.{truncate,write} methods are required IFF the file is not readonly. * WT-2552 Add public API for pluggable filesystems POSIX shouldn't declare a no-sync handle function unless the sync_file_range system call is available. * WT-2552 Add public API for pluggable filesystems Typo, missing semi-colon. * Fix a bug in ex_file_system.c * Fix a memory leak in posix file handle implementation * WT-2552 Use the correct flags when opening backup file. * WT-2552 Add public API for pluggable filesystems Simplify open-file error handling by calling the close function on the handle, that way we won't forget to free all of the applicable memory allocations. * WT-2552 Add public API for pluggable filesystems Simplify the directory-list method, don't pass in an include/exclude file, if prefix is non-NULL, it implies we only want files matching the prefix. * WT-2552 Add public API for pluggable filesystems Replace WT_FILE_HANDLE_POSIX.fallocate_{available,requires_locking} wiht WT_FILE_HANDLE.fallocate and WT_FILE_HANDLE.fallocate_nolock. Example code doesn't need to set WT_FILE_HANDLE methods to NULL, the allocation does that. Free the I/O buffer if open-handle allocation fails in the example code. Remove snippets for WT_FILE_SYSTEM and WT_FILE_HANDLE methods, we're not going to provide example code for them. * WT-2552 Add public API for pluggable filesystems Document we expect either ENOTSUP or EBUSY from optionally supported APIs. Review/cleanups ENOTSUP/EBUSY returns from optionally supported APIs. Make WT_FILE_HANDLE.lock optional. Don't configure or call the POSIX fadvise function on files configured for direct I/O. Rename __wt_filesize_name to __wt_size for consistency. Update the spelling list. * WT-2552 Add public API for pluggable filesystems WT_FILE_HANDLE.truncate requires locking in all known implementations, document it is not called concurrently with other operations. * WT-2552 Add public API for pluggable filesystems Don't terminate the filesystem unless we've actually configured one. * WT-2552 Add public API for pluggable filesystems Remove WT_FILE_SYSTEM and WT_FILE_HANDLE from SWIG so the test suite can pass again. * WT-2552 Add public API for pluggable filesystems Merge __conn_load_early_extensions() and __conn_load_extensions(). Fix a problem where I moved the early extensions load to where it could include the WiredTiger environment variable, but I didn't pass the built cfg into the function. * WT-2552 Add public API for pluggable filesystems Linux build typo. * WT-2552 Add public API for pluggable filesystems Get rid of the "bool silent" argument to WT_FILE_SYSTEM.size by testing for the file's existence before requesting the size (an extra system call, but guaranteed to hit in the buffer cache at least). * WT-2552 Add public API for pluggable filesystems Naming consistency pass over the WT_FILE_SYSTEM functions. * WT-2552 Add public API for pluggable filesystems Fix a spin lock mismatch. * WT-2552 Add public API for pluggable filesystems Another spinlock mismatch. * Update example pluggable file system. Add a directory list implementation to the example, which uncovered an issue with the API. The directory list API allocates memory that is freed by WiredTiger, which I don't think is kosher. * Change file-directory-sync to use reguar fsync. The distinction in os_fs.i doesn't work with the filesystem API. Also add directory_sync application to the example application. * WT-2552 Add public API for pluggable filesystems Whitespace. * WT-2552 Add public API for pluggable filesystems Rewrite __wt_free to not evaluate macro arguments multiple times. * WT-2552 Add public API for pluggable filesystems Simplify the directory-list functions: __wt_realloc_def() already handles scaling the size of the allocations, there's no need to involve a separate constant that increments the allocation size. * WT-2552 Add public API for pluggable filesystems Fix a grouping problem in a realloc call, we need to multiple the size times the previously allocated slots + 10. Fix buffer overrun, if "count" has already been incremented, the memset would skip clearing the first slot and clear one slot past the end of the buffer. Remove a comment, realloc requires clearing allocated memory, it's not paranoia. * WT-2552 Add public API for pluggable filesystems Add the mapping-cookie argument to the map-preload and map-discard functions. Change page-discard to stop reaching down through the block manager, instead, provide a block-manager map-discard function that does the work. * WT-2552 Add public API for pluggable filesystems Require a directory-list function. Implement a directory-list function for the in-memory filesystem. Consistency pass, make all the directory-list functions look the same. * WT-2552 Add public API for pluggable filesystems The WT_FILE_SYSTEM.{directory_sync, remove, rename} methods are not required for read-only systems. * WT-2552 Add public API for pluggable filesystems Change the WT_FILE_SYSTEM.open_file file_type argument from a set of constants to an enum. This requires changing how we store connection direct I/O configuration (the constants used to be flags stored in the WT_CONNECTION_IMPL), and requiring all callers of __wt_open() do their own work to figure out if WT_OPEN_DIRECTIO should be specified. * WT-2552 Add public API for pluggable filesystems Make no guarantees WT_FILE_SYSTEM and WT_FILE_HANDLE methods are not called concurrently (except for WT_FILE_HANDLE::fallocate and WT_FILE_HANDLE::fallocate_nolock). Rewrite the in-memory FS code to lock across all methods (for example, WT_FILE_HANDLE.close), that means including a reference to the enclosing WT_FILE_SYSTEM in the WT_FILE_HANDLE structure so we can find a lock without using the WT_CONNECTION_IMPL structure. * WT-2552 Add public API for pluggable filesystems Remove __wt_directory_sync_fh, it's no longer useful. * WT-2552 Add public API for pluggable filesystems Rename WT_INMEMORY_FILE_SYSTEM to WT_FILE_SYSTEM_INMEM, matching WT_FILE_HANDLE_INMEM. * WT-2552 Add public API for pluggable filesystems Add WT_FILE_SYSTEM.directory_list_free, to free memory allocated by WT_FILE_SYSTEM.direct_list. Fix a memory leak in __log_archive_once (if __wt_readlock failed, we leaked the directory-list memory). * WT-2552 Add public API for pluggable filesystems Typo, check WT_DIRECT_IO_LOG, not WT_DIRECT_IO_CHECKPOINT. * WT-2552 Add public API for pluggable filesystems Typo, unreachable code. * WT-2552 Add public API for pluggable filesystems We don't require WT_FILE_SYSTEM.{remove,rename} if the system is read-only. * Fix Windows build with pluggable file system. Involved removing u_int from the public API. * Fix line wrapping. * Fix Windows terminate function. * Forgot something in my last commit. * Fix Windows munmap bug. * Add new example to Windows build. Extend example to be more complete. * Fix example loading on Windows * Update documentation * Add missing spell words * Remove old comment.
* WT-2539 Make streams a separate handle type from files.Michael Cahill2016-04-121-3/+2
| | | | Initial commit, doesn't yet handle buffering.
* WT-2540: Separate stream and file handle methodsKeith Bostic2016-04-081-0/+1
| | | | | | | | | | Make POSIX stream/file handle semantics match Windows, streams and file handles are separate objects. Clean up the "refresh" of in-memory handles, so it's not quite so magical. Refactor to separate file and stream handle methods, provide a set of not-supported methods for the underlying OS-specific implementations.
* WT-2330: in-memory configurations should not create on-disk collection filesKeith Bostic2016-03-291-1/+1
| | | | | | | Remove the "posix" and "win" parts of the os_posix and os_win FS code file names, it's no longer needed. KNF fix for a long line.
* WT-2330: in-memory configurations should not create on-disk collection filesKeith Bostic2016-03-291-1/+1
| | | | | MSVC doesn't support line-buffering, it's the same as full-buffering. Turn on no-buffering instead.
* WT-2330: in-memory configurations should not create on-disk collection filesKeith Bostic2016-03-291-13/+12
| | | | | | | Create os_common, move common OS functions there. Add "fs" to the file names of files that contain a version of the file system APIs.
* WT-2330: in-memory configurations should not create on-disk collection filesKeith Bostic2016-03-291-0/+1
| | | | | | | | | Add WiredTiger helper functions set set line buffering and turn off buffering (wrappers for setvbuf), then add style tests so we never call setvbuf directly, to avoid re-introducing the problems in WT-2517. Add a new WiredTiger open-handle flag, WT_STREAM_LINE_BUFFER, which allows the Btree debug code to set line-buffering on its debug stream.
* WT-2330: in-memory configurations should not create on-disk collection filesKeith Bostic2016-03-241-3/+3
| | | | | | | | | | | | | | | | | Convert the Windows sources to the new structure. Create a new function __wt_win32_errno(), which returns the value from GetLastError(), review all Win32 calls to check which should return __wt_win32_errno() and which should return __wt_errno(). Fix a bug where a NULL pointer could be printed in the POSIX and Windows directory-list functions. Rework the changes in __wt_eventv(), I added code using a WT_SESSION handle in the code-path specifically not supposed to use a WT_SESSION handle. For now, hard-code calls using stdio and stderr. Change the utility function's Windows mkdir command to ignore ENOENT.
* WT-2330: in-memory configurations should not create on-disk collection filesKeith Bostic2016-03-211-1/+1
| | | | | Move the read/write lock code from os/ to support/, it's not OS-specific.
* WT-2330: in-memory configurations should not create on-disk collection filesKeith Bostic2016-03-201-0/+1
| | | | | | | | | | | | | Move file based APIs into the WT_CONNECTION_IMPL structure, move file-handle based APIs into the WT_FH structure. Create real WT_FH structures for stdout/stderr instead of using fake pointer values to flag them, give them their own functions set up when the WT_CONNECTION_IMPL structure is first created. Move file based and file-handle based API stubs into misc.i for now, not sure where they'll end up, or if we'll push WT_FH methods up into the WiredTiger code.
* WT-2330: in-memory configurations should not create on-disk collection filesKeith Bostic2016-03-191-1/+0
| | | | | Push the rest of the __linux__ specific code for fsync down into the POSIX module.
* WT-2330: in-memory configurations should not create on-disk collection filesKeith Bostic2016-03-181-8/+3
| | | | Update the list of Windows build files.
* Fix Windows build.Alex Gorrod2016-03-041-0/+1
|
* WT-2352: Allow build and test without requiring lz4Keith Bostic2016-01-281-3/+0
| | | | Remove support for the bzip2 compression engine.
* Merge branch 'develop' into wt-2287-rebalanceKeith Bostic2016-01-011-0/+1
|\
| * WT-2281: Dynamically query OS for VM page sizeMark Benvenuto2015-12-141-0/+1
| |
* | WT-2287: Add support for a WT_SESSION.rebalance method that rebuilds theKeith Bostic2015-12-171-0/+1
|/ | | | underlying btree, correcting any imbalance.
* WT-1315. Added support for join cursors:Don Anderson2015-11-031-0/+1
| | | | | | | | | | | | - "join:" URI handling added to WT_SESSION::open_cursor, added WT_SESSION::join. - Added support for in-memory bloom filters. - Minor fix to cur_dump_close CURSOR_API_CALL. - Some refactoring in __wt_{curindex,curtable}_get_value() to allow them to be called internally. - Use new macro JOINABLE_CURSOR_API_CALL() instead of CURSOR_API_CALL() to trap illegal calls to joined cursor. - __wt_curtable_open now takes an owning cursor arg. - Added __wt_struct_unpack_size() and __wt_struct_repack()
* Move the lookaside file code from conn/conn_las.c to cache/cache_las.c.Keith Bostic2015-08-261-1/+1
|
* WT-1967: creating a lookaside table to hold updates which are no longerKeith Bostic2015-07-191-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | useful, but which still might be required by current readers. When reconciling pages with updates which still might be read by existing snapshot readers, write the updates into a lookaside table. When those pages are read back into the cache, any still-relevant updates are read back from the lookaside table and attached to the page. Add a new on-disk page-header flag, WT_PAGE_LAS_UPDATE, set when a page has records in the look-aside table. Remove the __wt_evict_page() code, replace with calls to __wt_evict(), and add testing in reconciliation to only write committed updates. As part of that change, remove the WT_ISO_EVICTION transaction isolation configuration, it's no longer used (WT_ISO_READ_UNCOMMITTED is used instead). Delete the WT_PAGE_MODIFY.rec_max_txn field (no longer needed after reconciliation is changed to return EBUSY if a page wasn't marked clean, replacing the test of WT_PAGE_MODIFY.rec_max_txn __evict_review). Delete the test for all updates being globally visible when a page is discarded from the cache, that's no longer true. Delete the WT_SESSION_DISCARD_FORCE flag, used to turn off that check when forcibly discarding a page.
* Merge branch 'develop' into named-snapshotsMichael Cahill2015-05-133-2/+6
|\ | | | | | | | | | | | | | | Conflicts: dist/api_data.py src/config/config_def.c src/include/config.h src/txn/txn.c
| * Merge branch 'develop' into encryption-apiKeith Bostic2015-05-081-0/+1
| |\
| | * Add support for bulk load in LSM trees.Alex Gorrod2015-05-071-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This allows us to load into a single btree, using btree bulk load semantics (single threaded, in order, no logging). Once the load completes we switch the chunk out for the LSM tree. It's possible that we could avoid some of the switch logic when closing a bulk load cursor - since the file is flushed when closing the btree handle. It's simpler to use the switch logic to update the state of the tree. Refs WT-1922 SERVER-18321
| * | Remove per page/record checksum. Refactor common code. Verify root page. ↵Susan LoVerso2015-05-041-0/+1
| |/ | | | | | | WT-1822
| * TC MallocMark Benvenuto2015-04-241-0/+3
| |
| * Merge branch 'develop' into validate-configuration-stringKeith Bostic2015-04-231-1/+0
| |\
| | * __wt_config_concat() is a special case of __wt_config_merge(), replaceKeith Bostic2015-04-221-1/+0
| | | | | | | | | | | | the three calls to __wt_config_concat() with __wt_config_merge().
| * | Merge branch 'develop' into validate-configuration-stringKeith Bostic2015-04-151-1/+0
| |\ \ | | |/
| | * Remove the pthread-mutex-logging spinlock type, it's no longer used.Keith Bostic2015-04-131-1/+0
| | | | | | | | | | | | | | | Initialize MSVC spinlocks, don't destroy spinlocks that were never initialized.
| * | Merge branch 'develop' into validate-configuration-stringKeith Bostic2015-04-031-3/+3
| |\ \ | | |/
| * | Merge branch 'develop' into validate-configuration-stringKeith Bostic2015-03-251-0/+1
| |\ \
| * \ \ Merge branch 'develop' into validate-configuration-stringKeith Bostic2015-03-221-0/+6
| |\ \ \
| * | | | Add an API to validate configuration strings.Keith Bostic2015-03-091-0/+1
| | | | |
* | | | | Merge branch 'develop' into named-snapshotsAlex Gorrod2015-04-091-3/+3
|\ \ \ \ \ | | |_|_|/ | |/| | | | | | | | | | | | | Conflicts: src/config/config_def.c
| * | | | Use the existence of the <x86intrin.h> #include file to configure theKeith Bostic2015-04-011-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | x86 vector instructions. Some old versions of gcc don't have it, but I believe they're old enough that we don't care.
| * | | | I can't find any pthreads_XXX_np functions (which is good, because theKeith Bostic2015-04-011-3/+0
| | |_|/ | |/| | | | | | | | | | "np" stands for "non-portable"); remove optional include of pthread_np.h.
* | | | Add an initial implementation of named, in-memory snapshots. This ↵Michael Cahill2015-04-011-0/+1
|/ / / | | | | | | | | | implementation is mainly intended to flesh out the API. It won't cope well with very large numbers of active snapshots, ignores some misuses of the interface and doesn't deal at all with the problem of converting snapshots to on-disk checkpoints.
* | | Split the FILE functions out to os_posix/os_stdio.c, we're going to needKeith Bostic2015-03-201-0/+1
| |/ |/| | | | | Windows versions, and handling __wt_errno() belongs there anyway.
* | Update LZ4 source code to be more in-line with Snappy implementation.Alex Gorrod2015-03-181-0/+6
|/ | | | Update Windows build files to have LZ4 defines.
* Replace wiredtiger_strerror_r with WT_SESSION.strerror, reference #1516.Keith Bostic2015-02-021-1/+0
|
* WiredTiger DLL supportMark Benvenuto2015-01-271-0/+21
| | | | - Examples that only depend on public API use DLL now
* Add __wt_getenv to workaround caching in MSVC CRT's getenv implementation.Mark Benvenuto2014-12-191-0/+1
|
* Add a Windows-specific file, os_win/os_snprintf.c.Keith Bostic2014-12-171-0/+1
|