2a1fe770ea
API: * Database::check(): Fix checking of replication changesets. This reverts a change incorrectly made in 1.3.7. * Database::locked(): Return false instead of true for a closed inmemory DB. * Database::commit(): If commit() failed with an exception while trying to add pending changes (e.g. InvalidArgumentError due to a long term containing zero bytes) then a subsequent commit() on the same object would throw the same exception. Now we clear the pending changes in this situation (like we already did for failure at other stages in the commit). This bug remains unfixed for the chert backend as it's harder to fix there and the effort to fix it and extra risk of breakage don't seem justified for a backend we recommend people migrate away from. * QueryParser::parse_query(): Optimise parsing of multi-word synonyms. testsuite: * Use 50-word synonym for qp_scale1 "large" case. 50 divides exactly into the number of repetitions we do for the "small" case, which 60 (as used before) doesn't. This makes the two cases a little more comparable and should help make this testcase less flaky (see #764). * Adjust testcase matches1 to work with remote shards where the matcher can return slightly better bounds on the number of matches in some cases. Resolves 2 XFAILs. * The testharness get_remote_database() method is now supported for sharded databases. This is needed for keepalive1 to run successfully under multi test backends. Resolves 2 XFAILs of keepalive1. * Improved test coverage: + Test locked() on a closed WritableDatabase, which already returns false (as expected) in 1.4.x (but was broken on master). + Check multi databases in testsuite - this has been supported by Database::check() since 1.4.12. + Also test OP_SYNONYM and OP_MAX in emptydb1. + Backport testcases boolorbug1, emptynot1, emptymaybe1 and phraseweightcheckbug1 from git master - these are regression tests for fixed bugs which only affected git master, but it's useful to confirm that these bugs don't currently affect 1.4, and ensure they don't get introduced. * perftest: Store memory sizes as long long since on Microsoft Windows long is only 32 bits, which is less than common memory sizes. matcher: * Hoist positional check above OP_FILTER. * Handle OP_FILTER with more than two subqueries correctly. Previously we'd only check the first two subqueries in some situations. remote backend: * For a remote WritableDatabase, the client now keeps track of whether there are pending changes, and if there aren't then we now do nothing for commit() or cancel() calls. In particular this saves a message exchange when the WritableDatabase destructor is called when changes have already been committed with an explicit call to commit() (which is what we recommend doing, since with an explicit call to commit() you get to see any exception which gets thrown). * When closing a remote prog WritableDatabase, previously an exception could leave the remote connection open with the remote server running, and we'd then wait for the specified timeout before closing the connection. Now we close the connection before letting the exception propagate. * Don't swallow exceptions from Database::close() on a remote database. If we aren't in a transaction and so try to commit() and that fails then previously the caller would have no indication of the failure. * Fix handling the reported term weight when remote shards are searched. Fixes 5 XFAILs in the testsuite. * Add missing space to mismatching protocol versions error message. build system: * Fix to build when configured with --disable-backend-remote, broken by changes in 1.4.14. Fixes #797, reported by Дилян Палаузов. * The clang and icc compilers both define __GNUC__, which led our ABI mismatch message to report them as "g++" with a bogus version (the version of GCC that these compilers advertise themselves as, which for clang is always 4.2.0) - now we report clang++ or icc along with the actual version of that compiler. documentation: * AUTHORS: Apply missed update to the thankyou list for 1.4.14. * INSTALL: Note that MSVC 2019 works. * INSTALL: Note that Xapian can use the system uuid.h on AIX and OpenBSD. portability: * Simplify probes for snprintf. The broken snprintf in libbsd in Linux libc4 is from ~25 years ago so way too ancient to matter now, and all callers already handle the pre-ISO semantics of returning -1 for an undersize buffer so we don't need to run a test program to probe for this at configure time, which is more cross-compile friendly. * Don't quote messages in #error - the quotes aren't required and appear in the compiler output (at least with GCC and clang) making it less readable. * Use a different approach for getting a 64-bit capable stat() for mingw32. This means we now use the same stat variant for mingw32 and MSVC, which seems a better plan. * Work around unhelpful config.status behaviour. It comments out any #undef lines in config.h, even those added via AH_TOP and AH_BOTTOM. Splitting these lines means they don't match the regex hammer config.status uses. * Avoid -Wdeprecated-copy warnings from clang 10. * Avoid deprecation warning on recent Linux. We were including sys/sysctl.h if it existed, which it does on Linux but we don't actually use it there. Including it now warns that it is deprecated, so skip including it under Linux. Reported on IRC by kumaran. * Suppress GCC -Wduplicated-branches warning from our API headers in a different way which avoids needing a compiler-specific #pragma. * Workaround closefrom1 failure on macOS. It seems under macOS our fd tracking can end up using fd 10 so start from 13 when testing closefrom() so we don't close the fd which our fd tracking is using internally. debug code: * Log RemoteConnection::read_at_least() return value. |
||
---|---|---|
.. | ||
patches | ||
patches-bindings | ||
buildlink3.mk | ||
DESCR | ||
distinfo | ||
distinfo-bindings | ||
Makefile | ||
Makefile.common | ||
module.mk | ||
PLIST |