dwww Home | Show directory contents | Find package

This ChangeLog file is no longer maintained - see the git repo history for
more recent changes: https://xapian.org/bleeding

Wed Sep 30 19:34:51 GMT 2015  Olly Betts <olly@survex.com>

        * languages/compiler/: Merge changes from upstream snowball again.

Sun Sep 27 23:59:05 GMT 2015  Olly Betts <olly@survex.com>

        * languages/compiler/: Merge changes from upstream snowball.

Sat Sep 26 04:07:35 GMT 2015  Olly Betts <olly@survex.com>

        * tests/api_backend.cc: Remove pointless call to get_database().

Sat Sep 26 03:21:45 GMT 2015  Olly Betts <olly@survex.com>

        * common/pack.h,configure.ac,include/xapian/types.h,
          include/xapian/version_h.cc,tests/api_backend.cc,tests/api_wrdb.cc:
          Add new configure options --enable-64bit-docid and
          --enable-64bit-termcount, which control the size of these types.
          Currently the backends only support 32-bit docids, but using 64-bit
          docids allows searching multiple database where the mapped docids
          don't fit in a 32-bit type.  Based heavily on patch from James
          Aylett and Dylan Griffith.  Fixes #385.

Sat Sep 26 00:32:31 GMT 2015  Olly Betts <olly@survex.com>

        * backends/glass/glass_table.cc: Use BLK_UNUSED constant.

Sat Sep 26 00:31:45 GMT 2015  Olly Betts <olly@survex.com>

        * backends/chert/chert_table.cc: Initialise last_readahead - was
          causing testsuite failures under valgrind.

Fri Sep 25 06:28:02 GMT 2015  Olly Betts <olly@survex.com>

        * net/length.cc,net/length.h: Provide overloads for unsigned, unsigned
          long, and unsigned long long, rather than uint32_t and uint64_t -
          this avoids overload resolution failing when we pass a type which
          isn't one which uint32_t or uint64_t is a typedef to.  (see #385)

Fri Sep 25 04:10:00 GMT 2015  Olly Betts <olly@survex.com>

        * api/vectortermlist.cc: Check decoded length.

Sun Sep 13 08:27:53 GMT 2015  Olly Betts <olly@survex.com>

        * common/socket_utils.cc: Change C-style cast to reinterpret_cast.

Wed Sep 02 03:13:45 GMT 2015  Olly Betts <olly@survex.com>

        * docs/stemming.rst,languages/armenian.sbl,languages/basque.sbl,
          languages/catalan.sbl: Update snowball website links to
          snowballstem.org.  Correct "2-clause BSD" to "3-clause BSD".

Sun Aug 30 04:43:49 GMT 2015  Olly Betts <olly@survex.com>

        * net/remote_protocol.rst: Markup tweak.

Thu Aug 13 08:56:25 GMT 2015  Olly Betts <olly@survex.com>

        * backends/remote/remote-database.cc: Improve error when the client and
          server remote protocol versions aren't compatible.

Tue Aug 11 09:32:46 GMT 2015  Olly Betts <olly@survex.com>

        * docs/: Strip out "quickstart" examples which are out of date and
          rather redundant with the "simple" examples.

Tue Aug 11 08:24:48 GMT 2015  Olly Betts <olly@survex.com>

        * pkgconfig/xapian-core.pc.in: Fix library name in .pc file to say
          "xapian" not "xapian-core".  Reported by Eric Lindblad to the
          xapian-devel list.

Tue Jul 07 01:37:00 GMT 2015  Olly Betts <olly@survex.com>

        * api/omenquire.cc,api/query.cc,backends/chert/,backends/database.cc,
          backends/database.h,backends/glass/,common/io_utils.cc,
          common/io_utils.h,configure.ac,include/xapian/enquire.h,
          include/xapian/query.h,matcher/multimatch.cc: Where posix_fadvise()
          is available, use it to prefetch postlist Btree blocks from the
          level below the root block which will be needed for postlists of
          terms in the query, and similarly for the record/docdata table
          when MSet::fetch() is called.  Based on patch by Will Greenberg
          in #671.

Mon Jul 06 09:44:54 GMT 2015  Olly Betts <olly@survex.com>

        * common/safeunistd.h,configure.ac: Don't provide our own
          implementation of sleep() under __WIN32__ if there's already one -
          mingw provides one, and in some situations it seems to clash with
          ours.  Reported to xapian-discuss by John Alveris.

Mon Jun 29 12:10:22 GMT 2015  Olly Betts <olly@survex.com>

        * backends/chert/chert_compact.cc: Need <unistd.h> for unlink() on
          FreeBSD, reported by Germán M. Bravo via github PR 72.

Wed Jun 24 10:07:05 GMT 2015  Olly Betts <olly@survex.com>

        * tests/harness/testutils.cc,tests/harness/testutils.h: Use
          'Xapian::docid' instead of 'unsigned int' so that things work with
          64 bit docids (see #385).

Tue Jun 23 13:38:54 GMT 2015  Olly Betts <olly@survex.com>

        * api/snipper.cc,api/snipperinternal.h: Use appropriate typedefs
          rather than unsigned int.  Split out of patch by Dylan Griffith in
          #385.

Tue Jun 23 13:32:36 GMT 2015  Olly Betts <olly@survex.com>

        * backends/chert/chert_database.cc,backends/chert/chert_types.h,
          backends/glass/glass_database.cc,backends/glass/glass_defs.h: Add
          constants CHERT_MAX_DOCID and GLASS_MAX_DOCID for the largest docid
          which the backends support, independent of the size of type
          Xapian::docid.  (helps #385)

Tue Jun 23 13:19:06 GMT 2015  Olly Betts <olly@survex.com>

        * tests/api_backend.cc: Add regression test for #678.

Tue Jun 23 13:04:06 GMT 2015  Olly Betts <olly@survex.com>

        * api/,backends/remote/net_postlist.cc,
          backends/remote/remote-database.cc,
          geospatial/latlong_posting_source.cc,net/,tests/unittest.cc: Split
          decode_length() into versions which decode a 32 vs 64 bit value,
          and which check that there's at least the decoded length in bytes
          in the source data.  (Fixes #678 and helps #385)

Tue Jun 23 11:49:15 GMT 2015  Olly Betts <olly@survex.com>

        * net/remoteserver.cc: Check length of key in MSG_SETMETADATA.

Sat Jun 20 13:05:50 GMT 2015  Olly Betts <olly@survex.com>

        * common/str.h,tests/,tests/harness/,tests/internaltest.cc,
          tests/perftest/perftest.cc,tests/perftest/perftest_matchdecider.cc,
          tests/perftest/perftest_randomidx.cc,tests/queryparsertest.cc,
          tests/soaktest/soaktest_queries.cc,tests/termgentest.cc,
          tests/unittest.cc: Make str() private to the library, and use
          C++11 std::to_string() to convert numbers to std::string in the
          testsuite.  (ticket #63)

Sat Jun 20 12:32:13 GMT 2015  Olly Betts <olly@survex.com>

        * tests/api_unicode.cc: Fix trailing whitespace introduced by previous
          commit.

Sat Jun 20 06:31:27 GMT 2015  Olly Betts <olly@survex.com>

        * tests/api_unicode.cc,unicode/Makefile.mk,
          unicode/UnicodeData-README.txt,unicode/UnicodeData.txt:
          Update to Unicode 8.0.0.  (fixes #680)

Thu Jun 11 11:57:50 GMT 2015  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: Remove XAPIAN_CONST_FUNCTION marker
          from sortable_serialise_() helper, as it writes to the passed in
          buffer, so it isn't const or pure.  Fixes decvalwtsource2 testcase
          failure when compiled with clang.

Thu Jun 11 05:05:27 GMT 2015  Olly Betts <olly@survex.com>

        * examples/xapian-metadata.cc: Extend "list" subcommand to take
          optional key prefix.

Sat Jun 06 11:02:50 GMT 2015  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Use C++11 auto and container
          iteration for cleaner code.

Fri Jun 05 12:08:02 GMT 2015  Olly Betts <olly@survex.com>

        * api/omenquire.cc,api/omenquireinternal.h,
          backends/remote/remote-database.cc,backends/remote/remote-database.h,
          include/xapian/matchspy.h,matcher/,net/remoteserver.cc,
          tests/api_none.cc: Add support for optional reference counting of
          MatchSpy objects.

Fri Jun 05 02:55:54 GMT 2015  Olly Betts <olly@survex.com>

        * backends/remote/remote-database.h: Correct doxygen comment for
          internal method.

Thu Jun 04 12:44:00 GMT 2015  Olly Betts <olly@survex.com>

        * examples/quest.cc: Prefer pre-increment ++.

Thu Jun 04 12:42:49 GMT 2015  Olly Betts <olly@survex.com>

        * tests/api_compact.cc,tests/api_posdb.cc: Remove unused variables.

Thu Jun 04 12:42:04 GMT 2015  Olly Betts <olly@survex.com>

        * tests/api_backend.cc: Fix compilation in case where S_ISSOCK() isn't
          defined.

Thu Jun 04 12:41:31 GMT 2015  Olly Betts <olly@survex.com>

        * languages/compiler/generator.c: Remove redundant assignment.

Thu Jun 04 12:40:52 GMT 2015  Olly Betts <olly@survex.com>

        * languages/compiler/generator.c: Remove extra "break;".

Thu Jun 04 12:39:51 GMT 2015  Olly Betts <olly@survex.com>

        * include/xapian/query.h: Remove bogus extra "Query::" qualifier from
          fake Query constructor prototypes provided for SWIG.

Thu Jun 04 12:38:36 GMT 2015  Olly Betts <olly@survex.com>

        * api/documentvaluelist.h,api/leafpostlist.h,api/matchspy.cc,
          include/xapian/,net/length.cc: Mark constructors taking a
          single argument as "explicit" to avoid unwanted implicit
          conversions.

Mon Jun 01 13:11:02 GMT 2015  Olly Betts <olly@survex.com>

        * NEWS.SKELETON: Remove section for "flint backend" from template.

Mon Jun 01 13:09:55 GMT 2015  Olly Betts <olly@survex.com>

        * NEWS,configure.ac: Update for 1.3.3.

Mon May 25 04:33:15 GMT 2015  Olly Betts <olly@survex.com>

        * NEWS: Update.

Sun May 24 12:52:47 GMT 2015  Olly Betts <olly@survex.com>

        * tests/api_postingsource.cc: timer_create() seems to always fail on
          AIX with EAGAIN, so just skip the matchtimelimit1 testcase there.

Sun May 24 11:48:30 GMT 2015  Olly Betts <olly@survex.com>

        * net/tcpserver.cc: Under __WIN32__, inet_ntop()'s second parameter
          is 'void*' (to POSIX says it should be 'const void*').

Sun May 24 11:46:25 GMT 2015  Olly Betts <olly@survex.com>

        * common/safenetdb.h: Under __WIN32__, MSDN says that newer platforms
          need <ws2def.h> for AI_* constants.  And mingw doesn't seem to
          define AI_NUMERICSERV yet.

Sun May 24 10:41:39 GMT 2015  Olly Betts <olly@survex.com>

        * common/safewindows.h,configure.ac: Under __WIN32__, we need to
          specify Vista as the minimum supported version to get the
          AI_ADDRCONFIG flag.  Older versions seem to all be out of support
          anyway.

Sun May 24 06:46:15 GMT 2015  Olly Betts <olly@survex.com>

        * net/tcpclient.cc: Add missing declaration of variable under
          __WIN32__.

Sun May 24 06:39:56 GMT 2015  Olly Betts <olly@survex.com>

        * tests/harness/testsuite.h: Simplify FAIL_TEST and SKIP_TEST
          slightly.

Sat May 23 11:52:03 GMT 2015  Olly Betts <olly@survex.com>

        * tests/harness/backendmanager_remotetcp.cc: Don't leave an extra fd
          open when starting xapian-tcpsrv for remotetcp tests.

Sat May 23 10:12:31 GMT 2015  Olly Betts <olly@survex.com>

        * tests/harness/backendmanager_remotetcp.cc: Add spaces between literal
          strings and macros which expand to literal strings for C++11
          compatibility in __WIN32__-specific code.

Fri May 22 03:22:03 GMT 2015  Olly Betts <olly@survex.com>

        * NEWS: Update.

Wed May 20 14:24:03 GMT 2015  Olly Betts <olly@survex.com>

        * include/xapian/version_h.cc: If old and new __GXX_ABI_VERSION are
          both >= 1002 (which means GCC >= 3.4), then issue a warning about
          mismatching versions instead of an error.  The changes in these
          versions are bug fixes for corner cases, so there's a good chance of
          things working - e.g. building xapian-bindings with GCC 5.1 (which
          defaults to __GXX_ABI_VERSION 1008) against xapian-core built with
          GCC 4.9 (1002) seems to work OK.  A warning is still useful as a
          clue to what is going on if linking fails due to a missing symbol.

Wed May 20 13:47:50 GMT 2015  Olly Betts <olly@survex.com>

        * net/serialise.cc: Don't use encode_length() on a bool - it's
          overkill, and leads to a warning from GCC 5.1 (due to the
          comparison (bool_value < 255) from the template expansion
          always being true).

Wed May 20 01:49:18 GMT 2015  Olly Betts <olly@survex.com>

        * api/matchspy.cc: Fix comparison function not to return true for two
          equal elements, which fixes matchspy4 test failure with clang and
          libc++.

Wed May 20 00:20:56 GMT 2015  Olly Betts <olly@survex.com>

        * configure.ac: Disable "<FUNCTION> is expected to return a value"
          warning from Sun's C++ compiler, as it fires even for functions we
          end in a "throw" statement.  Genuine instances will be caught by
          compilers with superior warning machinery.

Mon May 18 04:18:37 GMT 2015  Olly Betts <olly@survex.com>

        * configure.ac: Arrange to pass command line option so that xlC
          actually fails to compile the test code for typeid() when RTTI isn't
          enabled.

Sun May 17 11:35:36 GMT 2015  Olly Betts <olly@survex.com>

        * backends/glass/glass_version.cc: When reporting an error that the
          glass format version doesn't match, don't append an uninitialised
          char[] buffer to the error string (code accidentally left behind
          by the previous change in this area).

Sat May 16 12:08:17 GMT 2015  Olly Betts <olly@survex.com>

        * common/socket_utils.cc: Fix casts on the 4th argument of
          setsockopt() so they compile on platforms which expect
          char * or const char * there.

Fri May 15 13:24:55 GMT 2015  Olly Betts <olly@survex.com>

        * configure.ac: Enhance the probe for whether the test harness can use
          RTTI so that it works for xlC (which defaults to not generating
          RTTI).

Fri May 15 12:28:32 GMT 2015  Olly Betts <olly@survex.com>

        * common/debuglog.h: Remove commented out STATIC_ASSERT() which
          is conceptually flawed.

Fri May 15 12:27:45 GMT 2015  Olly Betts <olly@survex.com>

        * common/omassert.h,common/pack.h,tests/api_wrdb.cc,
          tests/internaltest.cc: Replace STATIC_ASSERT() with C++11's
          static_assert().

Fri May 15 11:34:47 GMT 2015  Olly Betts <olly@survex.com>

        * common/stringutils.cc: Use static_assert rather than an adhoc check
          via a negative array size.

Fri May 15 11:16:18 GMT 2015  Olly Betts <olly@survex.com>

        * common/io_utils.cc: Replace the code used on platforms without
          F_DUPFD with simpler code which actually compiles.

Fri May 15 03:43:16 GMT 2015  Olly Betts <olly@survex.com>

        * pkgconfig/xapian-core.pc.in: Include @ldflags@ in pkg-config .pc
          file.

Fri May 15 03:33:40 GMT 2015  Olly Betts <olly@survex.com>

        * pkgconfig/xapian-core.pc.in: Fix include directory reported by
          pkg-config.

Fri May 15 03:31:43 GMT 2015  Olly Betts <olly@survex.com>

        * configure.ac,pkgconfig/xapian-core.pc.in,xapian-config.in: When
          compiling with xlC on AIX, _LARGE_FILES gets defined by
          AC_SYS_LARGEFILE to enable large file support, and defining this
          changes the ABI of std::string, so include it in xapian-config
          --cxxflags and the pkg-config equivalent.

Fri May 15 02:52:10 GMT 2015  Olly Betts <olly@survex.com>

        * tests/Makefile.am,tests/perftest/Makefile.mk: Use $(NO_INSTALL)
          rather than @NO_INSTALL@ to allow make-time overriding.

Fri May 15 02:33:11 GMT 2015  Olly Betts <olly@survex.com>

        * tests/soaktest/Makefile.mk: Use -no-fast-install instead of
          -no-install for linking soaktest on platforms where libtool issues
          a warning for -no-install, like we already do for all the other test
          programs.

Fri May 15 02:14:16 GMT 2015  Olly Betts <olly@survex.com>

        * examples/simpleexpand.cc,examples/simpleindex.cc,
          examples/simplesearch.cc: '#include <config.h>' in the examples, as
          when compiling with xlC on AIX, _LARGE_FILES gets defined by
          AC_SYS_LARGEFILE to enable large file support, and defining this
          changes the ABI of std::string, so it also needs to be defined when
          compiling code using Xapian.

Thu May 14 03:17:28 GMT 2015  Olly Betts <olly@survex.com>

        * backends/chert/chert_cursor.cc: Correct delete to delete [].

Tue May 12 14:33:28 GMT 2015  Olly Betts <olly@survex.com>

        * docs/deprecation.rst: Add deprecation of --preserve-nonduplicates
          which happened in 1.2.4.

Tue May 12 07:38:12 GMT 2015  Olly Betts <olly@survex.com>

        * Makefile.am: Actually use $(NO_UNDEFINED).

Tue May 12 06:40:38 GMT 2015  Olly Betts <olly@survex.com>

        * configure.ac: Only pass -no-undefined when linking the library if
          it's actually required for the current platform.  Sun C++ doesn't
          link the C++ runtime libraries to shared objects, so the build
          fails with -no-undefined.

Tue May 12 06:39:26 GMT 2015  Olly Betts <olly@survex.com>

        * INSTALL,configure.ac: Fix comment and doc typos.

Tue May 12 03:49:38 GMT 2015  Olly Betts <olly@survex.com>

        * configure.ac: Add workaround for odd <cmath> issue with Sun C++.

Tue May 12 03:49:15 GMT 2015  Olly Betts <olly@survex.com>

        * configure.ac: On Solaris, inet_ntop() needs -lnsl.

Tue May 12 03:48:48 GMT 2015  Olly Betts <olly@survex.com>

        * api/keymaker.cc: Fix error compiling with Sun C++.

Tue May 12 03:07:06 GMT 2015  Olly Betts <olly@survex.com>

        * include/xapian/attributes.h: Fix typo in definition of
          XAPIAN_NOTHROW() definition for C++11 compilers other than GCC and
          MSVC.

Tue May 12 01:48:19 GMT 2015  Olly Betts <olly@survex.com>

        * exception_data.pm: Fix not to parse mentions of XAPIAN_THROW() in
          comments.

Mon May 11 14:16:22 GMT 2015  Olly Betts <olly@survex.com>

        * HACKING: libtool 2.4.6 is now used for snapshots and releases.

Mon May 11 14:14:04 GMT 2015  Olly Betts <olly@survex.com>

        * common/str.cc,expand/bo1eweight.cc,geospatial/geoencode.cc,
          matcher/multiandpostlist.cc,net/remoteconnection.cc,weight/:
          Fixes for errors when compiling with Sun C++.

Mon May 11 10:53:47 GMT 2015  Olly Betts <olly@survex.com>

        * common/log2.h,configure.ac: Change probe for log2() to check for a
          declaration and '#include <cmath>' to get it to fix build on Solaris
          with Sun C++.  C++11 compilers should all provide log2(), but let's
          not rely on that just yet as it's easy to provide a fallback
          implementation.

Mon May 11 07:04:06 GMT 2015  Olly Betts <olly@survex.com>

        * common/getopt.cc,net/tcpserver.cc: Fix clang warnings on OS X.
          Reported by Germán M. Bravo.

Mon May 11 06:29:42 GMT 2015  Olly Betts <olly@survex.com>

        * api/constinfo.cc,docs/doxygen_api.conf.in,
          docs/doxygen_source.conf.in,include/xapian/: C++11's noexcept
          needs to be on definitions as well as declarations, but GCC
          function attributes must only be on declarations, so split
          XAPIAN_NOEXCEPT off from XAPIAN_NOTHROW.

Sun May 10 13:26:24 GMT 2015  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h,queryparser/queryparser_internal.h,
          tests/api_none.cc: Add support for optional reference counting of
          FieldProcessor objects.

Sun May 10 11:07:36 GMT 2015  Olly Betts <olly@survex.com>

        * include/xapian/intrusive_ptr.h,include/xapian/queryparser.h,
          queryparser/queryparser.lemony,queryparser/queryparser_internal.h,
          tests/api_none.cc: Add support for optional reference counting of
          ValueRangeProcessor objects.

Thu May 07 12:42:11 GMT 2015  Olly Betts <olly@survex.com>

        * bin/xapian-replicate.cc,common/socket_utils.cc,common/socket_utils.h,
          net/replicatetcpclient.cc,net/replicatetcpclient.h: Set SO_KEEPALIVE
          for xapian-replicate's connection to the master, and add command
          line option to allow setting socket-level timeouts (SO_RCVTIMEO and
          SO_SNDTIMEO) on platforms that support them.  Fixes #546, reported
          by nkvoll.

Thu May 07 12:00:15 GMT 2015  Olly Betts <olly@survex.com>

        * bin/xapian-replicate.cc: Fix connection timeout to be 10 seconds
          rather than 10000 seconds which is has been since 1.2.3.

Tue May 05 02:38:37 GMT 2015  Olly Betts <olly@survex.com>

        * net/tcpserver.cc: Use inet_ntop() instead of inet_ntoa() - the
          latter isn't thread-safe.

Tue May 05 02:05:27 GMT 2015  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: Update documentation to reflect that
          the database passed to QueryParser::set_database() is no longer
          used to expand wildcards and partial terms.

Mon May 04 11:32:40 GMT 2015  Olly Betts <olly@survex.com>

        * api/postlist.cc,api/postlist.h,common/remoteprotocol.h,matcher/,
          net/serialise.cc,tests/api_backend.cc: Fix sort by value when
          multiple databases are in use and one or more are remote.  Fixes
          #674, reported by Dylan Griffith.

Sun May 03 12:41:58 GMT 2015  Olly Betts <olly@survex.com>

        * docs/deprecation.rst,include/xapian/queryparser.h,
          queryparser/queryparser.cc,queryparser/queryparser.lemony,
          queryparser/queryparser_internal.h,tests/queryparsertest.cc:
          Allow setting the expansion limits and types for wildcards
          and partial terms in the QueryParser independently.  Partial
          terms now default to the 100 most frequent matching terms.
          Deprecate set_max_wildcard_expansion() in favour of new
          set_max_expansion() method which can set expansion limits
          for partial terms too.  Completes #608.

Sat May 02 09:20:30 GMT 2015  Olly Betts <olly@survex.com>

        * api/query.cc,api/queryinternal.cc,api/queryinternal.h,
          include/xapian/query.h,queryparser/queryparser.lemony,
          tests/api_query.cc: Add a choice of ways to apply the limit on
          wildcard expansion.  Fixes #608, reported by boomboo.

Fri May 01 14:53:16 GMT 2015  Olly Betts <olly@survex.com>

        * tests/api_replicate.cc: Reenable replicate3 for glass, as it no
          longer fails.

Fri May 01 13:38:48 GMT 2015  Olly Betts <olly@survex.com>

        * common/autoptr.h: Just map AutoPtr to std::unique_ptr now we require
          C++11.

Fri May 01 13:33:28 GMT 2015  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc,net/progclient.cc: IRIX is dead, so remove
          lingering traces of support for SGI's compiler.

Fri May 01 08:59:13 GMT 2015  Olly Betts <olly@survex.com>

        * HACKING,INSTALL: STLport was last released in 2008, so (a) it's no
          longer actively developed and (b) it won't support C++11, so strip
          out documentation which mentions it.
        * configure.ac: For Sun's C++ compiler, -std=c++11 enables C++11
          support, and is incompatible with -library=stlport, so remove code
          to enable that later option.

Fri May 01 01:37:24 GMT 2015  Olly Betts <olly@survex.com>

        * configure.ac: Tweak comment to match xapian-omega's configure.

Fri May 01 01:36:41 GMT 2015  Olly Betts <olly@survex.com>

        * configure.ac: Set default value for AUTOM4TE before AC_OUTPUT so the
          default will actually get used.

Fri May 01 01:36:05 GMT 2015  Olly Betts <olly@survex.com>

        * configure.ac: Add explicit AC_CANONICAL_HOST.

Fri May 01 01:08:56 GMT 2015  Olly Betts <olly@survex.com>

        * api/matchspy.cc,tests/api_nodb.cc: Eliminate needless uses of
          AutoPtr.

Fri May 01 00:37:42 GMT 2015  Olly Betts <olly@survex.com>

        * tests/internaltest.cc: Remove self-assignment check of AutoPtr as
          that doesn't work under C++11 when AutoPtr is unique_ptr, and add
          other checks of reassignment which should work for both.

Fri May 01 00:37:09 GMT 2015  Olly Betts <olly@survex.com>

        * tests/api_postingsource.cc: Remove C++11 specific test which doesn't
          actually work with C++11.

Fri May 01 00:33:43 GMT 2015  Olly Betts <olly@survex.com>

        * tests/harness/backendmanager.cc,
          tests/harness/backendmanager_remotetcp.cc,
          tests/harness/testsuite.h,tests/harness/testutils.h: Add spaces
          between literal strings and macros which expand to literal strings
          for C++11 compatibility.

Thu Apr 30 14:41:59 GMT 2015  Olly Betts <olly@survex.com>

        * backends/chert/chert_table.cc,backends/glass/glass_table.cc: Remove
          duplicate includes of "omassert.h".

Thu Apr 30 14:41:31 GMT 2015  Olly Betts <olly@survex.com>

        * backends/glass/glass_freelist.cc: Add missing explicit include of
          "omassert.h",

Thu Apr 30 14:38:06 GMT 2015  Olly Betts <olly@survex.com>

        * HACKING,backends/chert/chert_table.cc,
          backends/chert/chert_version.cc,backends/glass/glass_table.cc,
          common/omassert.h: Remove CompileTimeAssert() and just use
          C++11's static_assert instead.

Thu Apr 30 14:28:10 GMT 2015  Olly Betts <olly@survex.com>

        * backends/glass/glass_freelist.cc: Drop conditionals for GCC >= 3.4
          as we now require >= 4.4.

Thu Apr 30 14:26:13 GMT 2015  Olly Betts <olly@survex.com>

        * api/omdatabase.cc,include/xapian/queryparser.h,
          tests/harness/backendmanager.h: Drop workarounds for ancient Sun
          C++ compilers, as we now require a recent version for C++11 support.

Thu Apr 30 14:22:46 GMT 2015  Olly Betts <olly@survex.com>

        * INSTALL: IRIX is past EOL so drop information about IRIX make.

Thu Apr 30 14:22:10 GMT 2015  Olly Betts <olly@survex.com>

        * configure.ac: OS X >= 10.4 apparently supports symbol visibility, so
          update comment.

Thu Apr 30 14:21:37 GMT 2015  Olly Betts <olly@survex.com>

        * common/unordered_map.h: No longer relevant now we require C++11.

Thu Apr 30 13:59:16 GMT 2015  Olly Betts <olly@survex.com>

        * HACKING,INSTALL,configure.ac,xapian-config.in: Require a C++
          compiler - the minimum required GCC version is now probably GCC 4.4.

Thu Apr 30 13:48:54 GMT 2015  Olly Betts <olly@survex.com>

        * xapian-config.in: Remove superfluous comment left over from code
          refactoring.

Thu Apr 30 13:47:30 GMT 2015  Olly Betts <olly@survex.com>

        * xapian-config.in: Fix the include directory reported by --swigflags
          for an installed copy to include the "/xapian-1.3" component for
          a development version.

Thu Apr 30 12:34:14 GMT 2015  Olly Betts <olly@survex.com>

        * api/omenquire.cc: Fix for C++11 where AutoPtr is unique_ptr.

Thu Apr 30 12:20:22 GMT 2015  Olly Betts <olly@survex.com>

        * api/replication.cc,backends/chert/chert_database.cc,
          backends/chert/chert_table.cc,backends/chert/chert_version.cc,
          backends/glass/,backends/remote/remote-database.cc,bin/,
          examples/copydatabase.cc,examples/quest.cc,
          examples/xapian-metadata.cc,net/tcpclient.cc,
          queryparser/queryparser.lemony: Add spaces between literal strings
          and macros which expand to literal strings for C++11 compatibility.

Thu Apr 30 12:17:17 GMT 2015  Olly Betts <olly@survex.com>

        * bin/xapian-tcpsrv.cc: Use STRINGIZE() to include defaults literally
          in string for --help.

Thu Apr 30 10:48:11 GMT 2015  Olly Betts <olly@survex.com>

        * HACKING: Update URL.

Thu Apr 30 10:47:10 GMT 2015  Olly Betts <olly@survex.com>

        * m4/ax_cxx_compile_stdcxx_11.m4: Add support for HP's aCC (untested
          as I no longer have access to this compiler).

Thu Apr 30 05:30:13 GMT 2015  Olly Betts <olly@survex.com>

        * m4/ax_cxx_compile_stdcxx_11.m4: Add macro from autoconf-archive to
          detect any compiler options needed to enable C++11 support (not yet
          used).

Thu Apr 30 05:14:56 GMT 2015  Olly Betts <olly@survex.com>

        * common/posixy_wrapper.cc: O_RDONLY, etc are better described as
          "POSIX" than "ANSI".

Thu Apr 30 05:12:33 GMT 2015  Olly Betts <olly@survex.com>

        * configure.ac,xapian-config.in: Rename ANSI_CXXFLAGS to ISO_CXXFLAGS
          and talk about ISO C++ in configure messages.

Thu Apr 30 05:10:40 GMT 2015  Olly Betts <olly@survex.com>

        * .gitignore: Adjust for m4 subdirectory to only match files which
          aren't in git.

Thu Apr 30 04:07:05 GMT 2015  Olly Betts <olly@survex.com>

        * xapian-config.in: Fix typo so cached result of test in
          is_uninstalled() is actually used on subsequent calls.  Fixes #676,
          reported (with patch) by Ryan Schmidt.

Wed Apr 29 03:00:32 GMT 2015  Olly Betts <olly@survex.com>

        * backends/chert/chert_database.cc,backends/glass/glass_database.cc:
          Fix get_changeset_revisions() not to potentially read uninitialised
          data if a changeset file is truncated.

Wed Apr 29 00:09:57 GMT 2015  Olly Betts <olly@survex.com>

        * backends/chert/chert_databasereplicator.cc: Use return value of
          get_message_chunk() rather than ignoring it and repeating the check
          in the caller.

Tue Apr 28 22:22:01 GMT 2015  Olly Betts <olly@survex.com>

        * bin/xapian-progsrv.cc: Fix comment typo.

Tue Apr 28 04:51:33 GMT 2015  Olly Betts <olly@survex.com>

        * backends/chert/chert_cursor.cc,backends/chert/chert_table.cc,
          backends/glass/glass_cursor.cc,backends/glass/glass_table.cc:
          Potentially increment the cursor version on cancel() or when the
          database is reopened, and flag the current cursor version as used
          when a cursor is rebuilt.  Fixes #675, reported by Germán M. Bravo.
        * tests/api_backend.cc: Add regression test cursorbug1 based on
          reproducer supplied by Germán.

Thu Apr 23 05:25:48 GMT 2015  Olly Betts <olly@survex.com>

        * matcher/exactphrasepostlist.cc: When matching an exact phrase, if a
          term doesn't occur where we want, we can advance "term 0" using
          skip_to() based on where the term does next occur rather than just
          calling next() on it.

Thu Apr 23 05:03:28 GMT 2015  Olly Betts <olly@survex.com>

        * matcher/nearpostlist.cc: Be lazier about opening PositionList
          objects, as that causes a read of all the data for that
          positionlist.

Thu Apr 23 04:11:30 GMT 2015  Olly Betts <olly@survex.com>

        * matcher/nearpostlist.cc: Make code for scanning window for duplicate
          positions a little clearer.

Wed Apr 22 13:52:55 GMT 2015  Olly Betts <olly@tartarus.org>

        * matcher/nearpostlist.cc: Fix "/*" within comment.

Wed Apr 22 12:53:37 GMT 2015  Olly Betts <olly@survex.com>

        * matcher/nearpostlist.cc,matcher/nearpostlist.h: Reimplement OP_NEAR
          check.  The new implementation consistently requires the terms to
          occur at different positions, and fixes some false negatives.
        * tests/api_query.cc: Add regression tests as loosenear1.

Mon Apr 20 12:53:04 GMT 2015  Olly Betts <olly@survex.com>

        * matcher/phrasepostlist.cc,matcher/phrasepostlist.h: Reimplement
          OP_PHRASE check for loose phrases - the existing implementation was
          buggy, giving both false positives and false negatives in rare
          cases.  Fixes #653, reported by Jean-Francois Dockes.
        * tests/api_query.cc: Add regression test loosephrase1.

Thu Apr 16 06:51:31 GMT 2015  Olly Betts <olly@survex.com>

        * common/errno_to_string.cc: Fix to build with Sun's C++ compiler.

Thu Apr 16 06:43:40 GMT 2015  Olly Betts <olly@survex.com>

        * configure.ac: Fix XAPIAN_TEST_CXXFLAGS macro to append to the
          existing value of the variable, not its name.

Wed Apr 15 11:36:40 GMT 2015  Olly Betts <olly@tartarus.org>

        * tests/api_wrdb.cc: Just #ifdef out the problematic part of the
          adddoc5 testcase for clang.

Wed Apr 15 06:25:13 GMT 2015  Olly Betts <olly@survex.com>

        * common/serialise-double.cc: Fix bug in recent fix.
        * tests/unittest.cc: Extend serialise_double() to provide regression
          test.

Thu Apr 09 00:40:24 GMT 2015  Olly Betts <olly@survex.com>

        * net/remoteconnection.h: Avoid compiler warning from clang in new
          getaddrinfo() code.

Wed Apr 08 11:59:00 GMT 2015  Olly Betts <olly@survex.com>

        * common/serialise-double.cc: Add missing cast to unsigned char when
          we check if the value will fit in the double type.  On machines with
          IEEE-754 doubles (which is most current platforms), which change
          makes no difference as we're checking if the value cast to a double
          is > 255.<something> which is never the case.

Wed Apr 08 10:42:43 GMT 2015  Olly Betts <olly@survex.com>

        * common/serialise-double.cc: Avoid reading one byte past the end of
          the serialised value.  In practice this was harmless on most
          platforms, as dbl_max_mantissa is 255 for IEEE-754 format doubles,
          and at least GCC's std::string keeps the buffer nul-terminated.
          Reported by Germán M. Bravo in github PR#67.
        * tests/unittest.cc: Copy the serialised value to a temporary buffer
          before calling unserialise_double() so that valgrind can detect if
          we read one byte past the end.

Tue Apr 07 23:02:21 GMT 2015  Olly Betts <olly@survex.com>

        * backends/chert/: Fix problems with get_unique_terms() on a modified
          chert database.
        * tests/: Add more test coverage for get_unique_terms().

Mon Apr 06 00:22:22 GMT 2015  Olly Betts <olly@survex.com>

        * tests/harness/backendmanager_multi.cc,
          tests/harness/backendmanager_remote.cc: Cleaner code for checking
          the backend subtype.

Mon Mar 30 03:22:29 GMT 2015  Olly Betts <olly@survex.com>

        * backends/flint_lock.cc: If available, use F_DUPFD to dup to a file
          descriptor which is >= 2.

Mon Mar 30 01:16:06 GMT 2015  Olly Betts <olly@survex.com>

        * api/error.cc,common/safenetdb.h,configure.ac,generate-exceptions,
          net/remoteconnection.h,net/tcpclient.cc,net/tcpserver.cc: Use
          getaddrinfo() instead of gethostbyname(), as a step towards
          IPv6 support (currently we still only look for IPv4 addresses).
          See #374.

Sun Mar 29 03:56:12 GMT 2015  Olly Betts <olly@survex.com>

        * Makefile.am,docs/Makefile.am: Add missing quoting.

Mon Mar 23 06:33:39 GMT 2015  Olly Betts <olly@survex.com>

        * backends/chert/chert_table.cc,backends/glass/glass_table.cc,
          common/io_utils.cc,common/io_utils.h,tests/api_backend.cc:
          Avoid using fds < 3 for writable database tables, as it risks
          corruption is some code in the same process tries to write to stdout
          or stderr without realising it is closed.  (Partly addresses #651)

Sat Mar 21 22:11:53 GMT 2015  Olly Betts <olly@survex.com>

        * backends/glass/glass_cursor.cc: Add comment warning that B can't be
          used in GlassCursor's destructor.

Tue Mar 17 03:51:00 GMT 2015  Olly Betts <olly@survex.com>

        * matcher/exactphrasepostlist.cc: Fixed reversed conditonal for
          picking the shorter position list for an exact phrase of two terms.
          The difference this fix makes isn't dramatic, but can be measured
          (at least with cachegrind).  Thanks to kbwt for spotting this.

Fri Mar 13 11:21:37 GMT 2015  Olly Betts <olly@survex.com>

        * backends/chert/chert_compact.cc: Make sure we open all the tables of
          a database at the same revision when compacting.  (Fixes #649)

Thu Mar 12 04:09:07 GMT 2015  Olly Betts <olly@survex.com>

        * examples/xapian-metadata.cc: Add 'list' subcommand to list all the
          metadata keys.

Mon Mar 09 03:08:14 GMT 2015  Olly Betts <olly@survex.com>

        * include/xapian/constants.h,include/xapian/queryparser.h: Doxygen
          comment wording tweaks.

Mon Mar 09 03:07:36 GMT 2015  Olly Betts <olly@survex.com>

        * include/xapian/constants.h,include/xapian/queryparser.h,
          include/xapian/weight.h: Doxygen comment formatting tweaks.

Sat Mar 07 11:27:23 GMT 2015  Olly Betts <olly@tartarus.org>

        * queryparser/queryparser.lemony,tests/queryparsertest.cc: Extend the
          set of characters allowed in the start of a range to be anything
          except for '(' and characters <= ' '.  This better matches what's
          accepted for a range end (anything except for ')' and characters <=
          ' ').  Reported by Jani Nikula.

Thu Mar 05 11:13:56 GMT 2015  Olly Betts <olly@survex.com>

        * backends/dbcheck.cc: When checking a single table, handle the
          ".glass" extension on glass database tables, and use the extension
          to guide the decision of which backend the table is from.

Thu Mar 05 04:38:21 GMT 2015  Olly Betts <olly@survex.com>

        * backends/dbcheck.cc: Don't hard-code string length as number.

Mon Feb 23 04:48:24 GMT 2015  Olly Betts <olly@survex.com>

        * api/emptypostlist.cc,api/emptypostlist.h: Fix handling of
          OP_WILDCARD which expands to no terms when used under OP_SYNONYM.
        * tests/api_query.cc: Regression test dualprefixwildcard1.

Mon Feb 23 04:26:52 GMT 2015  Olly Betts <olly@survex.com>

        * tests/harness/testsuite.cc: Fix compilation issue with previous
          change.

Thu Feb 19 08:04:17 GMT 2015  Olly Betts <olly@survex.com>

        * tests/api_anydb.cc,tests/api_nodb.cc,tests/harness/testrunner.cc,
          tests/harness/testsuite.cc,tests/stemtest.cc: Use std::string's
          assign() or construct from substring rather than assigning or
          initialising with the result of calling substr().

Tue Feb 17 18:31:25 GMT 2015  Olly Betts <olly@survex.com>

        * include/Makefile.mk: Ship new file from previous commit.

Tue Feb 17 05:14:02 GMT 2015  Olly Betts <olly@survex.com>

        * api/Makefile.mk,api/constinfo.cc,api/version.cc,include/xapian.h,
          include/xapian/constinfo.h,include/xapian/stem.h,languages/stem.cc:
          Put the list of stemmers into the vinfo struct and renamed it to
          const_info.

Mon Feb 16 10:18:51 GMT 2015  Olly Betts <olly@survex.com>

        * configure.ac,languages/: Merge generate-allsnowballheaders script
          into collate-sbl.

Mon Feb 16 04:15:46 GMT 2015  Olly Betts <olly@survex.com>

        * backends/chert/chert_check.cc: Fix xapian-check on a single table.

Fri Feb 13 10:18:45 GMT 2015  Olly Betts <olly@survex.com>

        * generate-exceptions: Note that the change to not negate
          WSAGetLastError() values internally was backported for 1.2.20.

Fri Feb 13 05:57:13 GMT 2015  Olly Betts <olly@survex.com>

        * api/,common/remoteprotocol.h,exception_data.pm,
          include/xapian/query.h,include/xapian/queryparser.h,matcher/,
          queryparser/queryparser.lemony,tests/api_qpbackend.cc,
          tests/queryparsertest.cc,weight/weightinternal.cc,
          weight/weightinternal.h: Add new OP_WILDCARD query operator, which
          expands wildcards lazily, so now we create the PostList tree for a
          wildcard directly, rather than creating an intermediate Query tree.
          See ticket#48.

Wed Feb 11 22:45:26 GMT 2015  Olly Betts <olly@survex.com>

        * backends/glass/glass_table.cc: mid_point() should never fail to find
          a split point, but just in case it does, return a usable answer.

Wed Feb 11 22:44:35 GMT 2015  Olly Betts <olly@survex.com>

        * backends/chert/chert_table.cc: mid_point() should never fail to find
          a split point, but just in case it does, return a usable answer.

Mon Feb 09 02:56:54 GMT 2015  Olly Betts <olly@survex.com>

        * api/queryinternal.cc,matcher/localsubmatch.cc,
          matcher/localsubmatch.h,matcher/queryoptimiser.h,tests/api_query.cc:
          Don't convert an unweighted term which indexes all docs to an all
          docs postlist if we need positional data for it.

Sun Jan 25 23:48:34 GMT 2015  Olly Betts <olly@survex.com>

        * configure.ac: Check for declaration of fdatasync() first, as OS X
          has a dummy implementation in the library which is not prototyped in
          any header.  Reported by Vlad Shablinsky.

Fri Jan 09 05:19:20 GMT 2015  Olly Betts <olly@survex.com>

        * backends/glass/glass_freelist.cc: Fix freelist handling to allow for
          the newly loaded first block of the freelist being already used up.

Fri Jan 09 04:38:03 GMT 2015  Olly Betts <olly@survex.com>

        * common/debuglog.cc: Add '#include "errno_to_string.h"'.

Thu Jan 08 05:59:01 GMT 2015  Olly Betts <olly@survex.com>

        * backends/glass/glass_compact.cc: Fix compaction of position tables
          for the change in key format.

Tue Jan 06 02:22:37 GMT 2015  Olly Betts <olly@survex.com>

        * HACKING: Now using automake 1.15 and libtool 2.4.4.

Mon Jan 05 08:39:47 GMT 2015  Olly Betts <olly@survex.com>

        * Makefile.am: Remove the generated .pc file on "make distclean".

Mon Jan 05 04:43:35 GMT 2015  Olly Betts <olly@survex.com>

        * backends/glass/glass_table.cc: In enter_key(), we know the insertion
          point will be the position after the current cursor position, so
          there's no need to call find_in_block() to locate it.

Mon Jan 05 04:42:17 GMT 2015  Olly Betts <olly@survex.com>

        * backends/glass/glass_table.cc: More assertions that c is valid.

Mon Jan 05 01:52:54 GMT 2015  Olly Betts <olly@survex.com>

        * backends/chert/chert_dbcheck.cc,backends/glass/glass_dbcheck.cc:
          Cross-check the position and postlist tables and report positional
          data for non-existent documents.

Mon Jan 05 01:28:28 GMT 2015  Olly Betts <olly@survex.com>

        * backends/glass/glass_dbcheck.cc: Fix decoding of positionlist keys -
          this hadn't been updated for the key format change.

Mon Jan 05 01:25:17 GMT 2015  Olly Betts <olly@survex.com>

        * backends/glass/glass_check.cc: Check that dir_end is odd.

Tue Dec 23 21:26:49 GMT 2014  Olly Betts <olly@survex.com>

        * backends/chert/chert_table.cc: More assertions about c.

Tue Dec 23 04:26:38 GMT 2014  Olly Betts <olly@survex.com>

        * backends/chert/chert_table.cc: Fix assertion to allow for c being
          DIR_START - D2 in leaf blocks.

Tue Dec 23 04:01:54 GMT 2014  Olly Betts <olly@survex.com>

        * backends/chert/chert_table.cc: Add more assertions that c has
          suitable values.

Tue Dec 23 03:58:00 GMT 2014  Olly Betts <olly@survex.com>

        * backends/chert/chert_table.cc: In enter_key(), we know the insertion
          point will be the position after the current cursor position, so
          there's no need to call find_in_block() to locate it.

Tue Dec 23 03:11:12 GMT 2014  Olly Betts <olly@survex.com>

        * backends/chert/chert_check.cc: Add check that dir_end is odd.

Mon Dec 22 23:28:54 GMT 2014  Olly Betts <olly@survex.com>

        * backends/chert/chert_table.cc: Document situations in which the
          cursor can be left pointing before DIR_START.

Mon Dec 22 03:39:14 GMT 2014  Olly Betts <olly@survex.com>

        * backends/glass/glass_freelist.cc: Add more freelist assertions.

Mon Dec 22 03:15:50 GMT 2014  Olly Betts <olly@survex.com>

        * backends/glass/glass_freelist.cc: Allow restricting the number of
          freelist entries per block by setting GLASS_FREELIST_SIZE.

Sun Dec 21 20:55:47 GMT 2014  Olly Betts <olly@survex.com>

        * include/xapian/weight.h: Document the enum stat_flags values.

Sun Dec 21 20:51:47 GMT 2014  Olly Betts <olly@survex.com>

        * include/xapian/weight.h: Fix indentation.

Sat Dec 20 10:40:44 GMT 2014  Sébastien Debrard <sebastien.debrard@gmail.com>

        * Makefile.am,configure.ac,pkgconfig/,xapian-core.spec.in: Generate a
          file for pkg-config.  (Fixes#540)

Fri Dec 19 22:30:39 GMT 2014  Olly Betts <olly@survex.com>

        * common/errno_to_string.cc: Need stdlib.h under mingw.

Fri Dec 19 04:38:56 GMT 2014  Olly Betts <olly@survex.com>

        * backends/glass/glass_check.cc: Distinguish between a block in use
          and in the freelist, and a block in the freelist more than once.

Fri Dec 19 04:37:14 GMT 2014  Olly Betts <olly@survex.com>

        * backends/glass/glass_freelist.cc,backends/glass/glass_freelist.h:
          Avoid any mutual recursion between GlassFreeList::get_block() and
          GlassFreeList::mark_block_unused().

Thu Dec 18 10:28:17 GMT 2014  Olly Betts <olly@survex.com>

        * common/safesyssocket.h: Include safeerrno.h when we use errno.

Thu Dec 18 06:17:18 GMT 2014  Olly Betts <olly@survex.com>

        * net/tcpclient.cc: Use POSIX O_NONBLOCK in preference to O_NDELAY
          which has different semantics on BSD and System V.

Wed Dec 17 02:59:54 GMT 2014  Olly Betts <olly@survex.com>

        * configure.ac: Drop probe for gethostbyaddr() - we've not used it for
          over 8.5 years (since e33972a5).

Wed Dec 17 02:33:36 GMT 2014  Olly Betts <olly@survex.com>

        * common/internaltypes.h: Take CHAR_BIT into account when choosing
          types for uint2, uint4 and uint8.

Wed Dec 17 02:30:14 GMT 2014  Olly Betts <olly@survex.com>

        * api/error.cc,backends/chert/chert_btreebase.cc,
          backends/chert/chert_table.cc,backends/flint_lock.cc,
          backends/glass/glass_table.cc,common/,configure.ac,
          net/remoteconnection.cc: Add errno_to_string() function which is
          thread-safe where a suitable alternative to strerror() exists.

Tue Dec 16 06:54:32 GMT 2014  Olly Betts <olly@survex.com>

        * configure.ac: Add missing m4 quoting.  Generated configure file is
          unchanged.

Tue Dec 16 06:28:21 GMT 2014  Olly Betts <olly@survex.com>

        * configure.ac: Don't check for strerror - it's specified by C89, and
          we weren't using the result of the check anyway.

Tue Dec 16 03:59:39 UTC 2014  Sébastien Debrard <sebastien.debrard@gmail.com>

        * api/omenquire.cc,backends/multi/multi_postlist.cc,
          tests/api_anydb.cc,tests/api_db.cc: Prefer ++x to x++.

Tue Dec 16 03:50:41 GMT 2014  Olly Betts <olly@survex.com>

        * configure.ac: Define MINGW_HAS_SECURE_API under mingw to get
          _putenv_s() declared in stdlib.h.

Sun Dec 14 09:42:01 GMT 2014  Olly Betts <olly@survex.com>

        * api/omdatabase.cc,include/xapian/database.h: Make overloaded forms of
          Database::allterms_begin() and Database::allterms_end() use default
          parameters instead.

Sat Dec 13 02:48:10 GMT 2014  Olly Betts <olly@survex.com>

        * api/error.cc,generate-exceptions,net/remoteconnection.h: On
          Windows, avoid defining EADDRINUSE, etc if they're already defined,
          and use WSAE* constants un-negated, as they start from a high value
          so won't collide with E* constants.

Fri Dec 12 03:41:02 GMT 2014  Olly Betts <olly@survex.com>

        * backends/glass/glass_freelist.cc: Avoid infinite recursion when we
          hit the end of the freelist block we're reading and the end of the
          block we're writing at the same time.

Thu Dec 11 20:45:28 GMT 2014  Olly Betts <olly@survex.com>

        * backends/glass/glass_version.cc: Use str() rather than sprintf().

Thu Dec 11 03:21:46 GMT 2014  Olly Betts <olly@survex.com>

        * net/tcpserver.cc: Fix comment.

Thu Dec 11 03:20:56 GMT 2014  Olly Betts <olly@survex.com>

        * api/compactor.cc,api/error.cc,api/replication.cc,
          backends/chert/chert_databasereplicator.cc,
          backends/chert/chert_table.cc,
          backends/glass/glass_databasereplicator.cc,
          backends/glass/glass_table.cc: Remove unnecessary includes of
          <cstdio> in files which used to need it for rename() but no longer
          do.

Fri Dec 05 11:30:05 GMT 2014  Olly Betts <olly@survex.com>

        * ChangeLog,ChangeLog.0,ChangeLog.examples,
          backends/chert/chert_btreebase.cc,backends/chert/chert_database.h,
          languages/compiler/driver.c,languages/turkish.sbl: Fix typos reported
          by Veres Lajos.

Thu Dec 04 02:17:46 GMT 2014  Olly Betts <olly@survex.com>

        * configure.ac: Fix detection of fdatasync(), which appears to have
          been broken practically forever - this means we've probably been
          using fsync() instead, which probably isn't a big additional
          overhead.

Wed Dec 03 09:38:24 GMT 2014  Olly Betts <olly@survex.com>

        * docs/Makefile.am: Quote png filenames we run through pngcrush to
          avoid problems if there's an oddly-named extra PNG file in the
          directory.

Tue Dec 02 02:58:59 GMT 2014  Olly Betts <olly@survex.com>

        * backends/chert/chert_database.cc,backends/chert/chert_database.h,
          backends/chert/chert_databasereplicator.cc,backends/,
          backends/glass/glass_compact.cc,backends/glass/glass_database.cc,
          backends/glass/glass_databasereplicator.cc,
          backends/remote/remote-database.cc,backends/remote/remote-database.h,
          include/xapian/constants.h,include/xapian/database.h,
          include/xapian/dbfactory.h,net/,tests/api_backend.cc: Add new flag
          Xapian::DB_RETRY_LOCK which allows opening a database for writing
          to wait until it can get a write lock.  (fixes#275)

Tue Dec 02 02:55:33 GMT 2014  Olly Betts <olly@survex.com>

        * backends/glass/glass_database.h: Document parameter to internal
          method

Sun Nov 30 15:55:20 GMT 2014  James Aylett <james@tartarus.org>

        * HACKING: improve OS X docs build information.

Thu Nov 27 04:00:38 GMT 2014  Olly Betts <olly@survex.com>

        * backends/dbcheck.cc,backends/flint_lock.cc,backends/flint_lock.h,
          examples/copydatabase.cc,tests/api_backend.cc: Drop support code for
          building on OS/2 with EMX - EMX was last updated in 2001 and comes
          with GCC 3.2.1, which pre-dates C++11 and we're going to require
          a compiler with good C++11 support in the near future.

Thu Nov 27 03:15:51 GMT 2014  Olly Betts <olly@survex.com>

        * HACKING: Rename svn-ci to xapian-commit (see #621).

Thu Nov 27 03:05:18 GMT 2014  Olly Betts <olly@survex.com>

        * backends/flint_lock.cc: Use F_OFD_SETLK where available, which
          avoids having to fork() a child process to hold the lock.  This
          currently requires Linux kernel >= 3.15, but it has been submitted
          to POSIX so hopefully will be widely supported eventually.  Thanks
          to Austin Clements for pointing out this now exists.

Wed Nov 26 04:03:45 GMT 2014  Olly Betts <olly@survex.com>

        * include/xapian/geospatial.h: Drop documentation of parameter which
          the method doesn't actually take.

Wed Nov 26 04:03:24 GMT 2014  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Fix incorrect parameter name in doxygen
          comment.

Wed Nov 26 03:29:28 GMT 2014  Olly Betts <olly@survex.com>

        * docs/doxygen_source.conf.in: @MAKEINDEX@ isn't substituted, so just
          use literal 'makeindex'.

Wed Nov 26 03:28:32 GMT 2014  Olly Betts <olly@survex.com>

        * docs/doxygen_api.conf.in,docs/doxygen_source.conf.in: Update to
          avoid warnings about obsolete tags from newer doxygen.

Tue Nov 25 21:13:51 GMT 2014  Olly Betts <olly@survex.com>

        * configure.ac: Update link to cygwin FAQ.

Tue Nov 25 01:55:17 GMT 2014  Olly Betts <olly@survex.com>

        * HACKING: Update details of building Xapian packages.

Tue Nov 25 01:48:44 GMT 2014  Olly Betts <olly@survex.com>

        * HACKING: Update for SVN to git migration.

Mon Nov 24 19:50:32 GMT 2014  Olly Betts <olly@survex.com>

        * NEWS,configure.ac: Update for 1.3.2.

Mon Nov 24 03:59:02 GMT 2014  Olly Betts <olly@survex.com>

        * languages/Makefile.mk: Add missing '\' at end of line in previous
          commit.

Mon Nov 24 03:14:22 GMT 2014  Olly Betts <olly@survex.com>

        * languages/: Install the stopword lists as
          ${pkgdatadir}/stopwords/LANG.list.

Sun Nov 23 23:56:02 GMT 2014  Olly Betts <olly@survex.com>

        * HACKING,INSTALL,NEWS,NEWS.SKELETON,api/compactor.cc,
          api/replication.cc,backends/Makefile.mk,backends/brass/,
          backends/databasereplicator.cc,backends/dbcheck.cc,
          backends/dbfactory.cc,backends/glass/,bin/Makefile.mk,
          common/Makefile.mk,common/pack.h,common/pretty.h,configure.ac,docs/,
          include/xapian/,net/replication_protocol.rst,tests/,tests/harness/:
          Rename 'brass' backend to 'glass'.

Sun Nov 23 22:23:00 GMT 2014  Olly Betts <olly@survex.com>

        * backends/brass/brass_freelist.cc,backends/brass/brass_freelist.h:
          Set the revision in BrassFreeList::write_block().

Thu Nov 20 21:36:35 GMT 2014  Olly Betts <olly@survex.com>

        * backends/brass/brass_freelist.h: Reset flw_appending when we unpack
          a freelist.

Thu Nov 20 21:36:15 GMT 2014  Olly Betts <olly@survex.com>

        * backends/brass/brass_freelist.cc: Fix comment typo.

Thu Nov 20 03:53:32 GMT 2014  Olly Betts <olly@survex.com>

        * backends/brass/brass_freelist.cc: Fix end-of-block condition when
          walking the freelist during database consistency checking.

Thu Nov 20 02:32:37 GMT 2014  Olly Betts <olly@survex.com>

        * backends/brass/brass_freelist.cc: Wrap comment line.

Thu Nov 20 02:31:54 GMT 2014  Olly Betts <olly@survex.com>

        * matcher/exactphrasepostlist.cc: Straighten out confusing comments.

Sun Nov 16 23:49:38 GMT 2014  Olly Betts <olly@survex.com>

        * NEWS: Update.

Thu Nov 13 20:35:25 GMT 2014  Olly Betts <olly@survex.com>

        * backends/brass/brass_freelist.cc: Wrap comment line.

Tue Nov 11 22:17:48 GMT 2014  Olly Betts <olly@survex.com>

        * api/queryinternal.cc,api/queryinternal.h: Move all the get_op()
          definitions out of the header as they're virtual and there's not
          much scope for devirtualisation.

Tue Nov 11 02:58:05 GMT 2014  Olly Betts <olly@survex.com>

        * exception_data.pm: Just have one copy of the licence boilerplate.

Sun Nov 09 22:38:04 GMT 2014  Olly Betts <olly@survex.com>

        * NEWS: Update.

Fri Nov 07 00:49:22 GMT 2014  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Sync change from upstream: "Modify the
          %nonassoc directive in lemon so that it generates a run-time error
          rather than a parsing conflict. This changes is due to a bug report
          on the mailing list. SQLite does not use the %nonassoc directive in
          its grammar so this change does not affect SQLite."  Generated code
          is identical.

Fri Nov 07 00:44:57 GMT 2014  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Sync change from upstream: "Fix harmless
          compiler warning in LEMON."  Generated code is identical.

Fri Nov 07 00:39:44 GMT 2014  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Sync change from upstream: "In LEMON, limit the
          size of the grammar file to 100MB. This ensures that the program
          will never experience integer overflow. To be doubly sure, use
          calloc() instead of malloc() when allocating arrays." Generated code
          is identical.

Fri Nov 07 00:34:26 GMT 2014  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Sync change from upstream: "Add the
          "%token_class" directive to the LEMON parser generator. This opens
          up the possibility of simplifying the parser. Also remove all calls
          to sprintf(), strcpy(), and strcat() from LEMON to avoid compiler
          warnings on OpenBSD. (Aside: It is this change to avoid harmless
          compiler warnings that was the cause of the reason spat of bugs.)"
          Generated code is identical aside from whitespace changes in
          queryparser_token.h.

Fri Nov 07 00:17:18 GMT 2014  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Sync change from upstream: "In Lemon, when
          comparing the output to the *.h file to see if it has changed, make
          sure that the proposed new output and the preexisting output are the
          same size before deciding that they are the same".  Generated code
          is identical, but this will fix misbehaviour in a build from a
          non-clean tree if new tokens get appended to queryparser_token.h.

Thu Nov 06 22:23:27 GMT 2014  Olly Betts <olly@survex.com>

        * HACKING: Now using doxygen 1.8.8.

Thu Nov 06 04:18:32 GMT 2014  Olly Betts <olly@survex.com>

        * HACKING: Now using libtool 2.4.3.

Wed Nov 05 21:38:45 GMT 2014  Olly Betts <olly@survex.com>

        * backends/chert/chert_check.cc: Handle DBCHECK_FIX for a zero sized
          .DB file.

Wed Nov 05 21:02:21 GMT 2014  Olly Betts <olly@survex.com>

        * backends/chert/chert_check.cc: After we successfully regenerate
          baseA, remove any empty baseB file to prevent it causing problems.
          Tracked down with help from Phil Hands.

Wed Nov 05 20:58:27 GMT 2014  Olly Betts <olly@survex.com>

        * backends/chert/chert_check.cc: Fix DBCHECK_FIX to be able to find a
          level 0 root block (happens when a table has sufficiently little
          data in that it all fits in one block).

Sun Nov 02 21:14:43 GMT 2014  Olly Betts <olly@survex.com>

        * docs/deprecation.rst: Fix typo.

Tue Oct 28 23:35:10 GMT 2014  Olly Betts <olly@survex.com>

        * docs/replication.rst: Fix typo.

Tue Oct 28 02:34:54 GMT 2014  Olly Betts <olly@survex.com>

        * docs/postingsource.rst: Use a modern class in postingsource example.
          (Noted by James Aylett)

Mon Oct 27 21:06:55 GMT 2014  Olly Betts <olly@survex.com>

        * docs/,net/Makefile.mk,net/remote_protocol.rst,
          net/replication_protocol.rst: Move the protocol docs for the remote
          and replication protocols into the net/ subdirectory.

Mon Oct 27 19:19:59 GMT 2014  Olly Betts <olly@survex.com>

        * Makefile.am,api/Makefile.mk,api/dir_contents,backends/Makefile.mk,
          backends/brass/Makefile.mk,backends/brass/dir_contents,
          backends/chert/Makefile.mk,backends/chert/dir_contents,
          backends/dir_contents,backends/inmemory/Makefile.mk,
          backends/inmemory/dir_contents,backends/multi/Makefile.mk,
          backends/multi/dir_contents,backends/remote/Makefile.mk,
          backends/remote/dir_contents,bin/Makefile.mk,bin/dir_contents,
          common/Makefile.mk,common/dir_contents,configure.ac,dir_contents,
          docs/,examples/Makefile.mk,examples/dir_contents,expand/Makefile.mk,
          expand/dir_contents,geospatial/Makefile.mk,geospatial/dir_contents,
          include/Makefile.mk,include/dir_contents,include/xapian/dir_contents,
          languages/Makefile.mk,languages/dir_contents,m4-macros/dir_contents,
          m4/dir_contents,matcher/Makefile.mk,matcher/dir_contents,
          net/Makefile.mk,net/dir_contents,preautoreconf,
          queryparser/Makefile.mk,queryparser/dir_contents,tests/Makefile.am,
          tests/dir_contents,tests/harness/Makefile.mk,
          tests/harness/dir_contents,tests/perftest/Makefile.mk,
          tests/perftest/dir_contents,tests/soaktest/Makefile.mk,
          tests/soaktest/dir_contents,unicode/Makefile.mk,unicode/dir_contents,
          weight/Makefile.mk,weight/dir_contents: Remove the dir_contents files
          and all the machinery to handle them.

Sat Oct 25 19:25:06 GMT 2014  Olly Betts <olly@survex.com>

        * api/query.cc,api/queryinternal.cc,api/smallvector.h,
          include/xapian/query.h: Stop using a reference where we may end up
          passing *NULL, as that's invalid.  Thanks Nick Lewycky and ubsan
          for helping track this down.
        * tests/api_postingsource.cc: Fix testsuite to avoid passing literal
          NULL - pass nullptr for C++11 and don't bother with that part of
          the testcase for older C++.

Sat Oct 25 19:05:07 GMT 2014  Olly Betts <olly@survex.com>

        * weight/dlhweight.cc,weight/dphweight.cc: Avoid dividing by zero when
          the collection size is 0.

Fri Oct 24 23:04:24 GMT 2014  Gaurav Arora <gauravarora.daiict@gmail.com>

        * api/registry.cc,include/xapian/weight.h,tests/api_backend.cc,
          tests/api_nodb.cc,tests/api_weight.cc,weight/Makefile.mk,
          weight/lmweight.cc: Add Unigram LMWeight class.

Tue Oct 21 19:19:32 GMT 2014  Olly Betts <olly@survex.com>

        * NEWS: Update for 1.2.19 release.

Mon Oct 20 00:47:32 GMT 2014  Olly Betts <olly@survex.com>

        * .gitignore,docs/.gitignore,tests/.gitignore,unicode/.gitignore:
          Update to ignore new generated files.

Sat Oct 18 06:15:52 GMT 2014  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Don't provide a default expansion scheme
          name in Enquire::set_expansion_scheme().

Fri Oct 17 00:33:55 GMT 2014  Olly Betts <olly@survex.com>

        * api/queryinternal.cc,matcher/: Split NearPostList out into separate
          source file and header.

Wed Oct 15 04:33:31 GMT 2014  Olly Betts <olly@survex.com>

        * api/queryinternal.cc,matcher/exactphrasepostlist.cc: We never try to
          build an ExactPhrasePostList over 0 or 1 terms, so simply assert we
          don't, rather than having an explicit check for it in the code.

Tue Oct 14 02:47:02 GMT 2014  Olly Betts <olly@survex.com>

        * matcher/phrasepostlist.cc,tests/api_backend.cc: If the anchor term
          for a phrase is the first or last, set the min or max to its
          position respectively.  Fixes the testcase in #657, but may not be
          a complete fix.

Sun Oct 12 12:03:10 GMT 2014  Olly Betts <olly@survex.com>

        * NEWS: Update.

Fri Oct 10 10:53:38 GMT 2014  Olly Betts <olly@survex.com>

        * backends/chert/chert_btreebase.cc,backends/chert/chert_table.cc: The
          table is sync-ed after the base file, so it's the last table we want
          to full-sync, not the last base file.

Thu Oct 09 02:39:00 GMT 2014  Olly Betts <olly@survex.com>

        * common/debuglog.h: Suppress unused typedef warnings from debugging
          logging macros, which occur in functions which always exit via
          throwing an exception.

Thu Oct 09 01:45:00 GMT 2014  Olly Betts <olly@survex.com>

        * tests/harness/fdtracker.cc: Fix code typo in recent change to skip
          apparent leaks of /dev/urandom.

Thu Oct 09 01:43:02 GMT 2014  Olly Betts <olly@survex.com>

        * common/pretty.h: Fix debug logging code to compile with clang.
          (fixes #657, reported by Germán M. Bravo)

Wed Oct 08 04:43:05 GMT 2014  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: If an empty RSet is specified, just handle it
          as if no RSet were specified.

Mon Oct 06 21:41:58 GMT 2014  Olly Betts <olly@survex.com>

        * tests/Makefile.am: Remove .replicatmp upon "make clean".

Fri Sep 19 05:31:15 GMT 2014  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Fix compilation with clang.  Reported by
          Germán M. Bravo.

Fri Sep 12 17:54:34 GMT 2014  Olly Betts <olly@survex.com>

        * docs/overview.rst: Add missing database path to example of using
          xapian-progsrv in a stub database file.

Thu Sep 11 21:33:49 GMT 2014  Olly Betts <olly@survex.com>

        * include/Makefile.mk,include/xapian/enquire.h,
          include/xapian/iterator.h: Add simple API to help with creating
          language-idiomatic iterator wrappers.

Wed Sep 10 17:02:18 GMT 2014  Olly Betts <olly@survex.com>

        * api/queryinternal.cc: If we hit an unknown query serialisation,
          report the numeric code for it in the exception thrown.

Wed Sep 10 16:59:20 GMT 2014  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Enable some disabled cases which actually
          work (in some cases with slightly tweaked expected answers which are
          equivalent to those that were shown).

Fri Sep 05 17:41:53 GMT 2014  Olly Betts <olly@survex.com>

        * tests/harness/fdtracker.cc: Don't report apparent leaks of fds
          opened on /dev/urandom - at least on Linux, something in the C
          library seems to lazily open it, and the report of a possible leak
          followed by assurance that it's OK really is just noise we could
          do without.

Fri Sep 05 14:06:08 GMT 2014  Olly Betts <olly@survex.com>

        * common/pretty.h: Add new brass-related types.

Thu Sep 04 20:51:16 GMT 2014  Olly Betts <olly@survex.com>

        * backends/dbfactory.cc: Fix incorrect return type in logging
          annotations for InMemory::open().

Thu Sep 04 20:48:37 GMT 2014  Olly Betts <olly@survex.com>

        * backends/brass/brass_database.cc,backends/chert/chert_database.cc:
          Fix logging annotations for get_freqs() to reflect that it now has
          void return type.

Thu Sep 04 20:21:32 GMT 2014  Olly Betts <olly@survex.com>

        * api/,backends/brass/,backends/chert/,backends/dbfactory_remote.cc,
          matcher/mergepostlist.cc,matcher/remotesubmatch.cc,
          net/progclient.cc: Add missing RETURN() markup for debug logging,
          highlighted by warning from recent GCC.

Thu Sep 04 18:02:38 GMT 2014  Olly Betts <olly@survex.com>

        * backends/brass/brass_freelist.cc,backends/brass/brass_freelist.h:
          Make the BrassTable parameter a const pointer.

Thu Sep 04 17:13:57 GMT 2014  Olly Betts <olly@survex.com>

        * common/io_utils.cc: Reading or writing a block will almost always
          complete in one call, so streamline that case.

Wed Sep 03 19:30:00 GMT 2014  Olly Betts <olly@survex.com>

        * common/internaltypes.h: Update comment to reflect C++11 now being
          out.

Wed Sep 03 19:29:09 GMT 2014  Olly Betts <olly@survex.com>

        * common/internaltypes.h,configure.ac: Make uint2 available.

Wed Sep 03 19:27:41 GMT 2014  Olly Betts <olly@survex.com>

        * backends/brass/brass_database.h: Remove method which is declared but
          never defined.

Wed Sep 03 18:52:40 GMT 2014  Olly Betts <olly@survex.com>

        * generate-exceptions,include/xapian/: Use XAPIAN_IN_XAPIAN_H rather
          than XAPIAN_INCLUDED_XAPIAN_H in the direct inclusion of subheader
          checks.  Currently neither will catch the case of the user including
          a sub-header after <xapian.h> since the include guard for the
          subheader will stop us getting to the direct inclusion check, but
          XAPIAN_IN_XAPIAN_H will work if we move the check outside the
          include guard.

Wed Sep 03 18:29:41 GMT 2014  Olly Betts <olly@survex.com>

        * include/xapian/constants.h: Hide internal constants from external
          users.

Tue Sep 02 14:15:50 GMT 2014  Olly Betts <olly@survex.com>

        * backends/brass/brass_spellingwordslist.h: Explicit include
          brass_cursor.h since we actually use BrassCursor here.

Mon Sep 01 22:03:11 GMT 2014  Olly Betts <olly@survex.com>

        * tests/api_backend.cc: New testcase readonlyparentdir1 to ensure that
          commit works with a read-only parent directory.

Mon Sep 01 21:51:45 GMT 2014  Olly Betts <olly@survex.com>

        * tests/harness/testrunner.h: Drop "flint" flag - flint was removed
          from trunk some time ago.

Mon Sep 01 21:42:31 GMT 2014  Olly Betts <olly@survex.com>

        * backends/brass/: Eliminate brass_doclen_t in favour of just using
          Xapian::termcount.

Mon Sep 01 21:28:39 GMT 2014  Olly Betts <olly@survex.com>

        * backends/brass/brass_check.h: Tweak to ease upcoming big merge.

Mon Sep 01 20:59:40 GMT 2014  Olly Betts <olly@survex.com>

        * backends/brass/,backends/dbcheck.cc: Only create a btree entry for
          the document data if it is non-empty.  The table is now lazily
          created, so won't exist if no documents have document data set.

Mon Sep 01 16:54:44 GMT 2014  Olly Betts <olly@survex.com>

        * backends/brass/brass_record.cc,backends/brass/brass_record.h: Remove
          BrassRecordTable::get_doccount() as it is no longer used.

Mon Sep 01 16:51:04 GMT 2014  Olly Betts <olly@survex.com>

        * backends/brass/: Track doccount in the database stats.

Mon Sep 01 16:27:15 GMT 2014  Olly Betts <olly@survex.com>

        * backends/brass/brass_database.cc: Update comment and exception
          message not to talk about "consistent state", as that was to do
          with the base files.

Mon Sep 01 14:57:02 GMT 2014  Olly Betts <olly@survex.com>

        * backends/brass/brass_database.cc: Explicitly include brass_defs.h.

Mon Sep 01 14:48:01 GMT 2014  Olly Betts <olly@survex.com>

        * backends/brass/: Eliminate backends/brass/brass_types.h.

Fri Aug 29 21:06:22 GMT 2014  Olly Betts <olly@survex.com>

        * backends/dbcheck.cc: Fix checking a single brass table.

Thu Aug 28 16:04:59 GMT 2014  Olly Betts <olly@survex.com>

        * backends/brass/brass_check.cc,backends/chert/chert_check.cc,
          bin/xapian-check.cc,include/xapian/constants.h: Rename
          DBCHECK_SHOW_BITMAP to DBCHECK_SHOW_FREELIST.

Tue Aug 26 22:31:32 GMT 2014  Olly Betts <olly@survex.com>

        * NEWS: Update.

Fri Aug 22 09:09:52 GMT 2014  Gaurav Arora <gauravarora.daiict@gmail.com>

        * api/,backends/brass/,backends/chert/,
          backends/contiguousalldocspostlist.cc,
          backends/contiguousalldocspostlist.h,backends/database.h,
          backends/inmemory/inmemory_database.cc,
          backends/inmemory/inmemory_database.h,
          backends/multi/multi_postlist.cc,backends/multi/multi_postlist.h,
          backends/remote/,common/remoteprotocol.h,docs/sorting.rst,
          include/xapian/database.h,include/xapian/postingiterator.h,
          include/xapian/weight.h,matcher/,net/remoteserver.cc,
          net/remoteserver.h,tests/,weight/: Provide the number of distinct
          terms in the document to weighting schemes.  The current
          implementation for the disk-based backends is a bit inefficient as
          it has to look at the termlist table entry for the document.

Thu Aug 21 12:29:57 GMT 2014  Olly Betts <olly@survex.com>

        * weight/weight.cc: Add missing parameter to debug logging for
          Weight::init_().

Tue Aug 19 14:25:39 GMT 2014  Olly Betts <olly@survex.com>

        * backends/brass/brass_table.h: Don't sync handles for tables which
          aren't open.  Reported by Austin Clements.

Fri Aug 15 13:13:43 GMT 2014  Olly Betts <olly@survex.com>

        * HACKING: freecode no longer accepts updates, so drop that item from
          the release checklist.

Wed Aug 13 23:55:24 GMT 2014  Olly Betts <olly@survex.com>

        * backends/chert/chert_btreebase.cc,backends/chert/chert_table.cc:
          Only full sync the final base file written.

Mon Aug 11 05:30:20 GMT 2014  Olly Betts <olly@survex.com>

        * configure.ac: For Sun's C++ compiler, pass -library=Crun separately
          since libtool looks for " -library=stlport4 " (with the spaces).
          (fixes#650)

Mon Aug 11 03:00:15 GMT 2014  Olly Betts <olly@survex.com>

        * configure.ac: Rename XAPIAN_TEST_CXXFLAGS_ to XAPIAN_TEST_CXXFLAGS
          (since the latter is never used) and make it take a variable to
          add the flags to.  Also, fix it to restore CXXFLAGS correctly if
          the success case contains "break".

Wed Aug 06 10:49:46 GMT 2014  Olly Betts <olly@survex.com>

        * include/xapian/compactor.h: Fix formatting of doxygen comment.

Wed Aug 06 10:49:20 GMT 2014  Olly Betts <olly@survex.com>

        * include/xapian/constants.h: Whitespace tweak.

Wed Aug 06 10:08:09 GMT 2014  Olly Betts <olly@survex.com>

        * backends/brass/brass_version.cc,common/io_utils.h,
          include/xapian/constants.h: Add DB_FULL_SYNC flag - if this is set
          for a database, we use the Mac OS X F_FULL_SYNC instead of
          fdatasync()/fsync()/etc on the version file when committing.

Mon Aug 04 05:58:13 GMT 2014  Olly Betts <olly@survex.com>

        * backends/brass/brass_compact.cc: Whitespace tweak.

Mon Aug 04 05:57:27 GMT 2014  Olly Betts <olly@survex.com>

        * backends/brass/brass_compact.cc: When compacting, sync all the
          tables together at the end.

Mon Aug 04 05:42:21 GMT 2014  Olly Betts <olly@survex.com>

        * backends/brass/brass_compact.cc,backends/brass/brass_version.cc:
          Clean up temporary file in BrassVersion::sync() in all failure
          cases.

Mon Aug 04 05:21:02 GMT 2014  Olly Betts <olly@survex.com>

        * backends/brass/: In DB_DANGEROUS mode, update the version file
          in-place.

Fri Aug 01 02:49:57 GMT 2014  Olly Betts <olly@survex.com>

        * backends/brass/brass_compact.cc: Lock the target database while
          we're compacting to it, which has the side effect of creating the
          'flintlock' file there.

Fri Aug 01 02:35:35 GMT 2014  Olly Betts <olly@survex.com>

        * include/xapian/visibility.h: Add link to GCC Visibility wiki page.

Thu Jul 31 02:54:40 GMT 2014  Olly Betts <olly@survex.com>

        * tests/api_weight.cc,weight/bb2weight.cc: Avoid calculating logs of 0
          or negative values by clamping the normalise wdf to at most one less
          than the collection frequency, and the collection size to at least
          2.

Thu Jul 31 02:48:35 GMT 2014  Olly Betts <olly@survex.com>

        * tests/api_weight.cc,weight/bb2weight.cc: Fix upper bound for
          BB2Weight to not be scaled twice by wqf and factor.

Wed Jul 30 05:48:46 GMT 2014  Olly Betts <olly@survex.com>

        * weight/bb2weight.cc: Fix comment typo, and capitalise "Stirling" in
          comments.

Wed Jul 30 05:47:31 GMT 2014  Olly Betts <olly@survex.com>

        * weight/bb2weight.cc: Whitespace cleanup.

Wed Jul 30 05:43:59 GMT 2014  Aarsh Shah <aarshkshah1992@gmail.com>

        * include/xapian/weight.h,weight/bb2weight.cc: Optimise BB2Weight and
          fix incorrect upper bound in some cases.

Tue Jul 29 07:20:57 GMT 2014  Olly Betts <olly@survex.com>

        * backends/brass/brass_version.cc: Remove assertion that table sizes
          are all the same, and redundant assertion that the unserialised
          blocksize is >= 2048.  Fixes set-but-not-used warning in
          non-assertion build.

Mon Jul 28 06:35:45 GMT 2014  Olly Betts <olly@survex.com>

        * backends/brass/brass_databasereplicator.cc,
          backends/brass/brass_databasereplicator.h,
          backends/brass/brass_table.cc: Replace enum table_id with enum
          Brass::table_type.

Mon Jul 28 04:28:12 GMT 2014  Olly Betts <olly@survex.com>

        * NEWS: Note the freelist implementation fixed #40.

Mon Jul 28 04:26:07 GMT 2014  Olly Betts <olly@survex.com>

        * api/compactor.cc,backends/brass/,backends/dbcheck.cc,
          tests/api_wrdb.cc: Eliminate the base files, and instead store the
          root block and freelist pointers in the "iambrass" file.

Mon Jul 28 03:22:22 GMT 2014  Olly Betts <olly@survex.com>

        * backends/brass/brass_databasereplicator.cc: Remove variable which is
          set but never used.

Sun Jul 27 01:56:58 GMT 2014  Olly Betts <olly@survex.com>

        * backends/dbcheck.cc: Don't try to write output when no output stream
          is specified in the case where the database open fails and so we
          can't check changes files.

Thu Jul 24 21:12:23 GMT 2014  Olly Betts <olly@survex.com>

        * NEWS: Update.

Fri Jul 11 10:44:48 GMT 2014  Olly Betts <olly@survex.com>

        * weight/bm25weight.cc: Improve BM25 upper bound in the case when our
          wdf upper bound > our document length lower bound.  Thanks to
          Craig Macdonald for pointing out this trick.

Thu Jul 10 13:29:50 GMT 2014  Olly Betts <olly@survex.com>

        * weight/bm25weight.cc: Pre-multiply termweight by (param_k1 + 1).

Sat Jun 28 11:00:49 GMT 2014  Olly Betts <olly@survex.com>

        * languages/Makefile.mk: Sort the stop.list files (since loading a
          sorted list is likely to be more efficient) and remove any duplicate
          entries.

Sat Jun 28 10:48:03 GMT 2014  Olly Betts <olly@survex.com>

        * languages/stopwords/finnish/stop.txt,
          languages/stopwords/norwegian/stop.txt: Remove duplicate entries.

Sat Jun 28 10:38:56 GMT 2014  Olly Betts <olly@survex.com>

        * languages/stopwords/russian/stop.txt: Convert from KOI8-R to UTF-8.

Mon Jun 23 02:26:24 GMT 2014  Olly Betts <olly@survex.com>

        * configure.ac: configure.ac: Add hints for which package to install
          for rst2html

Mon Jun 23 00:54:05 GMT 2014  Olly Betts <olly@survex.com>

        * configure.ac: Use AS_MKDIR_P instead of test -d || mkdir.

Sun Jun 22 07:32:11 GMT 2014  Olly Betts <olly@survex.com>

        * NEWS: Update.

Sat Jun 21 03:45:19 GMT 2014  Olly Betts <olly@survex.com>

        * docs/Makefile.am: Use $(MKDIR_P) instead of test -d || mkdir 3
          times.

Sat Jun 21 03:44:37 GMT 2014  Olly Betts <olly@survex.com>

        * languages/Makefile.mk: Generate the directories for the minimised
          stopword files in a VPATH build.

Tue Jun 17 13:36:40 GMT 2014  Assem Chelli <assem.ch@gmail.com>

        * include/xapian/queryparser.h: Add the example of initializing
          SimpleStopper using a file as a doccomment.

Tue Jun 17 13:30:09 GMT 2014  Olly Betts <olly@survex.com>

        * languages/Makefile.mk: Remove trailing whitespace (some of which
          breaks the parsing to get the lists of source files to pass to
          doxygen).

Tue Jun 17 13:24:59 GMT 2014  Assem Chelli <assem.ch@gmail.com>

        * languages/: Add stopwords lists from Snowball plus an Arabic one.

Tue Jun 17 11:48:12 GMT 2014  Olly Betts <olly@survex.com>

        * weight/dlhweight.cc: Fix comment typo.

Tue Jun 17 11:46:40 GMT 2014  Aarsh Shah <aarshkshah1992@gmail.com>

        * weight/dlhweight.cc: Improve the upper bound on DLH ~3-4 times.

Tue Jun 17 11:32:22 GMT 2014  Aarsh Shah <aarshkshah1992@gmail.com>

        * include/xapian/weight.h,weight/dphweight.cc: Combine factor into
          constants calculated in init().  Improve get_maxpart() a little
          in the (common) case where the wdf upper bound is less than half
          the document length upper bound.

Tue Jun 17 03:42:36 GMT 2014  Olly Betts <olly@survex.com>

        * tests/api_unicode.cc,unicode/UnicodeData-README.txt,
          unicode/UnicodeData.txt: Update to Unicode 7.0.0.

Mon Jun 16 14:13:18 GMT 2014  Aarsh Shah <aarshkshah1992@gmail.com>

        * weight/dphweight.cc: Improved upper bound for DPH.

Mon Jun 16 13:58:24 GMT 2014  Aarsh Shah <aarshkshah1992@gmail.com>

        * include/xapian/weight.h,weight/ifb2weight.cc,weight/ineb2weight.cc,
          weight/inl2weight.cc: Include 'factor' in the constants we calculate
          in init_().

Mon Jun 16 13:53:05 GMT 2014  Aarsh Shah <aarshkshah1992@gmail.com>

        * include/xapian/weight.h,weight/dlhweight.cc: DLH optimization.

Mon Jun 16 13:02:24 GMT 2014  Olly Betts <olly@survex.com>

        * HACKING: Need python3-sphinx to generate docs for python3.

Mon Jun 16 12:37:13 GMT 2014  Assem Chelli <assem.ch@gmail.com>

        * HACKING: Note sphinx-doc now needed (for Python bindings API docs).

Mon Jun 16 05:35:03 GMT 2014  Olly Betts <olly@survex.com>

        * HACKING,configure.ac,docs/Makefile.am,docs/doxygen_api.conf.in:
          Don't build, ship or install PDF versions of the API docs by
          default, but provide an easy way for people to build it for
          themselves if they want it.

Mon Jun 16 04:20:40 GMT 2014  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: Improve the descriptions of the
          stem_strategy values.  (Reported by "oilap" on #xapian)

Fri Jun 13 07:52:53 GMT 2014  Olly Betts <olly@survex.com>

        * weight/dphweight.cc: Fix some comment typos.

Fri Jun 13 07:47:32 GMT 2014  Aarsh Shah <aarshkshah1992@gmail.com>

        * include/xapian/weight.h,weight/dphweight.cc: Optimized DPH code.

Fri Jun 13 01:39:07 GMT 2014  Olly Betts <olly@survex.com>

        * examples/quest.cc: Fix ordering of "bm25" and "bool" in allegedly
          sorted list, so that --weight bm25 and --weight bool work.

Thu Jun 12 13:49:19 GMT 2014  Olly Betts <olly@survex.com>

        * matcher/extraweightpostlist.h: Add an assertion that get_sumextra()
          returns a weight contribution which is <= the upper bound which
          get_maxextra() returns.

Thu Jun 12 13:30:55 GMT 2014  Olly Betts <olly@survex.com>

        * api/leafpostlist.cc,matcher/synonympostlist.cc: Add assertions that
          get_sumpart() returns a weight contribution which is <= the upper
          bound which get_maxpart() returns.

Wed Jun 11 05:34:16 GMT 2014  Olly Betts <olly@survex.com>

        * languages/hungarian.sbl: Fix incorrect Unicode codepoints for
          o-double-acute and u-double-acute in Hungarian Snowball stemmer.
          Reported by Tom Lane to snowball-discuss.

Tue Jun 10 10:59:18 GMT 2014  Aarsh Shah <aarshkshah1992@gmail.com>

        * include/xapian/weight.h,weight/ineb2weight.cc: Optimized IneB2:
          Reduced number of calculations in get_sumpart and tightened upper
          bound.

Tue Jun 10 10:23:09 GMT 2014  Olly Betts <olly@survex.com>

        * weight/ineb2weight.cc: Fix closing brace indentation.

Tue Jun 10 09:58:18 GMT 2014  Olly Betts <olly@survex.com>

        * examples/quest.cc: Rework the weight name lookup to use a table like
          the other lookups.  Change the weight names not to include "weight".

Tue Jun 10 08:15:18 GMT 2014  Aarsh Shah <aarshkshah1992@gmail.com>

        * include/xapian/weight.h,weight/ifb2weight.cc: Optimized
          upper bound and weighting formula in IfB2Weight.

Tue Jun 10 05:34:52 GMT 2014  Aarsh Shah <aarshkshah1992@gmail.com>

        * include/xapian/weight.h,weight/inl2weight.cc: Optimized
          upper bound and weighting formula in InL2Weight.

Tue Jun 10 05:09:08 GMT 2014  Olly Betts <olly@survex.com>

        * examples/quest.cc: Add --weight option to allow the weighting scheme
          to be specified.

Thu Jun 05 03:42:51 GMT 2014  Olly Betts <olly@survex.com>

        * api/omdatabase.cc,tests/api_backend.cc: Fix
          Database::get_wdf_upper_bound("") not to fail with an assertion.

Tue Jun 03 22:59:10 GMT 2014  Olly Betts <olly@survex.com>

        * matcher/localsubmatch.cc: Use RETURN() instead of return in methods
          with LOGCALL annotations.

Mon Jun 02 13:15:36 GMT 2014  Olly Betts <olly@survex.com>

        * docs/Makefile.am: Actually ship, process and install geospatial.rst.

Mon Jun 02 11:40:27 GMT 2014  Olly Betts <olly@survex.com>

        * languages/Makefile.mk: Ship collate-sbl script.

Thu May 29 12:13:06 GMT 2014  Olly Betts <olly@survex.com>

        * HACKING: Replace a link to the outdated autotools "goat book" with a
          link to the "Portable Shell" chapter of the autoconf manual.

Thu May 29 03:31:10 GMT 2014  Olly Betts <olly@survex.com>

        * api/snipper.cc,api/snipperinternal.h,include/xapian/snipper.h: Allow
          the user to specify how long a snippet they want.  Only add "..." if
          the sample was actually truncated.

Wed May 28 12:52:26 GMT 2014  Olly Betts <olly@survex.com>

        * include/xapian/snipper.h: Add the standard guards to prevent user
          code from including this header directly.

Tue May 27 04:19:12 GMT 2014  Olly Betts <olly@survex.com>

        * include/Makefile.mk: Ship include/xapian/snipper.h in tarball.

Tue May 27 04:03:09 GMT 2014  Olly Betts <olly@survex.com>

        * api/snipper.cc,include/xapian/snipper.h,
          tests/generate-api_generated: Add missing assignment operator to
          Xapian::Snipper class.

Tue May 27 03:43:03 GMT 2014  Olly Betts <olly@survex.com>

        * include/xapian/snipper.h: Add missing doxygen comments.

Tue May 27 03:41:08 GMT 2014  Olly Betts <olly@survex.com>

        * include/xapian/snipper.h,tests/api_snipper.cc: Whitespace tweaks.

Tue May 27 03:36:19 GMT 2014  Olly Betts <olly@survex.com>

        * api/snipper.cc,include/xapian/snipper.h,tests/api_snipper.cc: Remove
          getters for obtaining info about the relevance model, and instead
          add a get_description() method which includes all such info in the
          returned description.

Tue May 27 03:06:36 GMT 2014  Olly Betts <olly@survex.com>

        * api/snipper.cc: Use an iterator instead of subscripting.

Tue May 27 03:03:33 GMT 2014  Olly Betts <olly@survex.com>

        * api/snipper.cc,api/snipperinternal.h,include/xapian/snipper.h: Use
          appropriate named types rather than "int" or "unsigned int".

Tue May 27 03:02:48 GMT 2014  Olly Betts <olly@survex.com>

        * api/snipperinternal.h: Remove constants which are no longer used.

Tue May 27 02:48:44 GMT 2014  Olly Betts <olly@survex.com>

        * api/snipper.cc,api/snipperinternal.h,include/xapian/snipper.h:
          Rework Snipper methods set_smoothing_coef() and set_window_size() as
          optional parameters of generate_snippet().

Tue May 27 02:33:39 GMT 2014  Olly Betts <olly@survex.com>

        * api/snipper.cc,api/snipperinternal.h: Just pass rm_docno through to
          Snipper::Internal::calculate_rm() as a parameter rather than storing
          it in a member variable.

Tue May 27 02:25:41 GMT 2014  Olly Betts <olly@survex.com>

        * api/snipper.cc: Use clear() method to empty a container.

Tue May 27 02:22:37 GMT 2014  Olly Betts <olly@survex.com>

        * tests/api_snipper.cc: Drop unused <algorithm>.

Tue May 27 02:21:53 GMT 2014  Olly Betts <olly@survex.com>

        * api/snipper.cc: Eliminate ret_value variable.

Tue May 27 02:20:25 GMT 2014  Olly Betts <olly@survex.com>

        * api/snipper.cc: Avoid unnecessary substr operations.

Tue May 27 02:17:32 GMT 2014  Olly Betts <olly@survex.com>

        * api/snipper.cc: Prefer ++i to i++ in loops.

Tue May 27 02:16:14 GMT 2014  Olly Betts <olly@survex.com>

        * api/snipper.cc: Use TermIterator::positionlist_count().

Tue May 27 02:14:52 GMT 2014  Olly Betts <olly@survex.com>

        * api/snipper.cc,api/snipperinternal.h,include/xapian/snipper.h: Fix
          typos in comments and variable names in new snipper code.

Tue May 27 02:13:09 GMT 2014  Olly Betts <olly@survex.com>

        * tests/Makefile.am: Hook up new Snipper API tests to actually be
          used.

Tue May 27 02:09:49 GMT 2014  Mihai Bivol <mm.bivol@gmail.com>

        * tests/api_snipper.cc: Add Snipper API tests.

Tue May 27 02:04:26 GMT 2014  Olly Betts <olly@survex.com>

        * api/snipper.cc: Add missing #include <config.h>.

Tue May 27 02:00:32 GMT 2014  Mihai Bivol <mm.bivol@gmail.com>

        * api/Makefile.mk,api/snipper.cc,api/snipperinternal.h,
          include/xapian.h,include/xapian/snipper.h: Add Xapian::Snipper
          class.

Mon May 26 05:52:22 GMT 2014  Olly Betts <olly@survex.com>

        * api/omdatabase.cc,backends/brass/brass_postlist.h,
          backends/chert/chert_postlist.h,backends/database.h: Fix comment
          typos.

Fri May 23 11:59:26 GMT 2014  Olly Betts <olly@survex.com>

        * api/matchspy.cc: Pass std::string by const reference.

Thu May 22 06:31:12 GMT 2014  Olly Betts <olly@survex.com>

        * matcher/localsubmatch.cc: Fix the check for a term which matches all
          documents to use the sub-db termfreq, not the combined db termfreq.

Thu May 22 06:00:47 GMT 2014  Olly Betts <olly@survex.com>

        * matcher/localsubmatch.cc: If a term matches all documents and its
          weight doesn't depend on its wdf, we can optimise it to MatchAll
          (the previous requirement that maxpart == 0 was unnecessarily
          strict).

Thu May 22 05:52:15 GMT 2014  Olly Betts <olly@survex.com>

        * matcher/localsubmatch.cc,tests/api_percentages.cc: When we optimise
          a postlist for a term which matches all documents to use MatchAll,
          we still need to set a weight object on it to get percentages
          calculated correctly.

Thu May 22 04:08:35 GMT 2014  Olly Betts <olly@survex.com>

        * api/queryinternal.cc,matcher/localsubmatch.cc,
          matcher/localsubmatch.h,matcher/queryoptimiser.h: Refactor to group
          most of the code to create a postlist for a term and set its weight
          into one place.

Mon May 19 00:08:04 GMT 2014  Olly Betts <olly@survex.com>

        * backends/brass/brass_freelist.cc,tests/api_backend.cc: When we start
          to write a new freelist block, set the revision on the old one we
          write out correctly, and don't "-1" out the next block pointer
          before we write out the block in this case.  New regression testcase
          newfreelistblock1.
        * backends/brass/brass_freelist.cc: Add assertions that the freelist
          block has a next pointer when fl_end is a different block to fl.

Fri May 16 04:35:21 GMT 2014  Olly Betts <olly@survex.com>

        * backends/brass/brass_freelist.h: Fix BrassFreeList::swap() to also
          swap the flw_appending members.

Thu May 15 12:51:15 GMT 2014  Olly Betts <olly@survex.com>

        * HACKING: Add checking config/config.* are up to date to the
          release checklist.

Thu May 15 12:47:28 GMT 2014  Olly Betts <olly@survex.com>

        * HACKING: Now using automake 1.14.1 to bootstrap snapshots and
          1.3.x releases.

Wed May 14 03:18:37 GMT 2014  Olly Betts <olly@survex.com>

        * api/queryinternal.cc: Only serialise parameter where it is actually
          used.

Fri May 09 01:56:48 GMT 2014  Olly Betts <olly@survex.com>

        * HACKING: Now using doxygen 1.8.7 to bootstrap tarballs.

Mon May 05 05:37:32 GMT 2014  Olly Betts <olly@survex.com>

        * backends/chert/chert_check.cc,backends/chert/chert_dbcheck.cc,
          backends/dbcheck.cc: Improve DBCHECK_FIX - if fixing a whole
          database, we now take the revision from the first table we
          successfully look at, which should be correct in most cases,
          and is definitely better than trying to determine the revision
          of each broken table independently.

Fri May 02 02:36:05 GMT 2014  Olly Betts <olly@survex.com>

        * matcher/valuestreamdocument.cc,matcher/valuestreamdocument.h: Put
          the docid in the sub-database into the ValueStreamDocument object as
          that's what Xapian::Document::get_docid() is documented to return.
          (fixes#636, reported by Jeff Rand).

Thu May 01 13:25:35 GMT 2014  Olly Betts <olly@survex.com>

        * api/omdatabase.cc,include/xapian/database.h,
          matcher/valuestreamdocument.cc: Eliminate
          Database::get_document_lazily_() completely.

Thu May 01 11:48:00 GMT 2014  Olly Betts <olly@survex.com>

        * backends/database.cc,backends/slowvaluelist.cc,
          backends/slowvaluelist.h: Don't wrap the subdatabase object in a
          Xapian::Database for SlowValueList, which mean we can just call
          open_document(did, true) on it instead of having to use
          Xapian::Database::get_document_lazily_().

Wed Apr 30 00:31:52 GMT 2014  Olly Betts <olly@survex.com>

        * api/omdatabase.cc: Explicitly '#include <algorithm>' for std::max(),
          fixing build with VS2013.  (fixes#641)

Tue Apr 29 04:28:06 GMT 2014  Olly Betts <olly@survex.com>

        * common/append_filename_arg.h,net/remoteconnection.h: Comment tweaks.

Tue Apr 29 04:26:26 GMT 2014  Olly Betts <olly@survex.com>

        * tests/harness/unixcmds.cc: Drop code supporting Microsoft Windows 9x
          which reached EOL in 2006.

Thu Apr 17 05:06:21 GMT 2014  Olly Betts <olly@survex.com>

        * common/autoptr.h: Under C++11, use unique_ptr for AutoPtr.

Wed Apr 09 22:16:37 GMT 2014  Olly Betts <olly@survex.com>

        * api/documentterm.h,api/omdocument.cc: Don't store the termname in
          OmDocumentTerm - we were only using it in get_description() output
          and an exception message.  Speeds up indexing etext.txt using
          simpleindex by 0.4%, and should reduce memory usage a bit too.
          (Change inspired by comments from Vishesh Handa on xapian-devel).

Wed Apr 09 05:17:58 GMT 2014  Olly Betts <olly@survex.com>

        * backends/brass/brass_btreebase.cc,backends/brass/brass_table.cc:
          Remove comment references to using bitmaps for freespace tracking.

Tue Apr 08 04:20:00 GMT 2014  Olly Betts <olly@survex.com>

        * bin/xapian-delve.cc: Add -A <prefix> option to list all terms with
          a particular prefix.

Mon Apr 07 05:45:06 GMT 2014  Olly Betts <olly@survex.com>

        * api/omdatabase.cc,backends/brass/,backends/chert/,
          backends/database.cc,backends/database.h,
          backends/inmemory/inmemory_database.cc,
          backends/inmemory/inmemory_database.h,
          backends/remote/remote-database.cc,backends/remote/remote-database.h,
          common/remoteprotocol.h,matcher/const_database_wrapper.cc,
          matcher/const_database_wrapper.h,net/remoteserver.cc,
          net/remoteserver.h,weight/weightinternal.cc: Fetch termfreq and
          collection frequency in a single call - shaves ~0.3% off a test
          search.

Thu Apr 03 23:40:45 GMT 2014  Olly Betts <olly@survex.com>

        * net/serialise.cc,weight/weightinternal.h: Make Weight::Internal
          track if any max_part values are set, so we don't need to
          serialise them when they've not been set.

Thu Apr 03 05:50:13 GMT 2014  Olly Betts <olly@survex.com>

        * weight/weightinternal.cc: Enhance
          Weight::Internal::get_description() to report TermFreqs.

Thu Apr 03 05:46:44 GMT 2014  Olly Betts <olly@survex.com>

        * api/omenquire.cc,api/omenquireinternal.h,common/submatch.h,matcher/,
          net/remoteserver.cc,net/serialise.cc,weight/weight.cc,
          weight/weightinternal.cc,weight/weightinternal.h: Eliminate the
          map<string, TermFreqAndWeight> in MSet::Internal, and instead just
          preserve the Weight::Internal object there as that holds all the
          information we need.

Thu Apr 03 04:40:09 GMT 2014  Olly Betts <olly@survex.com>

        * backends/remote/remote-database.cc,net/remoteserver.cc,
          net/serialise.cc,net/serialise.h: Avoid returning
          Xapian::Weight::Internal by value from unserialise_stats().

Tue Apr 01 22:41:16 GMT 2014  Olly Betts <olly@survex.com>

        * matcher/localsubmatch.cc,weight/weight.cc,weight/weightinternal.cc,
          weight/weightinternal.h: Replace Weight::Internal methods to get
          termfreq, reltermfreq and colltermfreq with a single inlined
          get_stats() method, which only needs to search the map once.
          Shaves ~1.6% off the time to do a wildcard query with a lot of
          terms.

Tue Apr 01 22:11:52 GMT 2014  Olly Betts <olly@survex.com>

        * matcher/localsubmatch.cc: Don't refetch the termfreq if we already
          have it.

Sun Mar 30 22:54:22 GMT 2014  Anish Kanchan <anishgkanchan@gmail.com>

        * include/xapian/termgenerator.h: Make TermGenerator flags an
          anonymous enum, and typedef TermGenerator::flags to int for backward
          compatibility with existing user code which uses it.  (fixes #616)

Thu Mar 27 05:45:14 GMT 2014  Liu Chi <liuchi09@gmail.com>

        * include/xapian/stem.h,languages/Makefile.mk,
          languages/earlyenglish.sbl,languages/stem.cc,tests/api_stem.cc:
          Add an early english stemmer.

Wed Mar 19 02:42:00 GMT 2014  Olly Betts <olly@survex.com>

        * weight/weightinternal.cc: Fix comment typo.

Fri Mar 14 09:53:22 GMT 2014  Olly Betts <olly@survex.com>

        * HACKING: MacTeX seems to be the best option if using homebrew.

Fri Mar 07 23:17:43 GMT 2014  Olly Betts <olly@survex.com>

        * matcher/maxpostlist.cc: More fixes for --enable.log.

Fri Mar 07 23:01:45 GMT 2014  Olly Betts <olly@survex.com>

        * matcher/maxpostlist.cc: Fix compilation error with --enable-log on.
          Reported by Anurag Soni.

Fri Mar 07 00:39:11 GMT 2014  Olly Betts <olly@survex.com>

        * HACKING: Fix typo and RST markup.

Fri Mar 07 00:21:16 GMT 2014  VcamX <vcamx3@gmail.com>

        * HACKING: Note packages to install from homebrew on Mac OS X.

Fri Mar 07 00:17:01 GMT 2014  VcamX <vcamx3@gmail.com>

        * backends/dbcheck.cc,common/pack.h: Fix warnings with clang 5.0.

Tue Mar 04 04:25:11 GMT 2014  Olly Betts <olly@survex.com>

        * api/queryinternal.cc,api/queryinternal.h: Only simplify OP_SYNONYM
          with a single subquery if that subquery is a term or MatchAll.

Tue Mar 04 04:12:58 GMT 2014  Olly Betts <olly@survex.com>

        * tests/api_none.cc: Test OPs with a single MatchAll subquery.

Mon Mar 03 22:59:55 GMT 2014  Mayank Chaudhary <mayankchaudhary.iitr@gmail.com>

        * docs/Makefile.am,docs/bm25.rst,docs/intro_ir.rst: Convert equations
          in rst docs to use LaTeX via the math role and directive.

Fri Feb 28 06:12:36 GMT 2014  Olly Betts <olly@survex.com>

        * backends/brass/brass_positionlist.h,
          backends/chert/chert_positionlist.h: Remove next_internal() methods
          which were declared but not defined or used (left-overs from flint).
          Reported by "Hurricane Tong".

Wed Feb 26 01:33:50 GMT 2014  Olly Betts <olly@survex.com>

        * api/query.cc,api/queryinternal.cc,api/queryinternal.h,
          examples/quest.cc,include/xapian/query.h,matcher/Makefile.mk,
          matcher/maxpostlist.cc,matcher/maxpostlist.h,
          queryparser/queryparser.cc,tests/api_none.cc,tests/api_opsynonym.cc:
          Implement new OP_MAX query operator, which returns the maximum
          weight of any of its subqueries.  (see #360)

Wed Feb 26 00:48:23 GMT 2014  Olly Betts <olly@survex.com>

        * matcher/localsubmatch.cc,matcher/synonympostlist.cc,
          matcher/synonympostlist.h: In SynonymPostList, avoid fetching the
          doclength if the weighting scheme doesn't need it and the calculated
          wdf for the synonym in <= doclength_lower_bound for the current
          subdatabase.  (fixes #360)

Wed Feb 26 00:12:22 GMT 2014  Olly Betts <olly@survex.com>

        * backends/brass/brass_changes.cc: Fix compilation without
          --enable-assertions.

Tue Feb 25 02:33:14 GMT 2014  Olly Betts <olly@survex.com>

        * examples/quest.cc: Add --default-op option.

Tue Feb 25 01:56:34 GMT 2014  Olly Betts <olly@survex.com>

        * examples/quest.cc: Whitespace tweak.

Mon Feb 24 06:33:37 GMT 2014  Olly Betts <olly@survex.com>

        * tests/api_opsynonym.cc: Refactor symonym1 so that the test data is
          specified by an array, rather than built up by code, so that the
          actual testcases can be more easily seen.

Sun Feb 23 01:22:56 GMT 2014  Olly Betts <olly@survex.com>

        * common/bitstream.cc,common/bitstream.h: Add comments to better
          document BitReader and BitWriter. (fixes#252)

Sun Feb 23 00:35:17 GMT 2014  Olly Betts <olly@survex.com>

        * HACKING: Stop trying to explicitly list compilers which support
          __builtin_expect (LLVM does too, others may as well).

Fri Feb 21 01:34:59 GMT 2014  Olly Betts <olly@survex.com>

        * backends/brass/,backends/dbcheck.cc,common/,
          docs/replication_protocol.rst,tests/api_backend.cc,
          tests/api_replicate.cc: Keep track of unused blocks in the Btrees
          using freelists rather than bitmaps.

Fri Feb 21 01:21:45 GMT 2014  Olly Betts <olly@survex.com>

        * tests/api_wrdb.cc: Expand crashrecovery1 to check that the expected
          base files exist and ones which shouldn't exist don't.

Thu Feb 20 00:34:47 GMT 2014  Olly Betts <olly@survex.com>

        * HACKING: makeindex is now in Debian package texlive-binaries.

Wed Feb 19 06:50:58 GMT 2014  Olly Betts <olly@survex.com>

        * docs/sorting.rst: Fix incorrect parameter types in Xapian::Weight
          subclass example.

Tue Feb 18 23:34:19 GMT 2014  Olly Betts <olly@survex.com>

        * api/replication.cc: Fix conditional for enabling replication code
          - if chert is disabled but brass isn't, we should still enable it.

Tue Feb 18 01:33:28 GMT 2014  Olly Betts <olly@survex.com>

        * tests/api_replicate.cc: Move comment to in front of the function it
          is actually talking about.

Sun Feb 16 04:53:57 GMT 2014  Olly Betts <olly@survex.com>

        * xapian-config.in: Add some missing shell quoting identified by
          shellcheck.

Sun Feb 16 00:53:01 GMT 2014  Olly Betts <olly@survex.com>

        * docs/quickstart.rst: Split --cxxflags and --libs for portability
          (noted by "Hurricane Tong" on xapian-devel).

Sat Feb 15 04:59:37 GMT 2014  Olly Betts <olly@survex.com>

        * docs/glossary.rst: Add definition of "collection frequency".

Fri Feb 14 22:24:26 GMT 2014  Olly Betts <olly@survex.com>

        * NEWS: Update.

Fri Jan 17 03:50:44 GMT 2014  Olly Betts <olly@survex.com>

        * backends/brass/brass_databasereplicator.cc,
          backends/brass/brass_table.cc,
          backends/chert/chert_databasereplicator.cc,
          backends/chert/chert_table.cc,common/io_utils.cc,common/io_utils.h:
          Add io_read_block() and io_write_block() as wrappers around pread()
          and pwrite() (or lseek() plus read() and lseek() plus write()).

Sat Jan 11 06:32:19 GMT 2014  Olly Betts <olly@survex.com>

        * configure.ac: Sun C++ seems to explicitly need Crun now.

Sat Jan 11 02:23:06 GMT 2014  Olly Betts <olly@survex.com>

        * configure.ac: Fix checks for Sun C++.

Fri Jan 10 22:38:01 GMT 2014  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: timer_create() doesn't handle CLOCK_MONOTONIC
          on Solaris, so use CLOCK_REALTIME there instead.

Fri Jan 10 11:22:37 GMT 2014  Olly Betts <olly@survex.com>

        * configure.ac: Improve handling of Sun's C++ compiler - trick libtool
          into not adding -library=Cstd, and prefer -library=stdcxx4 if
          supported.

Fri Jan 10 11:16:15 GMT 2014  Olly Betts <olly@survex.com>

        * configure.ac: Add XAPIAN_TEST_CXXFLAGS macro, and use it to check
          the flags to cxx actually work.

Fri Jan 10 10:56:17 GMT 2014  Olly Betts <olly@survex.com>

        * configure.ac: Apply missing functional part of previous change.

Fri Jan 10 10:46:53 GMT 2014  Olly Betts <olly@survex.com>

        * configure.ac: Avoid using grep -e as /usr/bin/grep on Solaris
          doesn't support it.

Fri Jan 10 03:30:10 GMT 2014  Olly Betts <olly@survex.com>

        * backends/brass/brass_databasereplicator.cc: Whitespace tweak.

Thu Jan 09 11:06:05 GMT 2014  Olly Betts <olly@survex.com>

        * backends/brass/brass_cursor.h,backends/brass/brass_database.cc,
          backends/chert/chert_database.cc,
          backends/chert/chert_databasereplicator.cc,
          backends/inmemory/inmemory_database.h,common/log2.h,
          common/realtime.h,matcher/multimatch.cc,weight/pl2weight.cc,
          weight/tradweight.cc: Fix compilations issues with Sun's C++
          compiler (mostly missing library headers).

Thu Jan 09 06:00:03 GMT 2014  Olly Betts <olly@survex.com>

        * backends/dbcheck.cc: Skip absent lazily created tables in the case
          where out == NULL too.

Thu Jan 09 05:31:40 GMT 2014  Olly Betts <olly@survex.com>

        * tests/api_wrdb.cc: Use Xapian::Database::check() in cursordelbug1.
          (partly addresses #238)

Thu Jan 09 05:30:45 GMT 2014  Olly Betts <olly@survex.com>

        * include/xapian/database.h: Make second and third parameters to
          Xapian::Database::check() optional, defaulting to a quiet check.

Thu Jan 09 02:52:54 GMT 2014  Olly Betts <olly@survex.com>

        * backends/brass/,backends/chert/,backends/dbcheck.cc,
          bin/xapian-check.cc,include/xapian/database.h: Alter
          Database::check() to take its "out" parameter as a pointer to
          std::ostream instead of a reference, and make passing NULL means "do
          not produce output".  Remove the form without the "out" parameter,
          which used to mean "send output to stdout" - if you want this, just
          pass "&std::cout" in.

Thu Jan 09 01:50:14 GMT 2014  Olly Betts <olly@survex.com>

        * include/xapian/database.h: OS X SDK check() macro takes one
          argument, so there's no need to protect check() methods with
          more than one argument.
        * include/xapian/valueiterator.h: Protect the one check() method in
          our API which does take one argument.

Wed Jan 08 11:48:58 GMT 2014  Olly Betts <olly@survex.com>

        * api/smallvector.cc,api/smallvector.h: Include cstddef rather than
          cstring for std::size_t, as it's a simpler header.  Don't assume
          size_t will be available unqualified.  Add SmallVector::size_type
          typedef.

Mon Jan 06 11:54:53 GMT 2014  Olly Betts <olly@survex.com>

        * net/progclient.cc: Fix xlC warning.

Mon Jan 06 00:31:19 GMT 2014  Olly Betts <olly@survex.com>

        * backends/brass/brass_table.cc,backends/chert/chert_table.cc:
          Validate dir_end when reading a block.  (fixes #592)

Wed Jan 01 01:20:46 GMT 2014  Olly Betts <olly@survex.com>

        * docs/Makefile.am: Fix handling of MAINTAINER_NO_DOCS.

Mon Dec 30 05:33:59 GMT 2013  Olly Betts <olly@survex.com>

        * tests/api_unicode.cc: Add regression test for incorrect results
          from Unicode::tolower() for 4 code points (U+01C5, U+01C8, U+01CB,
          U+01F2) with Xapian 1.2.16 and earlier.

Sun Dec 29 05:46:14 GMT 2013  Olly Betts <olly@survex.com>

        * docs/postingsource.rst: Clarify a couple of points (reported by
          "vHanda" on IRC).

Tue Dec 24 02:00:26 GMT 2013  Olly Betts <olly@survex.com>

        * tests/Makefile.am,tests/perftest/Makefile.mk: Actually use
          @NO_INSTALL@.

Tue Dec 24 01:59:05 GMT 2013  Olly Betts <olly@survex.com>

        * configure.ac: Use -no-fast-install on platforms where -no-install
          causes libtool to emit a warning.

Mon Dec 23 04:17:35 GMT 2013  Olly Betts <olly@survex.com>

        * HACKING: Drop note about needing git-svn if you're using git -
          bootstrap now only uses git-svn if your Xapian tree was checked out
          using git-svn.

Mon Dec 23 04:16:58 GMT 2013  Olly Betts <olly@survex.com>

        * HACKING: Note that Tcl is now needed to generate
          unicode/unicode-data.cc.

Mon Dec 23 04:01:05 GMT 2013  Olly Betts <olly@survex.com>

        * tests/api_unicode.cc: Add a test that a character due to be added in
          Unicode 7.0.0 is categorised as "unassigned".

Mon Dec 23 03:50:37 GMT 2013  Olly Betts <olly@survex.com>

        * unicode/Makefile.mk,unicode/uniParse.tcl: Adjust to not need a
          symlink.  Give the generated file a new name, since the "tcl" prefix
          doesn't make much sense here, and it avoids issues with
          transitioning from a file in version control to one which is
          generated.

Mon Dec 23 03:32:40 GMT 2013  Olly Betts <olly@survex.com>

        * unicode/: Add the source data file and scripts to generate
          tclUniData.cc.

Mon Dec 23 02:20:57 GMT 2013  Olly Betts <olly@survex.com>

        * NEWS: Update from ChangeLog.

Mon Dec 23 01:04:26 GMT 2013  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Note that 1.2.17 is required for the
          correct sense of the reverse parameter to Enquire methods
          set_sort_by_relevance_then_value() and
          set_sort_by_relevance_then_key().

Mon Dec 23 00:30:53 GMT 2013  Olly Betts <olly@survex.com>

        * backends/brass/brass_btreebase.cc: Fix comment documenting what's in
          the base file (the sequential flag was missing).

Fri Dec 20 03:47:56 GMT 2013  Olly Betts <olly@survex.com>

        * backends/brass/brass_termlisttable.h,include/xapian/constants.h,
          tests/api_backend.cc: Add Xapian::DB_NO_TERMLIST flag to allow
          creating a database without a termlist (see #181).

Fri Dec 20 03:04:51 GMT 2013  Olly Betts <olly@survex.com>

        * include/xapian/unicode.h,unicode/tclUniData.cc: Update Unicode
          character database to 6.3.0.
        * tests/api_unicode.cc: Add tests for U+061C, added in 6.3.0.

Fri Dec 20 00:20:01 GMT 2013  Olly Betts <olly@survex.com>

        * backends/dbfactory.cc: Clear any backend flag passed in before
          passing the flags when opening stub databases, fixing test failure
          in replicate1 caused by recent change adding
          Xapian::DB_BACKEND_STUB.

Thu Dec 19 23:11:32 GMT 2013  Olly Betts <olly@survex.com>

        * tests/api_backend.cc: Simplify database creation in testcase
          blocksize1.

Thu Dec 19 23:10:37 GMT 2013  Olly Betts <olly@survex.com>

        * backends/dbfactory.cc: Tweak conditionals around $XAPIAN_PREFER_BRASS
          check.

Thu Dec 19 23:09:30 GMT 2013  Olly Betts <olly@survex.com>

        * api/replication.cc,backends/dbfactory.cc,docs/deprecation.rst,
          docs/overview.rst,include/xapian/constants.h,
          include/xapian/dbfactory.h,tests/api_backend.cc,tests/api_db.cc:
          Add Xapian::DB_BACKEND_STUB and deprecate Xapian::Auto::open_stub().

Thu Dec 19 06:46:15 GMT 2013  Olly Betts <olly@survex.com>

        * docs/deprecation.rst: Update example version to a more recent one.

Thu Dec 19 04:01:31 GMT 2013  Olly Betts <olly@survex.com>

        * docs/deprecation.rst,include/xapian/dbfactory.h,tests/api_db.cc,
          tests/harness/: Deprecate Xapian::Brass::open() and
          Xapian::Chert::open() in favour of the new Xapian::DB_BACKEND_BRASS
          and Xapian::DB_BACKEND_CHERT flags.

Thu Dec 19 01:17:02 GMT 2013  Olly Betts <olly@survex.com>

        * api/compactor.cc,backends/brass/,backends/chert/chert_database.cc,
          backends/chert/chert_database.h,backends/database.h,
          backends/dbcheck.cc,backends/dbfactory.cc,include/xapian/constants.h,
          include/xapian/database.h,include/xapian/dbfactory.h: Add flags
          which can be bitwise OR-ed into the second argument when opening a
          writable datase: DB_NO_SYNC (to disable use of fsync, etc) and
          DB_DANGEROUS (to enable in-place updates).  WritableDatabase
          can now be constructed from just a filename (defaulting to opening
          the database with DB_CREATE_OR_OPEN).

Thu Dec 19 00:11:26 GMT 2013  Olly Betts <olly@survex.com>

        * tests/harness/backendmanager_multi.cc: Fix comment typo.

Wed Dec 18 23:52:49 GMT 2013  Olly Betts <olly@survex.com>

        * backends/brass/brass_table.cc,backends/chert/chert_table.cc,
          tests/api_backend.cc: Fix handling of invalid block sizes - the
          size gets fixed as documented, but the uncorrected size was passed
          to the base file.  Also, abort() was called on 0.

Wed Dec 18 22:48:18 GMT 2013  Olly Betts <olly@survex.com>

        * api/replication.cc,backends/brass/brass_check.cc,
          backends/brass/brass_database.cc,backends/chert/chert_check.cc,
          backends/chert/chert_database.cc,backends/database.h,
          backends/dbcheck.cc,bin/xapian-tcpsrv.cc,include/Makefile.mk,
          include/xapian.h,include/xapian/database.h,net/remoteserver.cc:
          Move Xapian::DB_* and Xapian:DBCHECK_* constants into
          xapian/constants.h.

Wed Dec 18 22:30:23 GMT 2013  Olly Betts <olly@survex.com>

        * backends/brass/brass_database.cc,backends/chert/chert_database.cc:
          Include xapian/*.h with "" not <> inside the library.

Wed Dec 18 22:17:15 GMT 2013  Olly Betts <olly@survex.com>

        * backends/brass/brass_compact.cc,backends/chert/chert_compact.cc:
          Include only the needed xapian/*.h headers (rather than xapian.h) to
          reduce inter-file dependencies within the library.

Wed Dec 18 03:24:22 GMT 2013  Olly Betts <olly@survex.com>

        * tests/runtest.in: Report if a test is being run under eatmydata,
          like we do for running under valgrind.

Wed Dec 18 02:43:47 GMT 2013  Olly Betts <olly@survex.com>

        * backends/brass/brass_version.h,backends/chert/chert_version.h:
          Comment out unused set_uuid() and set_uuid_string() methods - they
          may be useful in future, but we aren't currently using them.  Also
          make set_uuid() take a const pointer.

Wed Dec 18 02:40:18 GMT 2013  Olly Betts <olly@survex.com>

        * HACKING,configure.ac,tests/runtest.in: Automatically probe for and
          hook in eatmydata to the testsuite using the wrapper script it now
          includes.

Wed Dec 18 01:21:07 GMT 2013  Olly Betts <olly@survex.com>

        * HACKING: Update website update info.

Sat Dec 14 06:01:33 GMT 2013  Olly Betts <olly@survex.com>

        * weight/dlhweight.cc,weight/dphweight.cc: Whitespace tweak.

Fri Dec 13 21:06:28 GMT 2013  Olly Betts <olly@survex.com>

        * backends/brass/brass_cursor.cc,backends/brass/brass_cursor.h,
          backends/brass/brass_table.cc: Reference count blocks in the
          btree cursor, so cursors can cheaply share blocks.  This can
          significantly reduce the amount of memory used for cursors
          for queries which contain a lot of terms (e.g. wildcards which
          expand to a lot of terms).

Thu Dec 12 22:37:22 GMT 2013  Olly Betts <olly@survex.com>

        * backends/brass/brass_btreebase.cc: Add assertions that we don't read
          beyond the end of the freespace bitmap.

Thu Dec 12 22:25:04 GMT 2013  Olly Betts <olly@survex.com>

        * matcher/msetcmp.cc: Fix sense of reverse parameter to
          Enquire::set_sort_by_relevance_then_value.  Reported by "boomboo" on
          IRC.
        * tests/api_db.cc: Fix testcase sortrel1.

Thu Dec 12 19:47:46 GMT 2013  Olly Betts <olly@survex.com>

        * backends/brass/: Make Brass::Cursor members n and p private.

Thu Dec 12 19:46:23 GMT 2013  Olly Betts <olly@survex.com>

        * backends/brass/brass_check.cc,backends/brass/brass_table.cc: Add
          const to a few pointers we only read through.

Thu Dec 12 09:04:13 GMT 2013  Olly Betts <olly@survex.com>

        * configure.ac: Improve reporting of GCC version.

Thu Dec 12 09:01:26 GMT 2013  Olly Betts <olly@survex.com>

        * tests/api_query.cc,unicode/description_append.cc: Escape \x7f in
          object descriptions.

Wed Dec 11 23:40:37 GMT 2013  Olly Betts <olly@survex.com>

        * api/leafpostlist.cc,api/leafpostlist.h,backends/brass/,
          matcher/localsubmatch.cc,matcher/localsubmatch.h,
          matcher/queryoptimiser.h: Under brass, optimise the turning of a
          query into a postlist to copy the cursor blocks for the previous
          term's postlist.  This is particularly effective for wildcard
          queries which expand to a lot of terms.

Wed Dec 11 22:05:34 GMT 2013  Olly Betts <olly@survex.com>

        * backends/brass/brass_postlist.h: We don't have a
          BrassModifiedPostList class, so we don't need protected members in
          BrassPostList for it to use.

Wed Dec 11 04:46:58 GMT 2013  Olly Betts <olly@survex.com>

        * weight/bm25weight.cc: Fix case where (k1 == 0 || b == 0) but k2 != 0.
          Reported by "boomboo" on IRC.
        * tests/api_weight.cc: Add regression test bm25weight5.

Wed Dec 04 05:44:29 GMT 2013  Olly Betts <olly@survex.com>

        * NEWS: Update from 1.2.16 and ChangeLog.

Mon Dec 02 02:34:43 GMT 2013  Olly Betts <olly@survex.com>

        * configure.ac: Clarify version of MSVCRT which we require for mingw.

Fri Nov 29 04:21:46 GMT 2013  Olly Betts <olly@survex.com>

        * configure.ac: Fix typo in previous commit.

Fri Nov 29 03:48:24 GMT 2013  Olly Betts <olly@survex.com>

        * configure.ac: Report GCC version.

Wed Nov 27 04:06:32 GMT 2013  Olly Betts <olly@survex.com>

        * Backport change from brass:
        * backends/chert/chert_table.cc: Check if the block we want is in the
          internal cursor for a read-only table too - it isn't needed for
          correctness in this case, but it is more efficient not to reload a
          block which we already have.

Sun Nov 24 23:05:37 GMT 2013  Olly Betts <olly@survex.com>

        * NEWS: Update from ChangeLog.

Fri Nov 22 20:18:43 GMT 2013  Olly Betts <olly@survex.com>

        * backends/brass/brass_databasereplicator.cc,
          backends/brass/brass_databasereplicator.h: compression_stream.h
          isn't used in brass_databasereplicator.h, so move include to
          brass_databasereplicator.cc.

Fri Nov 22 01:22:32 GMT 2013  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Minor tweak to structuring of tests
          in check_infix().

Sat Nov 09 08:51:27 GMT 2013  Olly Betts <olly@survex.com>

        * backends/brass/brass_table.cc: Check if the block we want is in the
          internal cursor for a read-only table too - it isn't needed for
          correctness in this case, but it is more efficient not to reload a
          block which we already have.

Sat Nov 09 08:48:02 GMT 2013  Olly Betts <olly@survex.com>

        * backends/brass/: Use a separate cursor for each position list - now
          we're ordering the position B-tree by term first, phrase matching was
          causing the cursor to cycle between disparate areas of the B-tree,
          and it would have to reread the same blocks over and over.

Fri Nov 08 09:57:52 GMT 2013  Olly Betts <olly@survex.com>

        * backends/brass/brass_table.cc,backends/chert/chert_table.cc: Add
          check for the database being closed in read_block(), which fixes
          pythontest.py testcase valuemods.

Fri Nov 08 08:58:48 GMT 2013  Olly Betts <olly@survex.com>

        * api/maptermlist.h,api/termlist.cc,api/termlist.h,backends/brass/:
          Avoid two vector copies when storing term positions in most common
          cases.

Fri Nov 08 08:57:07 GMT 2013  Olly Betts <olly@survex.com>

        * configure.ac: Bump LIBRARY_VERSION_INFO.

Thu Nov 07 16:14:23 GMT 2013  Olly Betts <olly@survex.com>

        * backends/brass/brass_database.cc,
          backends/brass/brass_positionlist.cc,
          backends/brass/brass_positionlist.h: There's no need to pass around
          an end PositionIterator, and it's actually slightly more efficient
          not to.

Thu Nov 07 16:11:27 GMT 2013  Olly Betts <olly@survex.com>

        * backends/brass/: Batch up positionlist changes in memory and write
          them out in key order.

Thu Nov 07 15:30:48 GMT 2013  Olly Betts <olly@survex.com>

        * backends/brass/brass_positionlist.h,backends/brass/brass_version.cc:
          Change positionlist keys to be ordered by term first rather than
          docid first, which helps phrase searching significantly.

Wed Nov 06 17:12:29 GMT 2013  Olly Betts <olly@survex.com>

        * backends/brass/brass_values.cc,backends/brass/brass_values.h,
          backends/chert/chert_values.cc,backends/chert/chert_values.h: Reuse
          a cursor for reading values from valuestreams rather than creating
          a new one each time.  This can dramatically reduce the number of
          blocks redundantly reread when sorting by value.  The rereads will
          generally get served from VM cache, but there's still an overhead
          to that.

Tue Nov 05 16:28:08 GMT 2013  Olly Betts <olly@survex.com>

        * api/query.cc,api/queryinternal.cc,api/queryinternal.h,
          include/xapian/query.h,tests/api_query.cc: Having a separate 'type'
          enum seems to just make for clumsier code, so merged the LEAF_*
          values into the 'op' enum, add LEAF_MATCH_ALL and LEAF_MATCH_NOTHING
          and return when appropriate, and add test coverage.

Tue Nov 05 15:20:15 GMT 2013  Olly Betts <olly@survex.com>

        * api/query.cc,api/queryinternal.cc,api/queryinternal.h,
          include/xapian/query.h: Add methods to allow introspection on
          Query objects - currently you can read the type/operator, how many
          subqueries there are, and get a particular subquery.  For a
          query which is a term, Query::get_terms_begin() allows you to
          get read the term.  (see #159)

Mon Nov 04 19:06:38 GMT 2013  Olly Betts <olly@survex.com>

        * examples/quest.cc: Add --check-at-least option to quest.

Thu Oct 24 04:38:52 GMT 2013  Olly Betts <olly@survex.com>

        * configure.ac,tests/soaktest/soaktest.cc: If srandom() and random()
          aren't available, use srand() and rand() instead.

Thu Oct 24 02:34:06 GMT 2013  Olly Betts <olly@survex.com>

        * common/safewindows.h: Define WINVER to 0x0500 if not otherwise set,
          so we get new interfaces like MEMORYSTATUSEX under mingw.

Thu Oct 24 02:11:36 GMT 2013  Olly Betts <olly@survex.com>

        * tests/harness/backendmanager_remotetcp.cc: Need cstdlib for free
          under mingw.

Thu Oct 24 02:11:05 GMT 2013  Olly Betts <olly@survex.com>

        * configure.ac,tests/api_replicate.cc,tests/queryparsertest.cc,
          tests/termgentest.cc: Probe for _putenv_s() in configure as mingw
          doesn't provide it.

Thu Oct 24 01:23:14 GMT 2013  Olly Betts <olly@survex.com>

        * configure.ac: Don't unset CC as it's used by libtool under mingw.

Thu Oct 24 01:17:07 GMT 2013  Olly Betts <olly@survex.com>

        * net/tcpserver.cc: Fix mingw build error.

Thu Oct 24 01:00:18 GMT 2013  Olly Betts <olly@survex.com>

        * common/omassert.h: Suppress "unused local typedef" warnings from
          GCC 4.8.

Wed Oct 23 20:00:05 GMT 2013  Olly Betts <olly@survex.com>

        * common/realtime.h: Rework RealTime::to_timeval() under __WIN32__ to
          avoid having to pull in safewinsock2.h,

Wed Oct 23 12:39:53 GMT 2013  Olly Betts <olly@survex.com>

        * common/realtime.h: Under __WIN32__, we need safewinsock2.h for
          struct timeval.

Wed Oct 23 10:21:02 GMT 2013  Olly Betts <olly@survex.com>

        * common/omassert.h: If the compiler supports C++11, use
          static_assert to implement CompileTimeAssert.

Wed Oct 23 10:02:50 GMT 2013  Olly Betts <olly@survex.com>

        * common/realtime.h,net/tcpclient.cc: Fix mingw build errors.

Wed Oct 23 09:50:00 GMT 2013  Olly Betts <olly@survex.com>

        * common/win32_uuid.cc: Fix mingw compiler warning.

Wed Oct 23 04:19:05 GMT 2013  jiangwen jiang <jiangwen127@gmail.com>

        * api/omdocument.cc,api/query.cc: Add more LOGCALL annotations.

Tue Oct 22 03:09:48 GMT 2013  Olly Betts <olly@survex.com>

        * HACKING: Note we now use doxygen 1.8.5 for 1.3.x snapshots and
          releases.

Mon Oct 21 01:55:48 GMT 2013  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Sync change from upstream: "Fix a harmless
          compiler warning in lemon.c."  Generated code is identical, at least
          on x86-64 Debian wheezy.

Mon Oct 21 01:52:12 GMT 2013  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Sync change from upstream: "In the lemon parser
          generator, change all hashes to unsigned to avoid potential problems
          with signed integer overflow."  Generated code is identical, at
          least on x86-64 Debian wheezy.

Sat Oct 19 06:38:48 GMT 2013  Olly Betts <olly@survex.com>

        * backends/flint_lock.cc: Under cygwin, use cygwin_conv_path() if
          using a new enough cygwin version, rather than the now deprecated
          cygwin_conv_to_win32_path().  Reported by "Haroogan" on the
          xapian-devel mailing list.

Sat Oct 19 00:36:06 GMT 2013  Olly Betts <olly@survex.com>

        * configure.ac: Simplify test for uuid_unparse_lower().  (see #626)

Sat Oct 19 00:21:37 GMT 2013  Olly Betts <olly@survex.com>

        * Makefile.am,configure.ac: Split XAPIAN_LIBS out of XAPIAN_LDFLAGS.
          (fixes#626)

Fri Oct 18 11:51:40 GMT 2013  Olly Betts <olly@survex.com>

        * geospatial/geoencode.cc: Use lround() instead of round(), since we
          want the result as an int.  GCC 4.4.3 seems to optimise to use
          lround() anyway, but other compilers may not.

Fri Oct 18 11:44:10 GMT 2013  Olly Betts <olly@survex.com>

        * geospatial/geoencode.cc: Include <math.h> for round() (fixes #628).

Tue Oct 15 03:16:04 GMT 2013  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h,include/xapian/unicode.h: Mark internal
          methods which are public for implementation convenience as
          "@private" for doxygen where they weren't already.

Mon Oct 14 09:45:13 GMT 2013  Olly Betts <olly@survex.com>

        * include/xapian.h: Mark vinfo struct and get_vinfo_() function as
          @private for doxygen.

Thu Oct 10 10:36:45 GMT 2013  Olly Betts <olly@survex.com>

        * include/xapian/: Methods and functions which take a string to
          unserialise now consistently call that parameter "serialised".

Mon Oct 07 04:08:14 GMT 2013  Olly Betts <olly@survex.com>

        * tests/zlib-vg.c: Fix two warnings when compiled with clang.

Fri Oct 04 19:46:16 GMT 2013  Olly Betts <olly@survex.com>

        * backends/brass/brass_check.cc,backends/chert/chert_check.cc: Correct
          failure message which talks above the root block when it's actually
          testing a leaf key.

Fri Oct 04 04:51:39 GMT 2013  Olly Betts <olly@survex.com>

        * backends/brass/brass_check.cc,backends/chert/chert_check.cc: Escape
          invalid UTF-8 data in keys and tags reported by xapian-check, using
          the same code we use to clean up string in object descriptions.

Fri Oct 04 04:50:52 GMT 2013  Olly Betts <olly@survex.com>

        * backends/brass/brass_check.cc,backends/chert/chert_check.cc: Fix
          xapian-check to report block numbers correctly for links within the
          B-tree.

Thu Oct 03 07:35:44 GMT 2013  Olly Betts <olly@survex.com>

        * backends/brass/brass_dbcheck.cc,backends/chert/chert_dbcheck.cc: If
          the METAINFO key is missing, only report it once per table.

Sat Sep 28 09:27:51 GMT 2013  Olly Betts <olly@survex.com>

        * include/xapian.h: Hide struct vinfo and get_vinfo_() from SWIG and
          doxygen.

Sat Sep 28 06:25:44 GMT 2013  Olly Betts <olly@survex.com>

        * api/version.cc,include/xapian.h: Reimplement version functions to
          use a single function in libxapian which returns a pointer to a
          static const struct containing the version information, with inline
          wrappers in the API header which call this.  This means we only need
          one relocation instead of 4.
        * tests/api_none.cc: New testcase version1 to provide coverage for the
          version API functions.

Fri Sep 27 22:53:15 GMT 2013  Olly Betts <olly@survex.com>

        * api/omenquire.cc,include/xapian/enquire.h,tests/api_anydb.cc: Fix
          backwards compatibility get_eset() wrapper to allow for the optional
          parameters which were supported before.  Also, just inline it from
          the API header.

Fri Sep 27 11:19:50 GMT 2013  Aarsh Shah <aarshkshah1992@gmail.com>

        * api/omenquire.cc,api/omenquireinternal.h,expand/,
          include/xapian/enquire.h,tests/api_anydb.cc: Add support for the Bo1
          query expansion scheme.

Thu Sep 26 04:11:49 GMT 2013  Olly Betts <olly@survex.com>

        * tests/api_weight.cc: Don't pass integer arguments to log() to avoid
          ambiguity errors with some compilers.  (fixes #627)

Thu Sep 26 02:02:24 GMT 2013  Olly Betts <olly@survex.com>

        * backends/brass/,backends/chert/,backends/dbcheck.cc: Fix database
          consistency checking to always open all the tables at the same
          revision, which could lead to false errors being reported after
          a commit interrupted by the process being killed or the machine
          crashing.  Reported by Joey Hess in https://bugs.debian.org/724610

Wed Sep 25 02:21:29 GMT 2013  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Add testcase for FieldProcessor on boolean
          prefix with quoted contents.

Wed Sep 25 02:16:55 GMT 2013  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Fix comment typo.

Wed Sep 25 02:13:20 GMT 2013  Olly Betts <olly@survex.com>

        * api/: Split QueryVector into a template SmallVector class and then
          'typedef SmallVector<Query> QueryVector;', as it would be good to
          use the same approach for Database internals.

Tue Sep 24 09:59:05 GMT 2013  Olly Betts <olly@survex.com>

        * .gitignore,xapian-core.spec.in: Update two references to .tar.gz
          files.

Tue Sep 24 09:54:42 GMT 2013  Olly Betts <olly@survex.com>

        * docs/install.rst: Fix typo (bogus extra 'and');

Tue Sep 24 09:54:01 GMT 2013  Olly Betts <olly@survex.com>

        * configure.ac,docs/install.rst: Compress source tarballs with xz
          instead of gzip.

Mon Sep 23 12:58:23 GMT 2013  Olly Betts <olly@survex.com>

        * common/realtime.h,configure.ac,matcher/multimatch.cc: Implement
          RealTime::sleep() using nanosleep() where it's available, since
          it has a simpler API and a finer granularity than select().

Mon Sep 23 12:27:37 GMT 2013  Olly Betts <olly@survex.com>

        * common/realtime.h,net/remoteconnection.cc,net/tcpclient.cc: Add
          RealTime::to_timeval() helper function to break a time interval
          as a double into a struct timeval.  This uses modf() which gives
          more compact and faster code than using fmod() as we previously
          did.

Mon Sep 23 08:20:03 GMT 2013  Olly Betts <olly@survex.com>

        * common/realtime.h,configure.ac: Use clock_gettime() to implement
          RealTime::now() where it's available.

Mon Sep 16 11:53:28 GMT 2013  Olly Betts <olly@survex.com>

        * api/,backends/brass/brass_postlist.cc,
          backends/remote/net_postlist.cc,backends/slowvaluelist.cc,
          expand/esetinternal.cc,include/xapian/unicode.h,
          matcher/valuegepostlist.cc,matcher/valuerangepostlist.cc,
          tests/api_query.cc,tests/queryparsertest.cc,unicode/: Fix all
          get_description() methods to always return UTF-8 text.  (fixes #620)

Mon Sep 16 11:47:16 GMT 2013  Olly Betts <olly@survex.com>

        * include/xapian/unicode.h: Document how Utf8Iterator handles invalid
          UTF-8.

Mon Sep 16 11:19:48 GMT 2013  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Add test coverage for explicit synonym of
          a term with a prefix (e.g. ~foo:search).

Fri Sep 06 07:11:29 GMT 2013  Olly Betts <olly@survex.com>

        * api/valueiterator.cc,tests/api_backend.cc: Don't segfault is
          skip_to() or check() are called on a ValueIterator which is already
          at_end().

Fri Sep 06 06:52:49 GMT 2013  Olly Betts <olly@survex.com>

        * api/positioniterator.cc,api/postingiterator.cc,api/termiterator.cc,
          tests/api_backend.cc: Don't segfault if skip_to() is called on an
          iterator which is already at_end().  Reported by David Bremner.

Wed Sep 04 04:52:50 GMT 2013  Olly Betts <olly@survex.com>

        * weight/weightinternal.cc: TermFreqs now tracks collection frequency,
          so make TermFreqs::get_description() report it.

Thu Aug 29 01:30:45 GMT 2013  Olly Betts <olly@survex.com>

        * matcher/andmaybepostlist.cc,matcher/multiandpostlist.h: Fix
          assertion failure for when an OrPostList decays to an AndPostList
          - the ordering of the subqueries by estimated termfreq may not be
          the same as it was when the OrPostList was constructed, as the
          subqueries may themselves have decayed.  Reported by Michel
          Pelletier.

Fri Aug 23 03:17:33 GMT 2013  Olly Betts <olly@survex.com>

        * m4-macros/xapian-1.3.m4: Handle empty or unset XAPIAN_CONFIG
          correctly.

Mon Jul 15 12:01:17 GMT 2013  Aarsh Shah <aarshkshah1992@gmail.com>

        * api/registry.cc,include/xapian/weight.h,tests/api_nodb.cc,
          tests/api_weight.cc,weight/Makefile.mk,weight/dphweight.cc: Add an
          implementation of DfR weighting scheme DPH.

Sun Jul 14 07:39:37 GMT 2013  Olly Betts <olly@survex.com>

        * include/xapian/weight.h,weight/pl2weight.cc: Optimise PL2Weight to
          only calculate 2 logs per call to get_sumpart() instead of 4 by
          precalculating three document-independent values in init().

Sun Jul 14 07:04:52 GMT 2013  Aarsh Shah <aarshkshah1992@gmail.com>

        * api/registry.cc,include/xapian/weight.h,tests/api_nodb.cc,
          tests/api_weight.cc,weight/Makefile.mk,weight/pl2weight.cc: Add an
          implementation of DfR weighting scheme PL2.

Sat Jul 13 11:24:20 GMT 2013  Aarsh Shah <aarshkshah1992@gmail.com>

        * weight/tfidfweight.cc: Explicitly cast argument of log() to double,
          as xlC doesn't manage to chose an overloaded form to call otherwise.

Sat Jul 13 07:29:25 GMT 2013  Aarsh Shah <aarshkshah1992@gmail.com>

        * include/xapian/weight.h,tests/api_weight.cc,
          tests/generate-api_generated,weight/: Fix new weighting schemes to
          work with OP_SCALE_WEIGHT.

Wed Jul 10 12:57:01 GMT 2013  Aarsh Shah <aarshkshah1992@gmail.com>

        * api/registry.cc,include/xapian/weight.h,tests/api_nodb.cc,
          tests/api_weight.cc,weight/Makefile.mk,weight/dlhweight.cc: Add an
          implementation of DfR weighting scheme DLH.

Wed Jul 10 07:38:15 GMT 2013  Aarsh Shah <aarshkshah1992@gmail.com>

        * expand/expandweight.h: Track collection_freq and totlen restricted
          to the RSet in preparation for supporting DfR query expansion
          schemes.

Mon Jul 08 06:27:05 GMT 2013  Olly Betts <olly@survex.com>

        * weight/Makefile.mk: Normalise whitespace in BB2 change.

Sun Jul 07 12:29:48 GMT 2013  Olly Betts <olly@survex.com>

        * weight/bb2weight.cc: New file for BB2Weight which I failed to
          commit.

Sun Jul 07 11:51:45 GMT 2013  Aarsh Shah <aarshkshah1992@gmail.com>

        * api/registry.cc,include/xapian/weight.h,tests/api_nodb.cc,
          tests/api_weight.cc,weight/Makefile.mk: Add implementation of DfR
          weighting scheme BB2.

Sat Jul 06 02:07:13 GMT 2013  Olly Betts <olly@survex.com>

        * api/omdatabase.cc: Fix add_document() to always use exactly the next
          docid after get_lastdocid() in the multidatabase case.

Fri Jul 05 06:19:55 GMT 2013  Olly Betts <olly@survex.com>

        * backends/dbfactory.cc: Allow open a stub database containing
          multiple subdatabases as a WritableDatabase.

Thu Jul 04 06:29:56 GMT 2013  Olly Betts <olly@survex.com>

        * tests/harness/backendmanager.cc,tests/harness/index_utils.cc,
          tests/harness/index_utils.h: Simplify the FileIndexer class.

Thu Jul 04 06:09:06 GMT 2013  Olly Betts <olly@survex.com>

        * tests/harness/backendmanager_multi.cc,tests/harness/index_utils.cc,
          tests/harness/index_utils.h: Make use of the new writable
          multidatabase feature to simplify the multi-database handling in the
          test harness.

Wed Jul 03 13:58:46 GMT 2013  Aarsh Shah <aarshkshah1992@gmail.com>

        * api/registry.cc,include/xapian/weight.h,tests/api_nodb.cc,
          tests/api_weight.cc,weight/Makefile.mk,weight/ineb2weight.cc: Add
          implementation of DfR weighting scheme IneB2.

Wed Jul 03 13:39:11 GMT 2013  Olly Betts <olly@survex.com>

        * include/xapian/weight.h: "please refer:" -> "please refer to:"

Wed Jul 03 13:31:59 GMT 2013  Aarsh Shah <aarshkshah1992@gmail.com>

        * api/registry.cc,include/xapian/weight.h,tests/api_nodb.cc,
          tests/api_weight.cc,weight/Makefile.mk,weight/ifb2weight.cc: Add
          implementation of DfR weighting scheme IfB2.

Wed Jul 03 12:42:23 GMT 2013  Olly Betts <olly@survex.com>

        * common/safeuuid.h: Make a few tweaks to support AIX.

Wed Jul 03 12:33:40 GMT 2013  Olly Betts <olly@survex.com>

        * common/safeuuid.h: Remove bogus take-address-of from uuid handling
          code for netbsd and openbsd.

Wed Jul 03 11:56:05 GMT 2013  Aarsh Shah <aarshkshah1992@gmail.com>

        * api/registry.cc,include/xapian/weight.h,tests/api_nodb.cc,
          tests/api_weight.cc,weight/Makefile.mk,weight/inl2weight.cc: Add
          implementation of DfR weighting scheme InL2.

Wed Jul 03 08:20:26 GMT 2013  Olly Betts <olly@survex.com>

        * api/error.cc,common/Makefile.mk,common/safenetdb.h,net/tcpclient.cc,
          net/tcpserver.cc: AIX needs _USE_IRS defined for hstrerror, so
          create safenetdb.h to take care of that.

Wed Jul 03 07:34:13 GMT 2013  Olly Betts <olly@survex.com>

        * common/safeuuid.h: Add missing '#include <cstdlib>' and qualify free
          with std.

Tue Jul 02 23:44:48 GMT 2013  Olly Betts <olly@survex.com>

        * api/omdatabase.cc: Add support for WritableDatabase with multiple
          subdatabases.

Tue Jul 02 23:40:08 GMT 2013  Olly Betts <olly@survex.com>

        * api/omdatabase.cc,tests/api_none.cc: Trying to perform operations on
          a database with no subdatabases now throws InvalidOperationError not
          DocNotFoundError.

Tue Jul 02 13:22:31 GMT 2013  Aarsh Shah <aarshkshah1992@gmail.com>

        * tests/api_weight.cc: Extend checkstatsweight1 to check that
          Weight::get_collection_freq() returns the same number as
          Database::get_collection_freq().

Tue Jul 02 05:00:30 GMT 2013  Olly Betts <olly@survex.com>

        * api/omenquire.cc,api/omenquireinternal.h,
          backends/remote/remote-database.cc,backends/remote/remote-database.h,
          common/remoteprotocol.h,configure.ac,docs/remote_protocol.rst,
          include/xapian/enquire.h,matcher/multimatch.cc,matcher/multimatch.h,
          net/remoteserver.cc,tests/api_postingsource.cc: Add
          Enquire::set_time_limit() method which sets a timelimit after which
          check_at_least will be disabled.

Mon Jul 01 23:42:33 GMT 2013  Olly Betts <olly@survex.com>

        * tests/Makefile.am: Fix to actually removed cached databases before
          "make check".

Mon Jul 01 22:21:41 GMT 2013  Olly Betts <olly@survex.com>

        * NEWS,api/queryinternal.cc,matcher/valuestreamdocument.h: Revert
          changes accidentally included in r17373.

Sat Jun 29 12:39:10 GMT 2013  Olly Betts <olly@survex.com>

        * include/xapian/unicode.h,unicode/tclUniData.cc: Change
          Xapian::Unicode::Internal::get_character_info() to simply return
          Xapian::Unicode::UNASSIGNED for character outside unicode (ch >=
          0x110000) which avoids a special check for such values before
          we call get_character_info().

Sat Jun 29 09:31:12 GMT 2013  Olly Betts <olly@survex.com>

        * tests/api_serialise.cc: Remove code from registry* testcases which
          tries to test the consequences of throwing an exception from a
          destructor - it's complex to ensure we don't leak memory while doing
          this (it seems GCC doesn't release the object in this case, but
          clang does), and it's generally frowned upon, plus C++11 makes
          destructors noexcept by default.

Thu Jun 27 02:36:02 GMT 2013  Olly Betts <olly@survex.com>

        * weight/weightinternal.h: Initialise total_term_count to zero.
          Fixes failure of qp_flag_wildcard3 under valgrind in buildbot.

Wed Jun 26 05:48:21 GMT 2013  Olly Betts <olly@survex.com>

        * backends/dbfactory.cc: '# if defined' -> '#ifdef' to match
          surrounding code better.

Wed Jun 26 05:47:38 GMT 2013  Olly Betts <olly@survex.com>

        * backends/dbfactory.cc: Fix 'unused label' warning when chert backend
          is disabled.

Wed Jun 26 05:40:29 GMT 2013  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Fix previous change to compile.

Wed Jun 26 05:34:25 GMT 2013  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Change qp_scale1 to time 5 repetitions of
          the large query to help average out variations.

Wed Jun 26 04:52:33 GMT 2013  Olly Betts <olly@survex.com>

        * configure.ac: Tweak to simplify diff against similar code in
          xapian-omega.

Wed Jun 26 03:56:14 GMT 2013  Olly Betts <olly@survex.com>

        * api/matchspy.cc: Fix get_description() to work on a
          ValueCountMatchSpy with NULL internals - fixes matchspy5 testcase
          with remote backends when configured with --enable-log.
        * api/matchspy.cc: Add assertions that internal is non-NULL before
          using it.
        * include/xapian/matchspy.h: If internal is NULL, make
          ValueCountMatchSpy::get_total() return 0 rather than dereferencing
          NULL.

Wed Jun 26 03:10:58 GMT 2013  Olly Betts <olly@survex.com>

        * tests/harness/testsuite.cc,tests/harness/testsuite.h: If
          -v/--verbose is specified more than once, show the diagnostic output
          for passing tests as well as failing/skipped ones.

Wed Jun 26 03:08:08 GMT 2013  Olly Betts <olly@survex.com>

        * tests/api_scalability.cc: Change querypairwise1_helper to repeat the
          query build 100 times, as with a fast modern machine we were
          sometimes trying to so many subqueries that we would run out of
          stack.

Wed Jun 26 02:55:20 GMT 2013  Olly Betts <olly@survex.com>

        * weight/tfidfweight.cc: Wrap long lines.

Wed Jun 26 02:00:12 GMT 2013  Olly Betts <olly@survex.com>

        * configure.ac,m4-macros/xapian-1.3.m4: Fix stripping of _git suffix
          from snapshot versions not to relying of sed having support for \|
          as it doesn't on OS X.

Tue Jun 25 13:21:44 GMT 2013  Olly Betts <olly@survex.com>

        * weight/tfidfweight.cc: Merge "impossible" cases in switch statements
          into possible ones which contain the same code, adding assertions
          that the "impossible" hasn't happened.  More robust and improves
          test coverage.

Tue Jun 25 06:28:00 GMT 2013  Olly Betts <olly@survex.com>

        * m4-macros/xapian-1.3.m4: XO_LIB_XAPIAN now handles the user
          specifying a relative path in XAPIAN_CONFIG, e.g.: "./configure
          XAPIAN_CONFIG=../xapian-core/xapian-config"

Tue Jun 25 05:34:41 GMT 2013  Olly Betts <olly@survex.com>

        * m4-macros/xapian-1.3.m4: Fix comment typo.

Tue Jun 25 05:33:54 GMT 2013  Olly Betts <olly@survex.com>

        * configure.ac: Use AC_PATH_PROG instead of AC_PATH_PROG when there's
          only one name for the program to look for.

Sun Jun 23 13:12:54 GMT 2013  Olly Betts <olly@survex.com>

        * configure.ac: clang doesn't support -Wstrict-null-sentinel or
          -Wlogical-op, so don't pass it these options.

Sat Jun 22 13:40:40 GMT 2013  Olly Betts <olly@survex.com>

        * backends/brass/brass_compact.cc,backends/chert/chert_compact.cc:
          Fix failure when built with -D_GLIBCXX_DEBUG - we were modifying
          the top() element of a heap before calling pop(), such that the
          heap comparison operation (which is called when -D_GLIBCXX_DEBUG
          is on to verify the heap is valid) would read off the end of the
          data.  In a normal build, this issue would likely never manifest.

Sat Jun 22 11:21:22 GMT 2013  Olly Betts <olly@survex.com>

        * common/bitstream.cc: Fix assertion in BitReader::decode().

Sat Jun 22 09:13:13 GMT 2013  Olly Betts <olly@survex.com>

        * matcher/localsubmatch.cc: Fix assertion failure when built with
          --enable-assertions.  The behaviour when built without assertions
          happened to be correct.

Fri Jun 21 13:10:53 GMT 2013  Olly Betts <olly@survex.com>

        * tests/unittest.cc: Add simple test for log2().

Fri Jun 21 13:09:09 GMT 2013  Olly Betts <olly@survex.com>

        * common/Makefile.mk,common/log2.h,configure.ac: Add log2.h header
          which provides an implementation of log2() if it isn't available in
          the standard libraries.

Fri Jun 14 13:20:58 GMT 2013  Olly Betts <olly@survex.com>

        * common/fd.h: Add missing header include guards.

Fri Jun 14 13:19:44 GMT 2013  Olly Betts <olly@survex.com>

        * common/append_filename_arg.h,geospatial/geoencode.h: Fix header
          include guard names which don't match our naming conventions.

Fri Jun 14 13:18:40 GMT 2013  Olly Betts <olly@survex.com>

        * backends/brass/brass_dbcheck.h,backends/chert/chert_dbcheck.h,
          backends/multi/multi_alltermslist.h: Fix header include guard macro
          names which don't match the source file names.

Fri Jun 14 12:48:14 GMT 2013  Olly Betts <olly@survex.com>

        * common/compression_stream.h: Whitespace tweak.

Thu Jun 13 13:58:14 GMT 2013  Olly Betts <olly@survex.com>

        * backends/chert/chert_positionlist.cc: Remove 'Assert(rd);' since rd
          is no longer a pointer.

Thu Jun 13 13:28:43 GMT 2013  Olly Betts <olly@survex.com>

        * tests/harness/utestsuite.cc: Add missing GPL boilerplate and
          copyright statements.

Thu Jun 13 13:26:07 GMT 2013  Olly Betts <olly@survex.com>

        * common/compression_stream.cc,common/compression_stream.h: Add
          missing GPL boilerplate and copyright statements.

Thu Jun 13 13:24:34 GMT 2013  Olly Betts <olly@survex.com>

        * common/compression_stream.cc,common/compression_stream.h: Remove
          unused header includes; don't use "using namespace std;" in a
          header.

Thu Jun 13 08:30:26 GMT 2013  Olly Betts <olly@survex.com>

        * backends/brass/brass_positionlist.cc: Remove 'Assert(rd);' since rd
          is no longer a pointer.

Thu Jun 13 05:07:27 GMT 2013  Olly Betts <olly@survex.com>

        * common/compression_stream.h: Update include guard to match source
          file name.

Thu Jun 13 02:38:20 GMT 2013  Olly Betts <olly@survex.com>

        * common/,net/length.h,net/serialise.h: Fix @file markup which wasn't
          actually in a doxygen comment.

Thu Jun 13 02:14:22 GMT 2013  Olly Betts <olly@survex.com>

        * preautoreconf: Remove needless use of perl prototype.

Tue Jun 11 00:40:37 GMT 2013  Olly Betts <olly@survex.com>

        * common/remoteprotocol.h,docs/remote_protocol.rst: Bump
          remote protocol version to 38.o.

Tue Jun 11 00:37:01 GMT 2013  Aarsh Shah <aarshkshah1992@gmail.com>

        * api/leafpostlist.cc,matcher/,net/serialise.cc,weight/weight.cc,
          weight/weightinternal.cc,weight/weightinternal.h: Make collection
          frequency available to Xapian::Weight subclasses.  Extracted from
          Gaurav Arora's LM branch.

Wed May 22 10:04:25 GMT 2013  Olly Betts <olly@survex.com>

        * configure.ac: When generating ABI compatibility checks in
          xapian/version.h, pass $CXXFLAGS and $CPPFLAGS to $CXXCPP as they
          could contain options which affect the ABI (such as -fabi-version
          for GCC).  (Fixes #622)

Wed May 22 04:20:39 GMT 2013  Olly Betts <olly@survex.com>

        * common/win32_uuid.cc: Microsoft GUIDs in binary form have reversed
          byte order in the first three components compared to standard UUIDs,
          so the same database would report a different UUID on Windows to
          on other platforms.  With this fix, the UUIDs of existing databases
          will appear to change on Windows (except in rare "palindronic" cases).

Fri May 17 05:52:43 GMT 2013  Olly Betts <olly@survex.com>

        * docs/overview.rst: Correct documentation for stub files specifying
          "prog" remote databases.

Thu May 16 05:47:40 GMT 2013  Olly Betts <olly@survex.com>

        * backends/chert/chert_dbcheck.cc: Code tweak for clarity.

Thu May 16 05:46:42 GMT 2013  Olly Betts <olly@survex.com>

        * backends/chert/chert_dbcheck.cc: Fix database check that first docid
          in each doclength chunk is more than the last docid in the previous
          chunk - previously this didn't actually work.

Thu May 16 05:45:04 GMT 2013  Olly Betts <olly@survex.com>

        * common/bitstream.h: Fix database check not to falsely report
          "position table: Junk after position data" whenever there are 7
          unused bits (7 is OK, *more* than 7 isn't).

Tue May 14 12:42:11 GMT 2013  Olly Betts <olly@survex.com>

        * m4-macros/xapian-1.3.m4: Adjust XO_LIB_XAPIAN to strip _gitNNN
          suffix from snapshot versions.

Sun May 12 06:11:36 GMT 2013  Olly Betts <olly@survex.com>

        * configure.ac: Simplify previous change.

Sun May 12 06:06:47 GMT 2013  Olly Betts <olly@survex.com>

        * configure.ac: Handle git snapshot naming when calculating REVISION.

Wed May 08 11:56:27 GMT 2013  Olly Betts <olly@survex.com>

        * HACKING,INSTALL,Makefile.am,README,docs/Makefile.am,docs/install.rst,
          docs/stemming.rst,languages/Makefile.mk,queryparser/Makefile.mk,
          tests/Makefile.am,tests/perftest/perftest.cc: SVN -> git.

Wed May 08 08:51:22 GMT 2013  Olly Betts <olly@survex.com>

        * backends/brass/brass_version.cc,backends/chert/chert_version.cc:
          Remove unused '#include <cstdio>'.

Mon May 06 11:10:25 GMT 2013  Olly Betts <olly@survex.com>

        * api/omenquire.cc,configure.ac,include/xapian/enquire.h: Merge two
          Enquire::get_eset() overloaded forms into one with a default value
          for parameter min_wt.

Thu May 02 12:05:28 GMT 2013  Olly Betts <olly@survex.com>

        * NEWS,configure.ac: Update for 1.3.1.

Thu May 02 11:13:30 GMT 2013  Olly Betts <olly@survex.com>

        * include/xapian/weight.h,tests/api_nodb.cc,tests/api_weight.cc,
          weight/tfidfweight.cc: Use lowercase letters for the TfIdfWeight
          descriptions to match what SMART uses.

Wed May 01 05:13:07 GMT 2013  Olly Betts <olly@survex.com>

        * include/xapian/database.h: Work around Apple's OS X SDK defining a
          check() macro.

Tue Apr 30 13:51:53 GMT 2013  Olly Betts <olly@survex.com>

        * NEWS: Update from ChangeLog.

Mon Apr 29 03:09:16 GMT 2013  Olly Betts <olly@survex.com>

        * backends/brass/brass_dbcheck.cc,backends/chert/chert_dbcheck.cc:
          Use decode_interpolative_next() when checking database consistency.
          We also now complain about any junk after the position data.
        * common/bitstream.cc,common/bitstream.h: Remove the old version of
          decode_interpolative() which unpacks into a std::vector.

Mon Apr 29 02:16:54 GMT 2013  Olly Betts <olly@survex.com>

        * backends/chert/chert_positionlist.cc,
          backends/chert/chert_positionlist.h: Backport positionlist changes
          from brass.

Mon Apr 29 01:58:59 GMT 2013  Olly Betts <olly@survex.com>

        * backends/brass/brass_positionlist.cc: No need to initialise the
          BitReader object in the single-entry position list case.

Mon Apr 29 01:58:10 GMT 2013  Olly Betts <olly@survex.com>

        * backends/brass/brass_positionlist.cc: Fix bug when reaching the last
          positionlist entry in skip_to().

Mon Apr 29 00:46:10 GMT 2013  Olly Betts <olly@survex.com>

        * tests/api_posdb.cc: Fix comment typos.

Mon Apr 29 00:27:42 GMT 2013  Olly Betts <olly@survex.com>

        * backends/brass/brass_positionlist.cc: Fix handling of single-entry
          position lists.

Sun Apr 28 23:45:02 GMT 2013  Olly Betts <olly@survex.com>

        * backends/brass/brass_positionlist.cc: Fix BrassPositionList for case
          when there's no positional information for a term.

Sun Apr 28 10:29:59 GMT 2013  Olly Betts <olly@survex.com>

        * backends/brass/brass_positionlist.cc: Simplify setting of
          have_started in BrassPositionList::skip_to().

Sun Apr 28 10:19:52 GMT 2013  Olly Betts <olly@survex.com>

        * backends/brass/brass_positionlist.cc,
          backends/brass/brass_positionlist.h,common/bitstream.h: Make the
          BitReader object a member of BrassPositionList rather than tracking
          a pointer to it.

Sun Apr 28 07:22:07 GMT 2013  Olly Betts <olly@survex.com>

        * backends/brass/brass_positionlist.cc,common/bitstream.h: Reuse the
          same BitReader object for each document rather than deleting the old
          one and creating a new one.

Sun Apr 28 07:06:12 GMT 2013  Olly Betts <olly@survex.com>

        * backends/brass/brass_positionlist.cc: Move check for reaching the
          end after the next() in the loop in skip_to(), as we know we aren't
          at the end on the first iteration, and we've now handled the case of
          termpos == last before we get here.

Sun Apr 28 07:04:54 GMT 2013  Olly Betts <olly@survex.com>

        * backends/brass/brass_positionlist.cc: We know what the last entry in
          the position list is, so special case skip_to(last_entry) to just
          move there rather than calling next() a lot of times.

Sun Apr 28 07:03:57 GMT 2013  Olly Betts <olly@survex.com>

        * common/bitstream.h: We don't need to stack pos_j when doing lazy
          interpolative decoding.

Sun Apr 28 06:48:01 GMT 2013  Olly Betts <olly@survex.com>

        * common/bitstream.h: Store j and k before pos_j and pos_k as it's
          fractionally more efficient.

Sun Apr 28 06:44:32 GMT 2013  Olly Betts <olly@survex.com>

        * backends/brass/brass_positionlist.cc,
          backends/brass/brass_positionlist.h,common/bitstream.cc,
          common/bitstream.h: Hook up BrassPositionList to the new lazy
          interpolative decoder.

Fri Apr 26 02:09:38 GMT 2013  Marius Tibeica <mtibeica@gmail.com>

        * common/bitstream.cc,common/bitstream.h: Support reading entries from
          an interpolative coded list one by one.

Thu Apr 25 10:57:02 GMT 2013  Olly Betts <olly@survex.com>

        * docs/remote_protocol.rst: Correct error in documentation of
          REPLY_DOCDATA message.

Thu Apr 25 10:44:56 GMT 2013  Marius Tibeica <mtibeica@gmail.com>

        * common/bitstream.cc: renamed my_fls to highest_order_bit.

Thu Apr 25 06:49:48 GMT 2013  Olly Betts <olly@survex.com>

        * backends/remote/remote-database.cc,common/remoteprotocol.h,
          docs/remote_protocol.rst,net/remoteserver.cc: Prefix compress
          list of terms and metadata keys in the remote protocol.
          This requires a remote protocol major version bump.

Wed Apr 24 23:14:47 GMT 2013  Olly Betts <olly@survex.com>

        * queryparser/lemon.c,queryparser/queryparser.lt: Fix comment typos.

Wed Apr 24 06:27:26 GMT 2013  Olly Betts <olly@survex.com>

        * include/xapian.h: Add catch for Wt defining a macro called slots,
          like we already do for Qt.

Wed Apr 24 03:40:13 GMT 2013  Olly Betts <olly@survex.com>

        * NEWS: Update.

Tue Apr 23 12:34:23 GMT 2013  Olly Betts <olly@survex.com>

        * backends/brass/brass_table.cc: Use a block's revision number to
          check if it was newly allocated in the current revision, and
          assert that the base file shows it block_free_at_start (previously
          the check and assertion were the other way around).

Tue Apr 23 12:11:21 GMT 2013  Olly Betts <olly@survex.com>

        * HACKING: Note macports needed for development work.

Tue Apr 23 11:41:17 GMT 2013  Olly Betts <olly@survex.com>

        * include/xapian/version_h.cc: Fix typo in doc comment.

Tue Apr 23 11:39:30 GMT 2013  Olly Betts <olly@survex.com>

        * include/xapian/version_h.cc: Disable error for direct inclusion
          of xapian/version.h for now.

Sun Apr 21 07:49:38 GMT 2013  Olly Betts <olly@survex.com>

        * include/xapian/version_h.cc: Fix quotes in new #error in version.h.

Sun Apr 21 06:25:57 GMT 2013  Olly Betts <olly@survex.com>

        * configure.ac,generate-exceptions,include/xapian/: Give an error if
          user code tries to include API headers other than xapian.h directly.

Sat Apr 20 10:12:23 GMT 2013  Olly Betts <olly@survex.com>

        * languages/compiler/generator.c: Generate '#include <config.h>' at
          the start of the stemmer code.

Fri Apr 19 23:36:25 GMT 2013  Olly Betts <olly@survex.com>

        * configure.ac: Remove empty default cases.

Wed Apr 17 03:06:57 GMT 2013  Olly Betts <olly@survex.com>

        * NEWS: Update from 1.2.15 and ChangeLog.

Thu Apr 11 22:17:44 GMT 2013  Olly Betts <olly@survex.com>

        * backends/brass/brass_version.cc,backends/chert/chert_version.cc:
          Call io_sync() on the version file when we create it.

Tue Apr 09 11:02:35 GMT 2013  Olly Betts <olly@survex.com>

        * bin/xapian-delve.cc: If -v is specified more than once, show even
          more info in some cases.

Tue Apr 09 09:40:02 GMT 2013  Olly Betts <olly@survex.com>

        * tests/Makefile.am: Force automake to use the serial test driver,
          which requires automake 1.12 (to recognise the serial-tests driver).

Mon Apr 08 06:30:40 GMT 2013  Aarsh Shah <aarshkshah1992@gmail.com>

        * weight/: Added tfidfweight.cc containing the implementation of the
          TfIdfWeight class.

        * include/xapian/weight.h: Added TfIdfWeight class for the tf-idf
          weighting scheme.

        * tests/api_weight.cc: Added tests for TfIdfWeight.

        * tests/api_nodb.cc: Added simple tests for TfIdfWeight.

Sat Apr 06 00:21:34 GMT 2013  Olly Betts <olly@survex.com>

        * m4-macros/xapian-1.3.m4: XO_LIB_XAPIAN now handles the user
          specifying XAPIAN_CONFIG without a path - e.g.: "./configure
          XAPIAN_CONFIG=xapian-config-1.3"

Thu Apr 04 12:02:36 GMT 2013  Olly Betts <olly@survex.com>

        * common/Makefile.mk: Remove random comment.

Thu Apr 04 10:06:53 GMT 2013  Olly Betts <olly@survex.com>

        * Makefile.am,configure.ac,tests/Makefile.am: Remove support for
          'configure --enable-quiet', 'make QUIET=' and 'make QUIET=y' -
          automake now supports 'configure --enable-silent-rules', 'make V=1'
          and 'make V=0' which are broadly equivalent and more standard.

Thu Apr 04 09:58:35 GMT 2013  Olly Betts <olly@survex.com>

        * HACKING: Update to note that automake 1.12.2 is now a hard
          requirement.

Tue Apr 02 10:22:44 GMT 2013  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Comment typo fixes.

Tue Apr 02 09:47:14 GMT 2013  Olly Betts <olly@survex.com>

        * queryparser/lemon.c,queryparser/queryparser.lt: Sync with latest
          upstream version of lemon.  The only notable change is a bug fix for
          platforms where sizeof(long) < sizeof(void*) (LLP64 model).

Tue Apr 02 05:51:12 GMT 2013  Olly Betts <olly@survex.com>

        * HACKING: Tell vim to syntax highlight as rst.

Tue Apr 02 05:50:26 GMT 2013  Olly Betts <olly@survex.com>

        * HACKING: Update for recent changes to bootstrap.  In particular, we
          now bootstrap snapshots with automake 1.13.1.

Fri Mar 29 05:18:11 GMT 2013  Olly Betts <olly@survex.com>

        * net/tcpclient.cc: Fix __WIN32__ conditional, accidentally broken in
          last change to this file.

Thu Mar 28 04:19:26 GMT 2013  jiangwen jiang <jiangwen127@gmail.com>

        * api/expanddecider.cc,include/xapian/expanddecider.h,
          tests/api_anydb.cc,tests/api_nodb.cc: Add ExpandDeciderFilterPrefix
          class to only return terms with a particular prefix.  (fixes #467)

Thu Mar 21 23:55:26 GMT 2013  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Add test coverage for change to
          QueryParser CJK handling in previous commit.

Thu Mar 21 07:21:30 GMT 2013  Greg Banks <gnb@fastmail.fm>

        * queryparser/cjk-tokenizer.cc,queryparser/termgenerator_internal.cc,
          tests/termgentest.cc: Some CJK codepoints are also punctuation and
          hence not word characters, and should not really be used as fodder
          for generating N-grams.  Also fixes a pre-existing bug where every
          second sequence of N-grammable CJK characters in the text failed to
          generate the first 2-gram.

Sun Mar 17 20:45:48 GMT 2013  Olly Betts <olly@survex.com>

        * common/pretty.h: Restore space after comma in output.

Sun Mar 17 03:59:52 GMT 2013  Dan Colish <dcolish@gmail.com>

        * common/pretty.h: Correct recursion issue.

Sun Mar 17 02:58:52 GMT 2013  Dan Colish <dcolish@gmail.com>

        * common/pretty.h: Resolve ambiguity by moving operator| to a member
          function of PrettyOStream

Sat Mar 16 21:43:32 GMT 2013  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: std::less provides a total order over
          pointers, so we can just use that to implement
          filter_group_id::operator<() - we only need a consistent order so we
          can use it as the key to a std::map.

Fri Mar 15 06:36:32 GMT 2013  Dan Colish <dcolish@gmail.com>

        * backends/brass/brass_table.cc,backends/chert/chert_table.cc,
          common/pretty.h: Avoid needlessly casting away const-ness in
          debug logging.

Fri Mar 15 06:31:32 GMT 2013  Olly Betts <olly@survex.com>

        * matcher/multiandpostlist.cc,matcher/multixorpostlist.cc: Add a
          couple more LOGCALL annotations.

Fri Mar 15 06:27:42 GMT 2013  Dan Colish <dcolish@gmail.com>

        * api/registry.cc,common/pretty.h: Fix incorrect LOGCALL return value.

Fri Mar 15 06:24:11 GMT 2013  Olly Betts <olly@survex.com>

        * api/registry.cc,common/Makefile.mk,common/registryinternal.h:
          common/registryinternal.h is only included by api/registry.cc so
          just inline its contents.

Fri Mar 15 06:11:14 GMT 2013  Olly Betts <olly@survex.com>

        * api/registry.cc: No need to explicitly default initialise std::map
          members or the base class.

Fri Mar 08 04:05:31 GMT 2013  Olly Betts <olly@survex.com>

        * backends/brass/brass_compact.cc,backends/chert/chert_compact.cc: Fix
          multipass compaction not to damage document values, and to merge the
          database stats correctly.  (fixes #615)
        * tests/api_compact.cc: Add regression test compactmultipass1.

Thu Mar 07 00:34:46 GMT 2013  Aarsh Shah <aarshkshah1992@gmail.com>

        * tests/api_anydb.cc: Added tradweight4 testcase to test TradWeight
          with an RSet for weighting documents.

Wed Mar 06 08:55:12 GMT 2013  Olly Betts <olly@survex.com>

        * HACKING: gs package has been replaced by ghostscript package in
          current Debian and Ubuntu releases.

Tue Feb 19 04:17:19 GMT 2013  Olly Betts <olly@survex.com>

        * common/Tokeniseise.pm: Add the ability to append lines to the
          header.

Fri Feb 15 05:37:09 GMT 2013  Olly Betts <olly@survex.com>

        * common/realtime.h: Fix RealTime::sleep() to calculate the delta to
          the time we want to sleep to the right way round.  Previously we
          wouldn't sleep if we were before the deadline, but would sleep if
          the deadline had already passed (and by the amount the deadline had
          passed)!  And on Windows, fix the sleep to be for the delta rather
          than 43+ years (the time elapsed since the start of 1970).  (Fixes
          #472)

Fri Feb 15 04:09:28 GMT 2013  Olly Betts <olly@survex.com>

        * api/queryinternal.cc: Need <functional> for mem_fun().

Fri Feb 15 03:56:32 GMT 2013  Olly Betts <olly@survex.com>

        * tests/harness/testsuite.cc: Don't provide explicit template types to
          make_pair - it isn't useful, and breaks with C++11.  Fixes build
          error with MSVC2012.

Thu Jan 31 23:39:08 GMT 2013  Olly Betts <olly@survex.com>

        * common/Tokeniseise.pm: Put the binary chop tables with the larger
          ones last, so the offsets to the start of them are more likely to
          fit into a byte.

Wed Jan 30 04:17:07 GMT 2013  Olly Betts <olly@survex.com>

        * common/Makefile.mk,common/Tokeniseise.pm,languages/Makefile.mk,
          languages/collate-sbl: Factor out the generic code to create a
          string-to-enum mapping table into a perl module so we can reuse
          it elsewhere.

Mon Jan 28 01:44:53 GMT 2013  Olly Betts <olly@survex.com>

        * examples/quest.cc: Fix to build with Sun Studio 12 compiler.
          (ticket#611)

Thu Jan 24 22:40:12 GMT 2013  Olly Betts <olly@survex.com>

        * common/Makefile.mk,common/keyword.cc,common/keyword.h: Commit new
          keyword lookup function needed by previous commit.

Thu Jan 24 22:26:19 GMT 2013  Olly Betts <olly@survex.com>

        * languages/: Generate a compact and efficient table to convert
          language names to enum codes, which we can then use a C switch
          statement to dispatch.  The table first checks the token length,
          and then does a binary chop on tokens of the same length.  This
          is both faster and smaller than the approach we were using, with
          the benefit that the table is auto-generated.

Wed Jan 23 00:51:42 GMT 2013  Olly Betts <olly@survex.com>

        * matcher/selectpostlist.cc,matcher/selectpostlist.h: Check document
          matches weight threshold before checking positional information,
          which speeds up slow phrase searches (tweaked version of
          positional-query-weight-check-first.patch from #394).

Thu Jan 17 06:48:41 GMT 2013  Olly Betts <olly@survex.com>

        * tests/api_stem.cc: Extend stem2 to ensure description of the stemmer
          isn't the same as the description of Stem("none").  Fix description
          of testcase stemlangs2.

Thu Jan 17 02:32:31 GMT 2013  Olly Betts <olly@survex.com>

        * HACKING: Update link to new home of autotools tutorial.

Wed Jan 16 02:40:20 GMT 2013  Olly Betts <olly@survex.com>

        * HACKING,Makefile.am: Rename CHK_SOURCES to check_sources - variables
          ending _SOURCES usually have a special meaning in automake, so it's
          confusing to have one which doesn't.

Wed Jan 16 01:55:50 GMT 2013  Olly Betts <olly@survex.com>

        * api/omenquire.cc: Don't cache documents retrieved by
          MSet::get_document() unless they were requested with fetch().  This
          avoids using a lot of memory when many MSet entries are retrieved.
          (Fixes #604)

Wed Jan 09 11:49:58 GMT 2013  Olly Betts <olly@survex.com>

        * NEWS: Update from ChangeLog and 1.2 branch.

Fri Jan 04 23:14:33 GMT 2013  Olly Betts <olly@survex.com>

        * net/progclient.cc: Fix typo so we actually use SOCK_CLOEXEC.

Fri Jan 04 23:14:01 GMT 2013  Olly Betts <olly@survex.com>

        * common/safesyssocket.h: We need the same workaround for socket() too.

Fri Jan 04 04:41:17 GMT 2013  Olly Betts <olly@survex.com>

        * common/safesyssocket.h: On Linux at least, sometimes SOCK_CLOEXEC is
          defined but the kernel doesn't handle it in socketpair(), so add a
          wrapper which will retry without SOCK_CLOEXEC in this case.  Noticed
          on Ubuntu precise.

Sat Dec 29 17:53:30 GMT 2012  Olly Betts <olly@survex.com>

        * docs/quickstart.rst: Fix seriously outdated statement that Xapian
          doesn't create the database directory - that changed in 0.7.2
          (release 2003-07-11), pointed out by aarsh on #xapian.

Thu Dec 27 06:06:30 GMT 2012  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Adjust handling of Unicode
          opening/closing double quotes - if a quoted boolean term was started
          with ASCII double quote, then only ASCII double quote can end it, as
          otherwise it's impossible to quote a term containing Unicode double
          quotes.
        * tests/queryparsertest.cc: Update testcases.

Sun Dec 23 18:16:52 GMT 2012  Olly Betts <olly@survex.com>

        * configure.ac: Fix typo in previous commit.

Sun Dec 23 18:06:45 GMT 2012  Olly Betts <olly@survex.com>

        * configure.ac: Use the new flock()-based flint-compatible locking
          under DJGPP, and remove special cases to disable chert and brass
          under DJGPP (untested, as I no longer have a DJGPP setup or
          cross-compiler).

Sun Dec 23 17:51:36 GMT 2012  Olly Betts <olly@survex.com>

        * backends/flint_lock.cc,backends/flint_lock.h: Add flock() based
          locking implementation, which is much simpler than using fcntl() due
          to saner semantics around releasing locks when closing other
          descriptors on the same file (at least on platforms where flock()
          isn't just a compatibility wrapper around fcntl()).  We can't simply
          switch to this without breaking locking compatibility with previous
          releases, though it might be useful for porting to platforms without
          fcntl() locking.  Also, flock() apparently doesn't work over NFS -
          perhaps that's OK, but we should at least check the failure mode.

Sat Dec 22 06:29:23 GMT 2012  Olly Betts <olly@survex.com>

        * backends/flint_lock.cc: Only set close-on-exec on the lockfile fd if
          we are able to clear it in the child process, and clear it in the
          child process if we set it when we opened it.

Sat Dec 22 06:14:40 GMT 2012  Olly Betts <olly@survex.com>

        * backends/flint_lock.cc,net/progclient.cc: Use SOCK_CLOEXEC with
          socketpair(), and then clear the close-on-exec flag for child process
          end of the pair before we call exec.

Sat Dec 22 06:13:44 GMT 2012  Olly Betts <olly@survex.com>

        * net/progclient.cc: Remove O_CLOEXEC where we open stderr on /dev/null
          before calling exec as we want that fd to survive the exec!

Sat Dec 22 05:53:12 GMT 2012  Olly Betts <olly@survex.com>

        * HACKING,backends/flint_lock.cc,common/Makefile.mk,
          common/safesyssocket.h,net/progclient.cc,net/tcpclient.cc,
          net/tcpserver.cc,tests/harness/backendmanager_remotetcp.cc:
          Use SOCK_CLOEXEC where available, and try FD_CLOEXEC if SOCK_CLOEXEC
          isn't available.

Sat Dec 22 04:09:23 GMT 2012  Olly Betts <olly@survex.com>

        * backends/brass/,backends/chert/,backends/flint_lock.cc,
          common/debuglog.cc,common/replicate_utils.cc,common/safefcntl.h,
          net/progclient.cc,net/remoteconnection.cc,
          tests/harness/testsuite.cc: If O_CLOEXEC is supported, pass it to
          open() so fds we open are closed if the application using us calls
          exec().

Fri Dec 21 03:48:36 GMT 2012  Olly Betts <olly@survex.com>

        * configure.ac: Don't autodisable the remote backend if we fail to find
          a required function.  It's more likely the user needs to pass
          LIBS=-lfoo and it's more helpful to error out so they can do that, or
          pass --disable-backend-remote if they really don't want it, rather
          than having them not notice the automatic disabling until after
          they've built.  This also matches what we do for the disk based
          backends.

Fri Dec 21 03:48:11 GMT 2012  Olly Betts <olly@survex.com>

        * configure.ac: Expand comment about DJGPP.

Fri Dec 21 03:47:13 GMT 2012  Olly Betts <olly@survex.com>

        * configure.ac: Update comment - we've supported the prog backend on
          Windows for more than 5 years now!

Fri Dec 21 03:32:13 GMT 2012  Olly Betts <olly@survex.com>

        * tests/api_replicate.cc: Use O_BINARY in replication tests.

Fri Dec 21 03:24:37 GMT 2012  Olly Betts <olly@survex.com>

        * common/replicate_utils.cc: Make posixy_open() always use O_BINARY.
        * backends/brass/brass_btreebase.cc,backends/brass/brass_database.cc,
          backends/brass/brass_databasereplicator.cc,
          backends/chert/chert_btreebase.cc,
          backends/chert/chert_databasereplicator.cc,common/posixy_wrapper.cc:
          Don't pass O_BINARY to posixy_open() in the places where we were
          (which wasn't everywhere, probably causing replication bugs under
          __WIN32__).

Fri Dec 21 02:57:56 GMT 2012  Olly Betts <olly@survex.com>

        * net/remoteconnection.cc,net/remoteconnection.h: Only "outline"
          RemoteConnection dtor under __WIN32__.

Fri Dec 21 02:56:28 GMT 2012  Olly Betts <olly@survex.com>

        * backends/remote/remote-database.cc: Make the UnimplementedError for a
          MatchSpy which doesn't implement name() clearer that it's this
          particular subclass which can't be used remotely, not all MatchSpy
          objects.

Thu Dec 20 22:27:40 GMT 2012  Olly Betts <olly@survex.com>

        * configure.ac: Use user-specified LIBS for configure tests, which is
          what's expected, and provides a way for the user to tell configure
          where to find library functions which configure can't find for
          itself.

Thu Dec 20 22:07:19 GMT 2012  Olly Betts <olly@survex.com>

        * api/compactor.cc,api/replication.cc,backends/brass/,backends/chert/,
          common/,net/remoteconnection.cc: Rename msvc_posix_rename(), etc to
          posixy_rename() (avoid a posix_ prefix as that's used by some library
          functions, and these aren't necessarily 100% POSIX compatible), and
          provide macro versions on Unix, so we can avoid a #ifdef at every
          call site.

Thu Dec 20 20:57:18 GMT 2012  Olly Betts <olly@survex.com>

        * configure.ac: socketpair() needs -lnetwork on Haiku.

Thu Dec 20 02:30:12 GMT 2012  Olly Betts <olly@survex.com>

        * backends/brass/brass_databasereplicator.cc,
          backends/chert/chert_databasereplicator.cc: Simplify how we open the
          .DB file on the replication slave to just call open() once with
          O_CREAT, rather than once without, than stat() if that fails, and
          then again with O_CREAT|O_TRUNC if stat() doesn't show an ordinary
          file exists.

Thu Dec 20 02:05:12 GMT 2012  Olly Betts <olly@survex.com>

        * api/compactor.cc,common/,languages/compiler/syswords2.h,
          tests/api_compact.cc: Remove extra blank lines at end of files.

Thu Dec 20 01:54:47 GMT 2012  Olly Betts <olly@survex.com>

        * backends/brass/brass_database.cc,backends/chert/chert_database.cc:
          Fix "if (fd > 0)" tests to be "if (fd >= 0)" in code related to
          replication.  In practice this is unlikely to actually have caused
          problems in real world cases.

Sun Dec 16 23:10:13 GMT 2012  Olly Betts <olly@survex.com>

        * bin/Makefile.mk: INCLUDES is always used, AM_CPPFLAGS isn't if there
          are per-executable CPPFLAGS, so add AM_CPPFLAGS explicitly when we
          use per-executable CPPFLAGS.

Fri Dec 14 21:25:58 GMT 2012  Olly Betts <olly@survex.com>

        * Makefile.am,languages/Makefile.mk,queryparser/Makefile.mk,
          tests/Makefile.am: In automake, INCLUDES is now deprecated in favour
          of AM_CPPFLAGS so update to use the latter.

Tue Nov 27 05:39:30 GMT 2012  Olly Betts <olly@survex.com>

        * examples/quest.cc: Need <algorithm> for lower_bound().

Mon Nov 26 23:46:43 GMT 2012  Olly Betts <olly@survex.com>

        * examples/quest.cc: Align option descriptions in --help output, and
          make the initial letter of such descriptions consistently lowercase.

Mon Nov 26 19:52:50 GMT 2012  Olly Betts <olly@survex.com>

        * examples/quest.cc: Add --flags command line option to allow setting
          arbitrary QueryParser flags.

Mon Nov 26 03:02:03 GMT 2012  Olly Betts <olly@survex.com>

        * api/valuerangeproc.cc: Move 3 declarations to where we first use the
          variables.

Mon Nov 26 02:59:41 GMT 2012  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: We no longer use the highest weighted
          MSet entry to calculate percentages, so stop searching for it.
          (Spotted by cppcheck)

Mon Nov 26 02:59:02 GMT 2012  Olly Betts <olly@survex.com>

        * backends/brass/brass_compact.cc,backends/chert/chert_compact.cc:
          Remove unused variables (spotted by cppcheck).

Mon Nov 26 02:12:19 GMT 2012  Olly Betts <olly@survex.com>

        * api/maptermlist.h,api/matchspy.cc,api/omdatabase.cc,
          backends/inmemory/inmemory_database.cc,
          backends/inmemory/inmemory_positionlist.cc,
          backends/multi/multi_postlist.cc,backends/remote/net_termlist.cc,
          bin/xapian-delve.cc,matcher/exactphrasepostlist.cc,
          matcher/mergepostlist.cc,matcher/phrasepostlist.cc,
          tests/harness/backendmanager.cc: Prefer ++i to i++.

Fri Nov 23 03:38:39 GMT 2012  Olly Betts <olly@survex.com>

        * HACKING,Makefile.am: With lcov 1.10, we no longer need any of our
          hacky workarounds, so make this a requirement and simplify the rules
          in the makefile.

Thu Nov 22 23:34:09 GMT 2012  Olly Betts <olly@survex.com>

        * Makefile.am: Pass -f to lcov, which should avoid the need for the
          patch we've been applying to lcov.

Thu Nov 22 01:34:05 GMT 2012  Olly Betts <olly@survex.com>

        * backends/flint_lock.cc: Close excess file handles before we get the
          fcntl() lock, just in case one of those file handles is open on the
          lock file.
        * tests/api_backend.cc: Add regression test lockfilealreadyopen1.

Thu Nov 22 00:35:51 GMT 2012  Olly Betts <olly@survex.com>

        * common/closefrom.cc,configure.ac: On platforms with the F_MAXFD
          fcntl but without closefrom(), we were failing to close the highest
          numbered open fd in our closefrom() replacement.  We now also work
          around valgrind not hiding some extra fds it has open, but then
          complaining if we try to close them.

Wed Nov 21 22:50:21 GMT 2012  Olly Betts <olly@survex.com>

        * tests/harness/testsuite.cc: When reporting valgrind error, skip any
          warnings.

Tue Nov 20 07:26:24 GMT 2012  Olly Betts <olly@survex.com>

        * tests/api_anydb.cc: msetweights1 makes multidb1 and multidb2
          redundant, so remove them.

Tue Nov 20 07:21:46 GMT 2012  Olly Betts <olly@survex.com>

        * tests/api_backend.cc: Extend msetweights1 to test the case where
          only even docids match, so in the multi_* case, only docids from
          one subdatabase match.

Tue Nov 20 07:04:55 GMT 2012  Olly Betts <olly@survex.com>

        * tests/api_backend.cc: Add testcase msetweights1 which checks we
          get the weights we expect for a two term query.

Mon Nov 19 21:17:33 GMT 2012  Olly Betts <olly@survex.com>

        * queryparser/termgenerator.cc: TermGenerator internal member can
          never be NULL, so drop NULL test.

Sat Nov 17 20:54:50 GMT 2012  Olly Betts <olly@survex.com>

        * tests/harness/testsuite.cc: Remove compatibility code for valgrind <
          3.3.0, since we reject such old versions at configure time.

Sat Nov 17 00:05:36 GMT 2012  Olly Betts <olly@survex.com>

        * matcher/localsubmatch.cc: Optimise an unweighted query term which
          matches all the documents in a subdatabase to use the "MatchAll"
          postlist.  (ticket#387)

Fri Nov 16 23:36:34 GMT 2012  Olly Betts <olly@survex.com>

        * tests/api_weight.cc: New testcase checkstatsweight1 which checks a
          weight subclass gets the correct values for all the stats.

Fri Nov 16 07:30:18 GMT 2012  Olly Betts <olly@survex.com>

        * include/xapian/version_h.cc: Generate a check for compatible _DEBUG
          settings if built with MSVC.  (ticket#389)

Fri Nov 16 01:28:55 GMT 2012  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Improve a couple of comments.

Fri Nov 16 01:25:28 GMT 2012  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Implicitly close any unclosed brackets
          at the end of the query string.  Patch from Sehaj Singh Kalra.
        * tests/queryparsertest.cc: Adjust existing testcases and feature tests.

Thu Nov 15 23:57:10 GMT 2012  Olly Betts <olly@survex.com>

        * tests/api_query.cc: Add testcase xor3 to ensure that XOR handles all
          remaining subqueries running out at the same time.

Thu Nov 15 10:57:32 GMT 2012  Olly Betts <olly@survex.com>

        * tests/api_query.cc: One test here does need a backend, and it seems
          a more useful category, so drop the "don't need a backend" part from
          the @brief documentation comment.

Thu Nov 15 09:29:47 GMT 2012  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Fix calculation of 0.0/0.0 in some cases.
          This then got used as a minimum weight, but it seems this gives -nan
          (at least on x86-64 Linux) so it may have been harmless in practice.

Thu Nov 15 05:39:47 GMT 2012  Olly Betts <olly@survex.com>

        * tests/api_anydb.cc: Eliminate workarounds for egcs 1.1.2 (certainly
          we no longer support a compiler that old, but maybe some newer
          compilers have the same issue, so I've rewritten the code to iterate
          backwards over one MSet, which is a useful feature to have coverage
          for).

Thu Nov 15 05:28:40 GMT 2012  Olly Betts <olly@survex.com>

        * tests/api_anydb.cc: Fix reversebool1 and reversebool2 to actually
          use the result when they check an MSetIterator against end().

Thu Nov 15 01:55:15 GMT 2012  Olly Betts <olly@survex.com>

        * bin/xapian-replicate.cc: Add --quiet option to xapian-replicate, and
          be a little more verbose by default.

Thu Nov 15 01:54:14 GMT 2012  Olly Betts <olly@survex.com>

        * bin/xapian-replicate.cc: xapian-replicate --force-copy now only
          forces a single copy, and then attempts to replicate incrementally.

Thu Nov 15 00:51:50 GMT 2012  Olly Betts <olly@survex.com>

        * bin/xapian-replicate.cc: Tweak code layout.

Wed Nov 14 21:40:45 GMT 2012  Olly Betts <olly@survex.com>

        * net/remoteconnection.cc: Allow files > 32G to be be copied by
          replication.

Tue Nov 13 03:44:03 GMT 2012  Olly Betts <olly@survex.com>

        * tests/api_replicate.cc: Pass 'true' or 'false' for 'bool' parameter,
          not '0' or '1' (especially confusing as the two previous parameters
          were integers which were often 0 or 1...)

Tue Nov 13 03:34:42 GMT 2012  Olly Betts <olly@survex.com>

        * bin/xapian-replicate.cc,net/replicatetcpclient.cc,
          net/replicatetcpclient.h: Add --full-copy option to xapian-replicate.
        * tests/api_replicate.cc: New testcase replicate6 which tests the same
          code path used by 'xapian-replicate --full-copy'.

Tue Nov 13 02:55:44 GMT 2012  Olly Betts <olly@survex.com>

        * tests/api_replicate.cc: Use '++' instead of '+= 1'.  Drop superfluous
          'return;' at end of function returning void.

Tue Nov 13 01:12:33 GMT 2012  Olly Betts <olly@survex.com>

        * tests/harness/unixcmds.cc: Tweak to avoid default initialisation of
          string.

Mon Nov 12 23:25:14 GMT 2012  Olly Betts <olly@survex.com>

        * include/xapian/unicode.h: GCC 4.6.3 doesn't optimise the asr idion
          either.  Add links to the PR I filed and the GCC documentation that
          signed right shift does sign extension.

Mon Nov 12 10:21:19 GMT 2012  Olly Betts <olly@survex.com>

        * include/xapian/unicode.h,unicode/tclUniData.cc: Update Unicode
          character database to 6.2.0.
        * tests/api_unicode.cc: Add tests for U+20BA, added in 6.2.0.

Sat Nov 10 05:39:16 GMT 2012  Olly Betts <olly@survex.com>

        * api/leafpostlist.cc,matcher/multiandpostlist.cc: Improved fix for
          #590 - count all matching LeafPostList objects with a Weight object
          rather than trying to prune at the MultiAndPostList level based on
          max_wt (if wdf is always zero for a term, BM25 gives max_wt of 0,
          which leads to us never counting that subquery.
        * tests/api_percentages.cc: Add regression test topercent7.

Fri Nov 09 04:25:32 GMT 2012  Olly Betts <olly@survex.com>

        * tests/api_percentages.cc: Note bug number in regression test for
          #590.

Tue Nov 06 22:42:31 GMT 2012  Olly Betts <olly@survex.com>

        * backends/brass/brass_table.cc: Restore two missing lines in database
          checking where we report a block with the wrong level.

Tue Oct 16 11:19:42 GMT 2012  Olly Betts <olly@survex.com>

        * api/compactor.cc,backends/dbcheck.cc,backends/dbfactory.cc,
          common/Makefile.mk: Fix to build when configured with
          --disable-backend-brass --disable-backend-chert.  (ticket#586)

Mon Oct 15 04:07:30 GMT 2012  Olly Betts <olly@survex.com>

        * HACKING: automake 1.12.4 is now used to generate snapshots and
          releases.

Sat Oct 13 09:34:21 GMT 2012  Olly Betts <olly@survex.com>

        * weight/weightinternal.h: Revert addition of "#include <config.h>" in
          r16820.
        * HACKING: Document that we don't include <config.h> from header
          files, and the reason why.

Sat Oct 13 09:00:23 GMT 2012  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: Fix documentation comment typos:
          "covert" -> "convert".

Thu Oct 11 12:28:30 GMT 2012  Olly Betts <olly@survex.com>

        * docs/valueranges.rst: Update documentation to reflect change in
          Xapian 1.1.2 - DateValueRangeProcessor and StringValueRangeProcessor
          now support a prefix or suffix.

Mon Oct 01 05:05:54 GMT 2012  Olly Betts <olly@survex.com>

        * HACKING: Try to make it clearer we're looking for a dual-licence
          on submitted patches.

Tue Sep 25 08:09:08 GMT 2012  Olly Betts <olly@survex.com>

        * common/Makefile.mk,common/append_filename_arg.h,
          tests/harness/unixcmds.cc: Split out append_filename_argument() into
          its own file so it can be used elsewhere.

Tue Sep 25 06:46:03 GMT 2012  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Mark MSetIterator::at_end() and
          ESetIterator::at_end() as @private @internal so that they don't
          appear in the API docs.

Tue Sep 25 06:45:07 GMT 2012  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Remove FIXMEs about converting MSetIterator
          and ESetIterator to use Internal classes - as HACKING notes, the
          current implementation is that way for performance reasons.

Tue Sep 25 06:36:37 GMT 2012  Olly Betts <olly@survex.com>

        * tests/harness/unixcmds.cc: Escape filenames on POSIX platforms by
          wrapping in single quotes and specially handling single quotes in
          the filename - previously newlines in filenames got eaten by the
          shell.

Tue Sep 25 06:32:36 GMT 2012  Olly Betts <olly@survex.com>

        * tests/harness/unixcmds.cc: Protect filenames which start with '-' on
          MS Windows like we already do on other platforms.  The built-in
          commands generally only interpret '/' as the character introducing a
          command line option (which we already convert to '\'), but many
          ported programs understand '-' too/instead.

Sat Aug 25 16:09:50 GMT 2012  Dan Colish <dcolish@gmail.com>

        * include/xapian/enquire.h: Add function to test MSetIterator and
          ESetIterator exhaustion against the size of the underlying interee
          since comparison against an empty Itor is not suitable for an
          exhaustion test. Add FIXME that these Iterators should use an Internal
          class.

Thu Aug 09 21:50:52 GMT 2012  Dan Colish <dcolish@gmail.com>

        * weight/weightinternal.h: Include config.h since macros are used
          from it.

Wed Aug 08 15:40:38 GMT 2012  Dan Colish <dcolish@gmail.com>

        * api/queryvector.h: Backout previous fix. When compiling with -O0,
          increase the stack limit to > 8M when running scalability tests.

Wed Aug 08 02:10:21 GMT 2012  Dan Colish <dcolish@gmail.com>

        * api/queryvector.h: Fix SIGBUS when clearing QueryVectors

Wed Aug 01 15:25:25 GMT 2012  Dan Colish <dcolish@gmail.com>

        * HACKING,Makefile.am,tests/Makefile.am: Fix non-portable warnings
        from automake, add HACKING doc for check-syntax make target

Wed Aug 01 04:54:18 GMT 2012  Dan Colish <dcolish@gmail.com>

        * Makefile.am,api/Makefile,backends/Makefile,backends/brass/Makefile,
          backends/chert/Makefile,backends/inmemory/Makefile,
          backends/multi/Makefile,backends/remote/Makefile,bin/Makefile,
          common/Makefile,examples/Makefile,expand/Makefile,
          geospatial/Makefile,include/Makefile,include/xapian/Makefile,
          languages/Makefile,matcher/Makefile,net/Makefile,
          queryparser/Makefile,tests/harness/Makefile,unicode/Makefile,
          weight/Makefile: Add check-syntax target to Makefiles to support
          editor syntax checks

Sun Jul 29 15:32:00 GMT 2012  Olly Betts <olly@survex.com>

        * configure.ac: Bump LIBRARY_VERSION_INFO so I can package a snapshot
          cleanly.

Tue Jul 24 01:35:17 GMT 2012  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h,queryparser/queryparser.cc,
          queryparser/queryparser.lemony,queryparser/queryparser_internal.h,
          tests/queryparsertest.cc: Add FieldProcessor class (ticket#128) -
          currently marked as an experimental API while we sort out how best
          to sort out exactly how it interacts with other QueryParser features.

Tue Jul 24 01:19:03 GMT 2012  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: Add extra DateValueRangeProcessor
          constructor overloaded form so that in DateValueRangeProcessor(1,
          "date:"), the const char * gets interpreted as std::string rather
          than bool.
        * tests/queryparsertest.cc: Add regression test.

Thu Jul 19 05:32:04 GMT 2012  Olly Betts <olly@survex.com>

        * backends/brass/brass_dbcheck.h,
          backends/inmemory/inmemory_alltermslist.cc,bin/xapian-delve.cc: Fix
          filenames in comments which mismatch actual name of file.

Thu Jul 19 05:27:38 GMT 2012  Olly Betts <olly@survex.com>

        * queryparser/termgenerator_internal.cc: Remove "FIXME: Add API to
          allow control of how stemming is used?", as we have now added such
          an API.

Thu Jul 19 05:24:49 GMT 2012  Olly Betts <olly@survex.com>

        * include/xapian/termgenerator.h,queryparser/termgenerator.cc,
          queryparser/termgenerator_internal.cc,
          queryparser/termgenerator_internal.h,tests/termgentest.cc: Add new
          method TermGenerator::set_max_word_length() to allow this limit to
          be adjusted by the user.

Mon Jul 16 03:34:27 GMT 2012  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Clarify that the "reverse" parameter of
          set_sort_by_relevance_then_value() and
          set_sort_by_relevance_then_key() only affects the ordering of the
          value/key part of the sort.

Fri Jul 13 04:55:26 GMT 2012  Dan Colish <dcolish@gmail.com>

        * matcher/multimatch.cc: Remove duplicate import

Thu Jul 12 05:13:57 GMT 2012  Olly Betts <olly@survex.com>

        * common/debuglog.cc: Preserve errno over debug logging calls, so they
          can safely be added to code which expects errno not to change.

Mon Jul 02 05:27:43 GMT 2012  Dan Colish <dcolish@gmail.com>

        * backends/brass/brass_databasereplicator.cc: Use new/delete to avoid
          variable length array gcc extension and comply with c++98

Mon Jul 02 05:02:14 GMT 2012  Dan Colish <dcolish@gmail.com>

        * api/omdatabase.cc,tests/api_wrdb.cc: Prefer container.empty() to
          container.size() == 0.

Sun Jul 01 10:46:19 GMT 2012  Olly Betts <olly@survex.com>

        * NEWS: Update from ChangeLog, 1.2.11 and 1.2.12.

Fri Jun 29 15:32:11 GMT 2012  Dan Colish <dcolish@>

        * tests/harness/testsuite.cc: Add safeunistd.h unconditionally for
          isatty, required by GCC 4.7

Wed Jun 27 10:45:13 GMT 2012  Olly Betts <olly@survex.com>

        * AUTHORS: Add GSoC students.

Tue Jun 26 08:45:03 GMT 2012  Olly Betts <olly@survex.com>

        * include/xapian.h: Add check for Qt headers being included before us
          and defining 'slots' as a macro - if they are, give a clear error
          advising how to work around this.

Thu Jun 14 23:48:15 GMT 2012  Olly Betts <olly@survex.com>

        * docs/admin_notes.rst: Correction - we don't "create a lock file", we
          "lock a file".

Tue Jun 12 13:08:58 GMT 2012  Olly Betts <olly@survex.com>

        * tests/api_replicate.cc: Make sure XAPIAN_MAX_CHANGESETS gets unset
          after testcases which set it, so further testcases don't waste time
          generating changesets.

Tue Jun 12 12:11:51 GMT 2012  Olly Betts <olly@survex.com>

        * docs/replication.rst: The value of XAPIAN_MAX_CHANGESETS does now
          actually determine how many changesets we keep.

Tue Jun 12 01:20:59 GMT 2012  Olly Betts <olly@survex.com>

        * configure.ac: Force link_all_deplibs_CXX=no for Solaris.

Tue Jun 12 01:08:17 GMT 2012  Olly Betts <olly@survex.com>

        * xapian-config.in: Don't interpret a missing .la file as meaning that
          we only have static libraries.

Sun Jun 10 12:57:16 GMT 2012  Olly Betts <olly@survex.com>

        * backends/brass/brass_btreebase.cc,backends/brass/brass_btreebase.h,
          backends/brass/brass_check.cc: Remove is_empty(), tweak
          calculate_last_block() to calculate the bit map size correctly in
          the case of an empty table, and use the bit map size instead of
          is_empty() in xapian-check.
        * backends/chert/chert_btreebase.cc,backends/chert/chert_btreebase.h,
          backends/chert/chert_check.cc: Make equivalent changes for chert.

Sun Jun 10 11:27:52 GMT 2012  Olly Betts <olly@survex.com>

        * backends/brass/brass_table.cc,backends/brass/brass_table.h: We don't
          need the workaround for existing tables which were built with a 32
          bit item count for brass, since that bug was fixed in 1.1.4, which
          is the same version which brass was added in.

Sun Jun 10 11:20:58 GMT 2012  Olly Betts <olly@survex.com>

        * backends/brass/brass_btreebase.cc,backends/brass/brass_btreebase.h,
          backends/chert/chert_btreebase.cc,backends/chert/chert_btreebase.h:
          Remove unused copy constructors for BrassTable_base and
          ChertTable_base.

Wed Jun 06 11:10:26 GMT 2012  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: Note that STEM_ALL_Z was added in
          1.2.11.  Change already made on 1.2 branch.

Tue Jun 05 06:51:12 GMT 2012  Olly Betts <olly@survex.com>

        * common/compression_stream.cc,common/compression_stream.h: Move the
          default argument to the CompressionStream constructor to the header
          and mark the constructor as explicit, since it has a single argument
          form.

Tue Jun 05 06:41:22 GMT 2012  Olly Betts <olly@survex.com>

        * api/queryvector.h: Fix somewhat dubious warning from clang.

Tue Jun 05 06:33:09 GMT 2012  Olly Betts <olly@survex.com>

        * configure.ac: Overhaul handling of compilers which pretend to be GCC,
          using a simple "case" on the preprocessed output of '__INTEL_COMPILER
          __clang__' to tell which is in use.  We now explicitly check for
          clang, and only pass it warning flags it actually understands.  GCC
          4.0 is now lumped in with 3.*, since we handle it exactly the same.
          Enable -Wdouble-promotion for GCC >= 4.6.  Check for symbol
          visibility support under any GCC-alike (which means we now run the
          test with Intel's compiler).  Move the check for -Bsymbolic-functions
          to be run for all compilers.

Mon Jun 04 06:21:02 GMT 2012  Olly Betts <olly@survex.com>

        * backends/dbfactory.cc: Test if we fail to open a stub database file
          in Xapian::Auto::open_stub() and throw an exception if so.
        * tests/api_backend.cc: Add regression test stubdb7.

Sun Jun 03 11:43:44 GMT 2012  Olly Betts <olly@survex.com>

        * include/xapian/query.h: Add second fake specialised form of the
          templated iterator Query constructor, for use in the Java bindings.

Sat Jun 02 12:15:11 GMT 2012  Olly Betts <olly@survex.com>

        * docs/scalability.rst: Update gmane size, fix a typo, tweak wording.

Sat Jun 02 12:10:55 GMT 2012  Olly Betts <olly@survex.com>

        * Makefile.am,api/omdocument.cc,api/omenquire.cc,backends/brass/,
          backends/chert/,bin/xapian-delve.cc,common/getopt.cc,configure.ac,
          docs/,m4-macros/xapian-1.3.m4,matcher/multimatch.cc,preautoreconf,
          tests/Makefile.am,tests/api_db.cc,tests/harness/testsuite.h,
          tests/harness/testutils.h: Change `...' quoting in prose to '...'.

Fri Jun 01 07:40:48 GMT 2012  Olly Betts <olly@survex.com>

        * HACKING,Makefile.am: If you run "make coverage-check" by hand, the
          default of compressed HTML is unhelpful, so don't default to passing
          --html-gzip to genhtml, but instead add support for GENHTML_ARGS.

Thu May 31 11:41:19 GMT 2012  Olly Betts <olly@survex.com>

        * tests/api_weight.cc: Add test that init() is now called for the
          term-independent weight contribution.

Thu May 31 11:23:05 GMT 2012  Olly Betts <olly@survex.com>

        * weight/bm25weight.cc: Avoid use of undefined values when k1 or b are
          zero.

Wed May 30 21:50:54 GMT 2012  Olly Betts <olly@survex.com>

        * tests/api_matchspy.cc: Use a cached generated database for matchspy2
          and matchspy4.

Wed May 30 13:22:54 GMT 2012  Olly Betts <olly@survex.com>

        * include/xapian/weight.h,weight/weight.cc: We were failing to call
          init() for Weight objects providing the term-independent weight.
          These now get called with init(0.0).

Wed May 30 13:13:03 GMT 2012  Olly Betts <olly@survex.com>

        * include/xapian/weight.h: Remove duplicate "need_stat(WDF);" calls,
          accidentally added by merge of opsynonym branch in r12609.

Wed May 30 07:44:23 GMT 2012  Olly Betts <olly@survex.com>

        * weight/bm25weight.cc: Fix use of uninitialised value found by new
          bm25weight4 testcase.

Wed May 30 05:38:58 GMT 2012  Olly Betts <olly@survex.com>

        * tests/api_weight.cc: Add tests for BM25 parameter combinations where
          doclen shouldn't affect the weights.

Wed May 30 05:11:34 GMT 2012  Olly Betts <olly@survex.com>

        * tests/Makefile.am: Move api_geospatial.cc into alphabetical order.

Wed May 30 05:07:51 GMT 2012  Olly Betts <olly@survex.com>

        * weight/bm25weight.cc,weight/tradweight.cc: Throw SerialisationError
          not NetworkError if unserialise() fails.
        * tests/.gitignore,tests/Makefile.am,tests/api_weight.cc: Add test
          coverage for this.

Wed May 30 05:01:33 GMT 2012  Olly Betts <olly@survex.com>

        * weight/tradweight.cc: BM25Weight -> TradWeight in exception message.

Wed May 30 04:28:43 GMT 2012  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Fix feature test added for STEM_ALL_Z.

Tue May 29 07:29:01 GMT 2012  Olly Betts <olly@survex.com>

        * tests/harness/testutils.cc,tests/harness/testutils.h: Remove unused
          test helper mset_range_is_same_percents() (thanks, lcov!)

Tue May 29 04:10:07 GMT 2012  Olly Betts <olly@survex.com>

        * tests/generate-api_generated: Test that the string returned by a
          get_description() method isn't empty.

Tue May 29 03:54:15 GMT 2012  Olly Betts <olly@survex.com>

        * generate-exceptions: Use function attributes in generated error.h.

Tue May 29 02:10:23 GMT 2012  Olly Betts <olly@survex.com>

        * configure.ac,tests/runsrv.in: In the testsuite, only run remote
          servers under valgrind if x87 FP instructions are in use.

Tue May 29 00:24:42 GMT 2012  Olly Betts <olly@survex.com>

        * include/xapian/: Use the new function attributes on various API
          methods.
        * tests/api_wrdb.cc: get_termfreq() is now marked as pure, so the
          testsuite needs to actually use the return value to check its
          exception behaviour.

Mon May 28 22:31:21 GMT 2012  Olly Betts <olly@survex.com>

        * api/query.cc,api/queryinternal.cc,api/queryinternal.h,
          include/xapian/query.h: Pass vector<pair<Xapian::termpos>, string> >&
          argument to Query::Internal::gather_terms() as a void* to avoid
          having to include <vector> in query.h.

Mon May 28 05:07:02 GMT 2012  Olly Betts <olly@survex.com>

        * include/xapian/attributes.h: Remove unused XAPIAN_NOTHROW_API_METHOD
          as we're handling that a different way instead.

Mon May 28 00:41:55 GMT 2012  Olly Betts <olly@survex.com>

        * docs/doxygen_api.conf.in,docs/doxygen_source.conf.in: Hide new
          function attribute macros from doxygen.

Sun May 27 14:04:34 GMT 2012  Olly Betts <olly@survex.com>

        * include/xapian/query.h: Use "Internal" instead of "Query::Internal"
          in constructor prototype argument list for consistency with other
          cosntructors, and so this constructor gets ignored by SWIG.

Sun May 27 07:38:56 GMT 2012  Olly Betts <olly@survex.com>

        * exception_data.pm: Fix typo to fix warning and so that XAPIAN_NOTHROW
          on a method will work.

Sun May 27 01:43:30 GMT 2012  Olly Betts <olly@survex.com>

        * exception_data.pm,include/Makefile.mk,include/xapian.h,
          include/xapian/attributes.h,include/xapian/unicode.h: Add
          XAPIAN_CONST_FUNCTION, XAPIAN_PURE_FUNCTION, and XAPIAN_NOTHROW
          macros for marking functions and methods with those attributes.
          (tickets #151, #454)

Fri May 25 06:42:35 GMT 2012  Olly Betts <olly@survex.com>

        * include/xapian/weight.h: Fix documentation comment typo ("k1" ->
          "k").

Fri May 25 05:44:05 GMT 2012  Olly Betts <olly@survex.com>

        * backends/flint_lock.h: Mark FlintLock::throw_databaselockerror() as
          XAPIAN_NORETURN.

Thu May 24 12:28:35 GMT 2012  Olly Betts <olly@survex.com>

        * include/xapian/termgenerator.h,queryparser/termgenerator.cc,
          queryparser/termgenerator_internal.cc,
          queryparser/termgenerator_internal.h: Add
          TermGenerator::set_stemming_strategy() method, with strategies which
          correspond to those of QueryParser.  Based on patch from Sehaj Singh
          Kalra, with some tweaks for adding term positions in more cases.
          (Fixes ticket#563)
        * tests/termgentest.cc: Add test coverage for the new features.

Thu May 24 01:37:31 GMT 2012  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: Add doc comment for stem_strategy
          typedef.

Wed May 23 11:33:08 GMT 2012  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h,queryparser/queryparser.lemony:
          Add new QueryParser::STEM_ALL_Z stemming strategy, which stems all
          terms and adds a Z prefix.  (Patch from Sehaj Singh Kalra, fixes
          ticket#562)
        * tests/queryparsertest.cc: Add test coverage for
          QueryParser::STEM_ALL_Z.

Wed May 23 05:37:20 GMT 2012  Olly Betts <olly@survex.com>

        * api/valuesetmatchdecider.cc,include/xapian/valuesetmatchdecider.h:
          "Limited" to "Ltd" in (C) two statements, for consistency (and with
          Charlie's agreement on IRC).

Wed May 23 02:25:53 GMT 2012  Olly Betts <olly@survex.com>

        * api/,include/xapian/query.h: Rework QueryBranch to use a special
          QueryVector class rather than std::vector<Xapian::Query>.  The
          special class is no bigger than std::vector<Xapian::Query>, and
          handles up to two entries by holding them within the object (at
          least GCC's std::vector doesn't currently do this space optimisation)
          which significantly reduces the memory used by a pairwise operator,
          which is very desirable as we no longer flatten a tree of the same
          pairwise operator as we build the query.

Tue May 22 06:25:10 GMT 2012  Olly Betts <olly@survex.com>

        * api/queryinternal.cc: Handle the left side of AND_NOT and
          AND_MAYBE being MatchNothing in add_subquery() rather than
          in done().

Tue May 22 02:40:45 GMT 2012  Olly Betts <olly@survex.com>

        * api/queryinternal.cc: Handle QueryAndLike with a MatchNothing
          subquery in add_subquery() rather than done().

Tue May 22 02:01:00 GMT 2012  Olly Betts <olly@survex.com>

        * api/queryinternal.cc,api/queryinternal.h: Drop MatchNothing
          subqueries in OR-like situations in add_subquery() rather than
          adding them and then handling it later.

Sat May 19 00:27:23 GMT 2012  Olly Betts <olly@survex.com>

        * tests/runsrv.in: Add explanation of why we have this script.

Sat May 19 00:27:10 GMT 2012  Olly Betts <olly@survex.com>

        * tests/runtest.in: Fix comment typo.

Fri May 18 12:50:08 GMT 2012  Olly Betts <olly@survex.com>

        * backends/inmemory/inmemory_database.cc: Check if the database is
          closed when asked to iterate metadata keys.  Fixes recently added
          testcase closedb10 for inmemory.

Fri May 18 12:34:24 GMT 2012  Olly Betts <olly@survex.com>

        * tests/Makefile.am: Pass -ldl last when compiling zlib-vg.so, as that
          seems to be needed on Ubuntu 12.04.

Fri May 18 04:54:09 GMT 2012  Olly Betts <olly@survex.com>

        * tests/api_closedb.cc: We now test almost all methods of Database
          and WritableDatabase after calling close().  (ticket#337)

Thu May 17 14:26:11 GMT 2012  Olly Betts <olly@survex.com>

        * backends/brass/,backends/chert/: After closing the database, methods
          which try to use the termlist would throw FeatureUnavailableError
          with message "Database has no termlist", assuming that the termlist
          table not being open meant it wasn't present.  Fix to check if the
          postlist_table is open to determine which case we're in.
        * tests/api_closedb.cc: Improve test coverage for closed databases.
          (ticket#337)

Tue May 15 11:24:34 GMT 2012  Olly Betts <olly@survex.com>

        * NEWS: Update from ChangeLog and 1.2.10.

Tue May 15 11:12:42 GMT 2012  Olly Betts <olly@survex.com>

        * backends/chert/chert_cursor.cc: Fix incorrect use of "delete" to
          "delete []".  The type is POD, so I suspect this mistake didn't
          actually cause any problems, and it only happens when a cursor
          gets rebuilt because the B-tree has gained a level, so it's
          a rather rare occurrence.

Tue May 15 11:09:44 GMT 2012  Olly Betts <olly@survex.com>

        * backends/brass/brass_cursor.cc: Fix incorrect use of "delete" to
          "delete []".  The type is POD, so I suspect this mistake didn't
          actually cause any problems, and it only happens when a cursor
          gets rebuilt because the B-tree has gained a level, so it's
          a rather rare occurrence.

Thu May 10 02:16:21 GMT 2012  Olly Betts <olly@survex.com>

        * HACKING: Update Debian/Ubuntu packaging instructions.

Thu May 10 02:14:48 GMT 2012  Olly Betts <olly@survex.com>

        * HACKING: freshmeat -> freecode.

Wed May 09 02:54:40 GMT 2012  Olly Betts <olly@survex.com>

        * tests/api_wrdb.cc: Add "safeunistd.h", required for GCC 4.7.

Wed May 09 00:09:17 GMT 2012  Olly Betts <olly@survex.com>

        * api/query.cc: Construct MatchAll using constructor rather than
          assignment syntax.

Wed May 09 00:08:29 GMT 2012  Olly Betts <olly@survex.com>

        * backends/brass/brass_cursor.h: Whitespace tweaks.

Tue May 08 23:51:01 GMT 2012  Olly Betts <olly@survex.com>

        * docs/admin_notes.rst: Document xapian-check for fixing corrupted
          databases.

Tue May 08 11:30:06 GMT 2012  Olly Betts <olly@survex.com>

        * common/fileutils.cc: Add safeunistd.h for mkdir, required by GCC
          4.7 (reported by Gaurav Arora).

Wed May 02 03:44:25 GMT 2012  Olly Betts <olly@survex.com>

        * weight/weightinternal.cc: Using AssertEq() on NULL doesn't compile,
          at least with recent GCC.

Wed May 02 02:58:37 GMT 2012  Olly Betts <olly@survex.com>

        * common/omassert.cc: Fix warning with GCC in build with assertions
          enabled.

Wed May 02 02:55:54 GMT 2012  Olly Betts <olly@survex.com>

        * HACKING: We're now using automake 1.12 to generate snapshots and
          releases.

Mon Apr 23 13:16:36 GMT 2012  Olly Betts <olly@survex.com>

        * tests/api_anydb.cc: Fix tradweight1 to test that TradWeight(0)
          means that wdf and doc length don't affect the weight of a term.

Mon Apr 23 03:44:02 GMT 2012  Olly Betts <olly@survex.com>

        * backends/chert/,backends/dbcheck.cc,bin/xapian-check.cc,
          include/xapian/database.h: Add "fix" option to xapian-check, which
          currently will regenerate iamchert if it isn't valid, and will
          regenerate base files from the .DB files (only really tested on
          databases which have just been compacted).

Mon Apr 23 03:40:35 GMT 2012  Olly Betts <olly@survex.com>

        * common/filetests.h: Add new function file_size() to get the size
          of a file from a path or file descriptor.
        * backends/brass/brass_compact.cc,backends/chert/chert_compact.cc,
          net/remoteconnection.cc,tests/api_replicate.cc: Use this new
          function.

Wed Apr 18 01:35:21 GMT 2012  Olly Betts <olly@survex.com>

        * weight/bm25weight.cc,weight/tradweight.cc: Fix comment typo.

Wed Apr 11 08:26:42 GMT 2012  Olly Betts <olly@survex.com>

        * HACKING: Update section on patches to mention git (git diff and git
          format-patch), and using "-r" with normal diff, and also that
          ptardiff offers a nice way to diff against an unpacked tarball.

Wed Apr 04 02:22:04 GMT 2012  Olly Betts <olly@survex.com>

        * backends/brass/brass_compact.cc,backends/chert/chert_compact.cc:
          If the output database is empty, don't write a metainfo tag out.
          Take care not to divide by zero when computing the percentage
          size change for a table.
        * tests/api_compact.cc: Add new testcase compactempty1 to provide
          regression tests.

Wed Apr 04 01:48:34 GMT 2012  Olly Betts <olly@survex.com>

        * backends/dbcheck.cc: If the database couldn't be opened, don't try
          to reserve space for cross-checking doclens, as that just results in
          us reporting a confusing warning about there being too many documents
          to cross-check doclens.

Fri Mar 30 22:23:53 GMT 2012  Olly Betts <olly@survex.com>

        * backends/document.h: "An string" -> "A string" in internal doc
          comment.

Fri Mar 30 22:20:11 GMT 2012  Olly Betts <olly@survex.com>

        * include/xapian/weight.h: Fix switched lower and upper in doc comments
          for Weight methods get_doclength_lower_bound() and
          get_doclength_upper_bound().  Correct maximum to minimum in
          get_doclength_lower_bound() comment and note that this excludes zero
          length documents.  Fix "An lower" to "A lower".

Wed Mar 28 09:54:33 GMT 2012  Olly Betts <olly@survex.com>

        * NEWS: Fix typos in another old entry.

Wed Mar 28 09:53:00 GMT 2012  Olly Betts <olly@survex.com>

        * NEWS: DatabaseCoruptError -> DatabaseCorruptError in old entries.

Wed Mar 28 08:05:13 GMT 2012  Olly Betts <olly@survex.com>

        * tests/termgentest.cc: Add test coverage for discarding of terms > 64
          bytes by TermGenerator.

Tue Mar 27 21:07:07 GMT 2012  Olly Betts <olly@survex.com>

        * include/xapian/database.h: Note when Database::close() was added.

Tue Mar 27 13:03:22 GMT 2012  Olly Betts <olly@survex.com>

        * api/omenquire.cc,docs/deprecation.rst,include/xapian/enquire.h,
          include/xapian/errorhandler.h: Deprecate Xapian::ErrorHandler.
          (ticket#3)

Tue Mar 27 13:01:53 GMT 2012  Olly Betts <olly@survex.com>

        * HACKING,docs/deprecation.rst,docs/doxygen_api.conf.in,
          docs/doxygen_source.conf.in: Updates for addition of
          XAPIAN_DEPRECATED_EX() and XAPIAN_DEPRECATED_CLASS_EX.

Tue Mar 27 10:11:23 GMT 2012  Olly Betts <olly@survex.com>

        * HACKING,include/xapian.h,include/xapian/deprecated.h: Add
          XAPIAN_DEPRECATED_EX() and XAPIAN_DEPRECATED_CLASS_EX macros which
          mark a feature as deprecated externally but not when building the
          library.

Tue Mar 27 08:46:29 GMT 2012  Olly Betts <olly@survex.com>

        * api/compactor.cc: Include the xapian sub-headers we actually use
          rather than xapian.h, to avoid needless rebuilds.

Tue Mar 27 08:33:28 GMT 2012  Olly Betts <olly@survex.com>

        * HACKING: Add example of deprecating a pure virtual method.

Tue Mar 27 08:30:17 GMT 2012  Olly Betts <olly@survex.com>

        * NEWS: Update from ChangeLog.

Sat Mar 24 12:33:44 GMT 2012  Olly Betts <olly@survex.com>

        * backends/brass/brass_databasereplicator.cc: Fix signed vs unsigned
          comparison warning with GCC 4.4.3.

Sat Mar 24 12:26:13 GMT 2012  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h,queryparser/queryparser_internal.h:
          Change the default stemming strategy to STEM_SOME, to eliminate
          the API gotcha that setting a stemmer is ignored until you also
          set a strategy.
        * tests/queryparsertest.cc: Add testcase qp_defaultstrategysome1 to
          check that the default is STEM_SOME.

Fri Mar 23 04:29:32 GMT 2012  Olly Betts <olly@survex.com>

        * tests/perftest/perftest.cc: Fix comment cut-and-paste error.

Fri Mar 23 04:28:24 GMT 2012  Olly Betts <olly@survex.com>

        * Makefile.am: Use git commit hash in the title of a coverage report
          generated from a git tree.

Thu Mar 22 04:29:38 GMT 2012  Olly Betts <olly@survex.com>

        * xapian-core.spec.in: Remove xapian-chert-update.

Mon Mar 19 05:42:50 GMT 2012  Olly Betts <olly@survex.com>

        * matcher/multiandpostlist.cc: Don't count unweighted subqueries of
          MultiAndPostList for percentage calculations, as OP_FILTER maps to
          MultiAndPostList now.  (ticket#590)
        * tests/api_percentages.cc: Regression test topercent6.

Sun Mar 18 23:24:04 GMT 2012  Dan Colish <dcolish@>

        * backends/brass/brass_databasereplicator.cc: size out buffer to the
          incoming blocksize

Sun Mar 18 17:02:14 GMT 2012  Dan Colish <dcolish@>

        * .gitignore: ignore /.deps as well

Sun Mar 18 16:46:45 GMT 2012  Dan Colish <dcolish@>

        * .gitignore:Update gitignore for bump to libxapian-1.3

Sun Mar 18 04:37:37 GMT 2012  Olly Betts <olly@survex.com>

        * configure.ac: Set LIBRARY_VERSION_SUFFIX to -1.3.

Sun Mar 18 00:48:05 GMT 2012  Dan Colish <dcolish@gmail.com>

        * backends/brass/,common/Makefile.mk, common/compression_stream.h,
          common/compression_stream.cc: Compress changesets in brass
          replication. Increments the changeset version. Ticket #348

Sun Mar 18 00:39:23 GMT 2012  Dan Colish <dcolish@gmail.com>

        * tests/.gitignore,tests/soaktest/.gitignore: Add additional ignores
          for test artifacts

Fri Mar 16 05:23:54 GMT 2012  Olly Betts <olly@survex.com>

        * common/Makefile.mk: Missing part of previous change.

Fri Mar 16 04:59:53 GMT 2012  Olly Betts <olly@survex.com>

        * Makefile.am,m4-macros/xapian.m4: Rename libxapian to libxapian-1.3
          and xapian.m4 to xapian-1.3.m4.

Wed Mar 14 04:58:55 GMT 2012  Olly Betts <olly@survex.com>

        * NEWS,tests/api_unicode.cc,unicode/tclUniData.cc: Update
          Unicode character database to 6.1.0.

Wed Mar 14 02:23:27 GMT 2012  Olly Betts <olly@survex.com>

        * NEWS: Update for 1.3.0.

Tue Mar 13 07:44:32 GMT 2012  Olly Betts <olly@survex.com>

        * NEWS: Update from 1.2.9 and ChangeLog.

Tue Mar 13 00:28:58 GMT 2012  Olly Betts <olly@survex.com>

        * docs/geospatial.rst: Fix typo - it's LatLongCoords::append() not
          LatLongCoords::insert().

Mon Mar 12 23:14:20 GMT 2012  Olly Betts <olly@survex.com>

        * docs/admin_notes.rst: Fix typo - need "1.2.x" not "1.0.x" to get
          both flint and chert support.

Mon Mar 12 11:54:19 GMT 2012  Olly Betts <olly@survex.com>

        * docs/Makefile.am: doxygen no longer generates any GIF files, so
          stop trying to ship or install them.

Thu Mar 08 10:21:51 GMT 2012  Olly Betts <olly@survex.com>

        * docs/index.rst: Add link to new "getting started" guide.

Mon Mar 05 06:05:28 GMT 2012  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Fix curly double quote testcase.

Mon Mar 05 00:36:33 GMT 2012  Olly Betts <olly@survex.com>

        * matcher/: Fix issue with AND, OR, and XOR queries against a database
          with no documents in it - this was causing a divide by zero, which led
          to MSet::get_matches_estimated() reporting 2147483648 on i386.
        * tests/api_backend.cc: Add regression test emptydb1.

Sun Mar 04 23:05:17 GMT 2012  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Fix comment typo.

Fri Mar 02 04:00:19 GMT 2012  Olly Betts <olly@survex.com>

        * tests/harness/testsuite.cc: Address new warnings from GCC 4.6.

Wed Feb 29 22:36:26 GMT 2012  Olly Betts <olly@survex.com>

        * include/xapian/database.h: Improve documentation of Database::close()
          and ~WritableDatabase().

Thu Jan 26 03:49:24 GMT 2012  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony,tests/queryparsertest.cc: Allow
          Unicode curly double quote characters to start and/or end phrases.

Sun Jan 22 13:28:30 GMT 2012  Olly Betts <olly@survex.com>

        * bin/xapian-delve.cc: Send errors to stderr not stdout.

Sun Jan 22 13:16:21 GMT 2012  Olly Betts <olly@survex.com>

        * HACKING: Update details of versions of doxygen, automake and libtool
          used to bootstrap snapshots and releases.

Fri Jan 20 21:35:38 GMT 2012  Olly Betts <olly@survex.com>

        * tests/Makefile.am: unittest needs getopt for non-glibc platforms.

Fri Jan 20 21:33:59 GMT 2012  Olly Betts <olly@survex.com>

        * include/xapian/query.h: GCC 4.2.1 on Mac OS X seems to need a copy
          ctor for InvertedQuery_ - unclear why, but it's easy to add one.

Wed Jan 18 13:13:07 GMT 2012  Olly Betts <olly@survex.com>

        * include/xapian/matchspy.h,include/xapian/postingsource.h,
          include/xapian/weight.h: Document that you can define a static
          operator delete method in your subclass if deallocation needs to be
          handled specially.  (Closes ticket#554)

Wed Jan 18 12:27:20 GMT 2012  Olly Betts <olly@survex.com>

        * include/xapian/geospatial.h: Mark as experimental for now.

Wed Jan 18 12:22:39 GMT 2012  Olly Betts <olly@survex.com>

        * docs/geospatial.rst: Say "haversine" rather than "Haversine"
          consistently.

Wed Jan 18 12:01:28 GMT 2012  Olly Betts <olly@survex.com>

        * include/xapian/geospatial.h: Change empty() to return bool not
          size_t.

Wed Jan 18 10:44:16 GMT 2012  Olly Betts <olly@survex.com>

        * docs/geospatial.rst: Fix minor typos in geospatial docs.

Wed Jan 18 10:39:53 GMT 2012  Olly Betts <olly@survex.com>

        * Makefile.am,api/postingsource.cc,api/queryinternal.cc,
          api/registry.cc,common/output.h,common/registryinternal.h,
          docs/geospatial.rst,geospatial/,include/Makefile.mk,include/xapian.h,
          include/xapian/geospatial.h,include/xapian/postingsource.h,
          include/xapian/registry.h,tests/.gitignore,tests/Makefile.am,
          tests/api_geospatial.cc: Merge geotomerge2 branch from github.
          Closes ticket#481.

Tue Jan 17 22:29:10 GMT 2012  Olly Betts <olly@survex.com>

        * api/errorhandler.cc: Reorder header includes.

Mon Jan 16 22:59:02 GMT 2012  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h,queryparser/queryparser.lemony: Fix
          FLAG_AUTO_SYNONYMS not to enable auto multi-word synonyms too.
        * tests/queryparsertest.cc: Extend testcase qp_synonym1 to include a
          regression test for this bug.

Sun Jan 15 12:41:35 GMT 2012  Olly Betts <olly@survex.com>

        * .gitignore,backends/Makefile.mk,backends/brass/,backends/chert/,
          backends/dbcheck.cc,bin/,common/bitstream.h,
          include/xapian/database.h: Add a (currently experimental) API for
          checking the integrity of databases (partly addresses ticket#238).
          This means we can remove XAPIAN_VISIBILITY_DEFAULT from a number of
          functions which aren't in the public API (partly addresses
          ticket#63).

Fri Jan 13 12:07:39 GMT 2012  Olly Betts <olly@survex.com>

        * tests/stemtest.cc: Include <xapian.h> rather than <xapian/stem.h> -
          we're trying to test the public API, so including the public API
          header is better.

Thu Jan 12 13:15:27 GMT 2012  Olly Betts <olly@survex.com>

        * tests/unittest.cc: Add new testcases simple_exceptions_work1 and
          class_exceptions_work1 which perform sanity tests of exception
          handling.
        * tests/internaltest.cc: Remove testcase test_except1 which is now
          redundant.

Thu Jan 12 13:09:25 GMT 2012  Olly Betts <olly@survex.com>

        * common/str.cc: Special cases for 0 in tostring() templates aren't
          actually needed, but special casing single digit numbers may be
          worthwhile anyway, so change comments to FIXME ones about checking
          this.
        * tests/internaltest.cc: Test str() on unsigned 0, and some negative,
          signed positive, and unsigned positive single digits values.

Wed Jan 11 13:03:54 GMT 2012  Olly Betts <olly@survex.com>

        * backends/multi/multi_alltermslist.h: Fix filename in @file.

Wed Jan 11 12:53:44 GMT 2012  Olly Betts <olly@survex.com>

        * api/documentterm.h,api/maptermlist.h,api/omenquireinternal.h,
          backends/brass/,backends/chert/,backends/database.h,
          backends/document.h,backends/inmemory/inmemory_alltermslist.h,
          backends/inmemory/inmemory_database.h,
          backends/inmemory/inmemory_positionlist.h,
          backends/multi/multi_postlist.h,backends/multi/multi_termlist.h,
          backends/positionlist.h,backends/remote/net_termlist.h,
          backends/valuestats.h,common/,include/xapian/query.h,matcher/,
          queryparser/queryparser_internal.h,tests/harness/,
          tests/perftest/freemem.h,tests/perftest/runprocess.h: Convert
          comments at the start of files to @file and @brief doxygen comments.

Wed Jan 11 11:36:55 GMT 2012  Olly Betts <olly@survex.com>

        * matcher/phrasepostlist.h: Remove lone "----START-LICENCE----" -
          the rest got removed ages ago.

Wed Jan 11 11:23:04 GMT 2012  Olly Betts <olly@survex.com>

        * common/replicate_utils.h: Fix "@raises" to "@exception".

Wed Jan 11 11:21:31 GMT 2012  Olly Betts <olly@survex.com>

        * matcher/multiandpostlist.h: Fix "@parameter" to "@param".

Wed Jan 11 11:20:11 GMT 2012  Olly Betts <olly@survex.com>

        * common/debuglog.h: Fix "@msg" to "@a msg" in doxygen comment.

Wed Jan 11 11:18:50 GMT 2012  Olly Betts <olly@survex.com>

        * matcher/multiandpostlist.h: Correct @exceptions to @exception.

Wed Jan 11 10:48:05 GMT 2012  Olly Betts <olly@survex.com>

        * HACKING: We no longer have any uses of \ to introduce doxygen
          directives, so update HACKING to reflect that.

Wed Jan 11 10:46:01 GMT 2012  Olly Betts <olly@survex.com>

        * api/omdatabase.cc: Change \todo to @todo.

Wed Jan 11 10:09:29 GMT 2012  Olly Betts <olly@survex.com>

        * api/replication.h,api/valuesetmatchdecider.cc,
          common/output-internal.h,common/output.h,include/xapian/,
          tests/harness/testrunner.cc,tests/harness/testrunner.h,
          tests/perftest/perftest.cc,tests/perftest/perftest.h: Change the
          instances of \file and \brief in doxygen comments to @file and
          @brief.

Wed Jan 11 10:08:19 GMT 2012  Olly Betts <olly@survex.com>

        * tests/internaltest.cc: Remove serialisedoc1 from the list of
          testcases to run too.

Wed Jan 11 09:50:22 GMT 2012  Olly Betts <olly@survex.com>

        * matcher/multixorpostlist.h: Remove "using namespace std;" which we
          don't need here.

Wed Jan 11 09:38:27 GMT 2012  Olly Betts <olly@survex.com>

        * common/filetests.h: Remove "using namespace std;" which we don't
          need here.

Wed Jan 11 09:36:27 GMT 2012  Olly Betts <olly@survex.com>

        * common/filetests.h: Add documentation comments.

Wed Jan 11 09:28:26 GMT 2012  Olly Betts <olly@survex.com>

        * tests/api_serialise.cc: Extend serialise_document1 to test
          serialising and unserialising an empty document, which is an
          interesting edge case.
        * tests/internaltest.cc: Remove testcase serialisedoc1, which
          now doesn't add useful additional coverage over serialise_document1.

Wed Jan 11 08:29:04 GMT 2012  Olly Betts <olly@survex.com>

        * tests/internaltest.cc: Test document serialisation via the public
          API (which was added after the tests were).
        * net/serialise.h: Remove XAPIAN_VISIBILITY_DEFAULT from
          serialise_document() and unserialise_document().

Wed Jan 11 05:57:14 GMT 2012  Olly Betts <olly@survex.com>

        * api/replication.cc,common/,tests/unittest.cc: Move removedir() from
          utils.{cc,h} to fileutils.{cc,h}, and remove the now empty
          utils.{cc,h}.

Wed Jan 11 05:44:38 GMT 2012  Olly Betts <olly@survex.com>

        * tests/harness/unixcmds.cc: Check return values from system() calls
          and throw a std::string exception if non-zero.

Wed Jan 11 05:20:30 GMT 2012  Olly Betts <olly@survex.com>

        * common/Makefile.mk,common/omassert.cc,common/omassert.h,
          common/utils.cc: Change the sense of the bool returned by
          within_DBL_EPSILON() to match what the name suggests instead of being
          the opposite, and change the use of it too.  Move
          within_DBL_EPSILON() implementation from utils.cc to new file
          omassert.cc, only compile it when assertions are on, and prototype it
          in omassert.h rather than utils.h.

Wed Jan 11 05:09:39 GMT 2012  Olly Betts <olly@survex.com>

        * api/compactor.cc,api/replication.cc,backends/brass/,backends/chert/,
          backends/dbfactory.cc,common/utils.cc,common/utils.h,
          tests/api_backend.cc,tests/api_wrdb.cc,
          tests/harness/backendmanager.cc,tests/harness/unixcmds.cc: Remove
          std::string wrappers for C library functions from utils.h and just
          explicitly call c_str() when we need to.  These wrappers are
          problematic as they suppress warnings from _FORTIFY_SOURCE about
          ignored return values, and I can't see an easy way to avoid that.

Wed Jan 11 03:35:35 GMT 2012  Olly Betts <olly@survex.com>

        * api/replication.cc,backends/brass/brass_databasereplicator.cc,
          backends/brass/brass_table.cc,
          backends/chert/chert_databasereplicator.cc,
          backends/chert/chert_table.cc,backends/databasereplicator.cc,
          backends/dbfactory.cc,common/utils.cc,common/utils.h: Use
          file_exists() and dir_exists() from common/filetests.h everywhere and
          remove the old versions in common/utils.h and common/utils.cc.

Wed Jan 11 02:20:45 GMT 2012  Olly Betts <olly@survex.com>

        * common/utils.h: Remove XAPIAN_VISIBILITY_DEFAULT from old
          file_exists() and dir_exists().

Wed Jan 11 02:19:58 GMT 2012  Olly Betts <olly@survex.com>

        * tests/api_compact.cc: Convert to use filetests.h.

Wed Jan 11 02:14:07 GMT 2012  Olly Betts <olly@survex.com>

        * bin/xapian-check.cc,bin/xapian-inspect.cc: Convert to use
          filetests.h.

Wed Jan 11 02:13:02 GMT 2012  Olly Betts <olly@survex.com>

        * common/filetests.h: Rename directory_exists() to dir_exists().

Wed Jan 11 02:10:06 GMT 2012  Olly Betts <olly@survex.com>

        * common/Makefile.mk,common/filetests.h,tests/api_replicate.cc,
          tests/harness/backendmanager_multi.cc,tests/harness/testsuite.cc:
          Add new inline versions of file_exists() and directory_exists() and
          use these from the testsuite, as a step towards making these internal
          to the library.

Tue Jan 10 23:37:36 GMT 2012  Olly Betts <olly@survex.com>

        * tests/api_serialise.cc: Change the rather odd "operator delete(p);"
          to the more natural "delete p;".

Tue Jan 10 22:45:01 GMT 2012  Olly Betts <olly@survex.com>

        * tests/unittest.cc: Fix message typo in recent unittest change.

Tue Jan 10 13:48:38 GMT 2012  Olly Betts <olly@survex.com>

        * common/safesysstat.h: The S_ISDIR and S_ISREG macros for MSVC are
          unlikely to work on other platforms (_S_IFMT vs S_IFMT, etc) so
          split them.  Tweak a few comments.

Tue Jan 10 13:10:25 GMT 2012  Olly Betts <olly@survex.com>

        * net/: Split encode_length() and decode_length() out of
          serialise.{cc,h} into new file length.{cc,h}, and remove
          XAPIAN_VISIBILITY_DEFAULT from decode_length().
        * api/,backends/brass/brass_database.cc,
          backends/chert/chert_database.cc,backends/remote/net_postlist.cc,
          backends/remote/remote-database.cc,net/: Update headers which need
          to be included.
        * tests/internaltest.cc,tests/unittest.cc: Move serialiselength1 and
          serialiselength2 from internaltest to unittest.

Mon Jan 09 02:16:22 GMT 2012  Olly Betts <olly@survex.com>

        * tests/api_compact.cc: Actually add test coverage for
          ByteLengthPrefixedStringItor - the previous attempt didn't cause
          merging of synonym lists to happen.

Mon Jan 09 00:21:25 GMT 2012  Olly Betts <olly@survex.com>

        * tests/api_replicate.cc: Fix comment typo.

Sun Jan 08 14:47:19 GMT 2012  Olly Betts <olly@survex.com>

        * tests/api_compact.cc: Add test coverage for
          ByteLengthPrefixedStringItor.

Sun Jan 08 14:05:19 GMT 2012  Olly Betts <olly@survex.com>

        * common/fd.h,tests/api_db.cc,tests/harness/backendmanager.cc: Add
          missing explicit header includes, uncovered by compiling with
          STLport.

Sat Jan 07 11:45:00 GMT 2012  Olly Betts <olly@survex.com>

        * INSTALL,configure.ac,m4/rjb_find_stlport.m4,xapian-config.in: Remove
          configure's --with-stlport and --with-stlport-compiler options, as
          they don't allow you to actually specify what you need (at least to
          use the Debian STLport package), and instead document what to pass
          to configure to enable building with STLport (though it seems to no
          longer be actively maintained, and the debug mode (which is probably
          the most interesting feature now) doesn't seem to work on Debian
          stable).

Sat Jan 07 10:24:25 GMT 2012  Olly Betts <olly@survex.com>

        * HACKING: Update STLPort URL to point to the more active fork on
          SourceForge.

Fri Jan 06 20:07:06 GMT 2012  Olly Betts <olly@survex.com>

        * tests/api_sorting.cc: Add check that NeverUseMeKeyMaker::operator()
          would actually cause a test failure if called.

Fri Jan 06 20:01:27 GMT 2012  Olly Betts <olly@survex.com>

        * tests/api_stem.cc: Test get_description() on a user-implemented
          stemmer.

Fri Jan 06 14:34:16 GMT 2012  Olly Betts <olly@survex.com>

        * tests/Makefile.am,tests/harness/,tests/queryparsertest.cc,
          tests/termgentest.cc,tests/unittest.cc: Make unittest use the test
          harness, so it gets all the valgrind and fd leak checks, and other
          handy features all the other tests have.  Currently this is done in
          a bit of a hacky way, but it's a starting point for abstracting out
          the Xapian-specific parts of the test harness.

Fri Jan 06 08:42:26 GMT 2012  Olly Betts <olly@survex.com>

        * Makefile.am: Delete generated lcov directory before running genhtml.
          Pass --demangle-cpp and --html-gzip to genhtml.

Fri Jan 06 08:14:05 GMT 2012  Olly Betts <olly@survex.com>

        * Makefile.am: Trim `pwd` off all paths in coverage report.

Fri Jan 06 02:29:04 GMT 2012  Olly Betts <olly@survex.com>

        * common/pretty.h: Add support for AndContext and OrContext.

Fri Jan 06 02:28:07 GMT 2012  Olly Betts <olly@survex.com>

        * common/pretty.h: Use XAPIAN_PRETTY_AS_CLASSNAME for classes in
          namespace Xapian::Internal too.

Thu Jan 05 12:23:10 GMT 2012  Olly Betts <olly@survex.com>

        * tests/internaltest.cc,tests/unittest.cc: Move tests of
          serialise_double() and unserialise_double() from internaltest to
          unittest.
        * common/serialise-double.h: This means serialise_double() and
          unserialise_double() no longer need external visibility, so make
          them internal only.

Thu Jan 05 12:08:15 GMT 2012  Olly Betts <olly@survex.com>

        * common/bitstream.h: BitWriter doesn't need public visibility.

Thu Jan 05 10:53:23 GMT 2012  Olly Betts <olly@survex.com>

        * common/output-internal.h,common/pretty.h: Fix include paths for two
          cases which are only used in a logging build.

Fri Dec 30 09:17:50 GMT 2011  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Update expected results (mostly because we
          no longer flatten groups of the same operator at Query construction
          time).

Thu Dec 29 13:47:04 GMT 2011  Olly Betts <olly@survex.com>

        * api/Makefile.mk: Add missing backslash so various headers actually
          get shipped.

Thu Dec 29 11:29:04 GMT 2011  Olly Betts <olly@survex.com>

        * include/xapian/query.h: Add fake templated ctor for SWIG.

Thu Dec 29 00:23:25 GMT 2011  Olly Betts <olly@survex.com>

        * tests/api_scalability.cc: Add regression test querypairwise1 for
          ticket#273.

Thu Dec 29 00:03:17 GMT 2011  Olly Betts <olly@survex.com>

        * api/,backends/remote/remote-database.cc,
          backends/remote/remote-database.h,docs/deprecation.rst,
          include/xapian/query.h,matcher/,net/remoteserver.cc,
          queryparser/queryparser.lemony,tests/,weight/weightinternal.h: Merge
          query-internal-reimplementation git branch which reimplements
          Query::Internal. (ticket#280).  These are the most notable changes:
          + Query objects are smaller and should be faster.
          + More readable format for Query::get_description().
          + More compact serialisation format for Query objects.
          + Query operators are no longer flattened as you build up a tree (but
            the query optimiser still combines groups of the same operator).
            This means that Query objects are truly immutable, and so we don't
            need to copy Query objects when composing them.  This should also
            fix a few O(n*n) cases when building up an n-way query pair-wise.
            (ticket#273)
          + The Query optimiser can do a few extra optimisations.

Mon Dec 26 12:13:36 GMT 2011  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h,queryparser/queryparser.cc: Change
          QueryParser::set_default_op() to reject operators which don't make
          sense to set, and explicitly document all the operators which are
          allowed.
        * tests/queryparsertest.cc: Check that bad operators are rejected in
          existing testcase qp_default_op2.  Add new testcase qp_default_op3 to
          check that good operators can be set and work in a simple testcase.

Mon Dec 26 09:12:09 GMT 2011  Olly Betts <olly@survex.com>

        * tests/harness/backendmanager_brass.h,
          tests/harness/backendmanager_chert.h: Remove superfluous "private:"
          access specifiers.

Sat Dec 24 12:34:19 GMT 2011  Olly Betts <olly@survex.com>

        * HACKING: Recommend installing valgrind, ccache, and eatmydata.

Sat Dec 24 12:28:44 GMT 2011  Olly Betts <olly@survex.com>

        * HACKING: Make it clear "Building from SVN" applies to git too, and
          mention that git-svn is needed when building from git.

Thu Dec 22 11:18:17 GMT 2011  Olly Betts <olly@survex.com>

        * languages/compiler/generator.c: Initialise variable which can
          be used uninitialised.

Thu Dec 22 03:14:02 GMT 2011  Olly Betts <olly@survex.com>

        * bin/Makefile.mk: Link $(libxapian_la) after libbrasscheck.la and
          libchertcheck.la to fix mingw build.  Probably closes ticket#567.

Thu Dec 22 02:45:45 GMT 2011  Olly Betts <olly@survex.com>

        * include/xapian/query.h: Document that OP_ELITE_SET with non-term
          subqueries might pick subqueries which don't match anything.
          Closes ticket#49.

Thu Dec 22 02:37:10 GMT 2011  Olly Betts <olly@survex.com>

        * include/xapian/query.h: Improve documentation of OP_ELITE_SET.

Wed Dec 21 12:26:00 GMT 2011  Olly Betts <olly@survex.com>

        * api/errorhandler.cc: Rearrange code in ErrorHandler::operator() to
          be clearer.

Wed Dec 21 11:23:28 GMT 2011  Olly Betts <olly@survex.com>

        * include/xapian/errorhandler.h: Fix typo: 'APU' -> 'API'.

Wed Dec 21 09:57:32 GMT 2011  Olly Betts <olly@survex.com>

        * api/,backends/brass/brass_postlist.cc,
          backends/brass/brass_postlist.h,backends/chert/,
          backends/contiguousalldocspostlist.cc,
          backends/contiguousalldocspostlist.h,
          backends/inmemory/inmemory_database.cc,
          backends/inmemory/inmemory_database.h,
          backends/multi/multi_postlist.cc,backends/multi/multi_postlist.h,
          backends/remote/,docs/,expand/,include/xapian/,matcher/,
          net/remoteserver.cc,net/serialise.cc,tests/,weight/bm25weight.cc,
          weight/boolweight.cc,weight/tradweight.cc: Deprecate Xapian::weight
          typedef in favour of just using double, and make the replacement
          everywhere.  Closes ticket#560.

Tue Dec 20 13:31:21 GMT 2011  Olly Betts <olly@survex.com>

        * net/remoteconnection.cc: Include "safesysstat.h" for fstat().

Fri Dec 16 03:05:17 GMT 2011  Olly Betts <olly@survex.com>

        * backends/brass/brass_termlisttable.cc,
          backends/chert/chert_termlisttable.cc,
          backends/multi/multi_postlist.cc,net/replicatetcpclient.cc,
          net/serialise.cc,net/tcpserver.cc,tests/,
          tests/harness/backendmanager_remoteprog.cc,tests/queryparsertest.cc,
          tests/soaktest/soaktest_queries.cc,tests/termgentest.cc: Remove
          unnecessary includes on "utils.h".

Fri Dec 16 02:57:49 GMT 2011  Olly Betts <olly@survex.com>

        * backends/brass/brass_btreebase.cc,backends/brass/brass_database.cc,
          backends/brass/brass_databasereplicator.cc,
          backends/chert/chert_btreebase.cc,backends/chert/chert_database.cc,
          backends/chert/chert_databasereplicator.cc,
          net/remoteconnection.cc,tests/api_replicate.cc: Replace uses of
          fdcloser class with new FD class.
        * common/utils.h: Remove fdcloser class.

Fri Dec 16 00:56:45 GMT 2011  Olly Betts <olly@survex.com>

        * tests/api_replicate.cc: Use a const int rather than a #define for
          BUFSIZE.

Fri Dec 16 00:50:57 GMT 2011  Olly Betts <olly@survex.com>

        * tests/api_replicate.cc: Avoid leaking fds on exceptions in
          truncated_copy().

Fri Dec 16 00:42:11 GMT 2011  Olly Betts <olly@survex.com>

        * common/fd.h: Oops, fix to actually compile.

Thu Dec 15 23:54:44 GMT 2011  Olly Betts <olly@survex.com>

        * common/Makefile.mk,common/fd.h: Add new FD class which wraps a file
          descriptor and ensures it gets released when we exit the scope.

Thu Dec 15 22:44:16 GMT 2011  Olly Betts <olly@survex.com>

        * weight/Makefile: Add forwarding Makefile.

Thu Dec 15 22:17:18 GMT 2011  Olly Betts <olly@survex.com>

        * weight/Makefile.mk: Ship dir_contents and Makefile.

Tue Dec 13 10:33:21 GMT 2011  Olly Betts <olly@survex.com>

        * NEWS: Update from ChangeLog and branches/1.2.

Fri Dec 09 10:33:25 GMT 2011  Olly Betts <olly@survex.com>

        * tests/soaktest/soaktest.cc,tests/soaktest/soaktest.h,
          tests/soaktest/soaktest_queries.cc: "boulton" -> "Boulton" in
          copyright statements.

Fri Dec 09 10:31:18 GMT 2011  Olly Betts <olly@survex.com>

        * tests/soaktest/soaktest.cc: With Sun's compiler, random() and
          srandom() aren't in <cstdlib> so we need to use <stdlib.h> instead.

Fri Dec 09 07:51:44 GMT 2011  Olly Betts <olly@survex.com>

        * include/xapian/types.h: Set BAD_VALUENO to 0xffffffff rather than
          static_cast<valueno>(-1) - it's the same value currently, but more
          robust to valueno being set a wider type.

Fri Dec 09 07:49:07 GMT 2011  Olly Betts <olly@survex.com>

        * include/xapian/types.h: Explicitly document which value slot numbers
          are valid.  Fixes ticket#555.

Sat Dec 03 09:32:55 GMT 2011  Olly Betts <olly@survex.com>

        * tests/api_opsynonym.cc: Fix typo in comment.

Thu Dec 01 04:41:24 GMT 2011  Olly Betts <olly@survex.com>

        * include/xapian/database.h: Remove bogus paragraph in
          replace_document() documentation comment, cut and pasted from
          delete_document() documentation comment.  (Fixes bug#579)

Tue Nov 08 01:50:25 GMT 2011  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Add missing doxygen @param commands.

Tue Nov 08 01:33:34 GMT 2011  Olly Betts <olly@survex.com>

        * include/xapian/database.h,include/xapian/document.h: Add missing
          doxygen @param commands.

Mon Nov 07 10:31:04 GMT 2011  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: Address doxygen warnings.

Mon Nov 07 02:40:50 GMT 2011  Olly Betts <olly@survex.com>

        * include/xapian/postingsource.h: Document undocumented parameters,
          fixing doxygen warnings.
        * include/xapian/queryparser.h: Escape < and > in doxygen comments.

Mon Nov 07 02:38:18 GMT 2011  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Enquire::get_eset() doesn't take a min_wt
          parameter, so remove @param documentation for it.

Mon Nov 07 01:59:54 GMT 2011  Olly Betts <olly@survex.com>

        * include/xapian/: Document lots of parameters, fixing doxygen
          warnings.

Sun Nov 06 22:05:09 GMT 2011  Olly Betts <olly@survex.com>

        * generate-exceptions: Document all parameters to fix doxygen
          warnings.

Sun Nov 06 22:03:50 GMT 2011  Olly Betts <olly@survex.com>

        * include/xapian/: Fix doxygen warnings.

Sun Nov 06 21:00:08 GMT 2011  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: Document value parameter of
          sortable_serialise() and sortable_unserialise().

Sun Nov 06 17:53:31 GMT 2011  Olly Betts <olly@survex.com>

        * include/xapian/document.h: Improve Document get_data() and set_data()
          documentation comments.

Sun Nov 06 17:14:39 GMT 2011  Olly Betts <olly@survex.com>

        * tests/Makefile.am: Add -I$(top_srcdir) so api/replication.h is found
          in a VPATH build.

Sun Nov 06 16:06:52 GMT 2011  Olly Betts <olly@survex.com>

        * api/,backends/database.h,backends/document.h,
          backends/multi/multi_alltermslist.h,backends/positionlist.h,common/,
          tests/harness/: More more headers out of common.

Sun Nov 06 14:55:25 GMT 2011  Olly Betts <olly@survex.com>

        * api/maptermlist.h,backends/inmemory/Makefile.mk,
          backends/inmemory/inmemory_positionlist.h,
          backends/remote/Makefile.mk,backends/remote/remote-database.cc,
          backends/remote/remote-database.h,common/Makefile.mk,
          common/inmemory_positionlist.h,common/remote-database.h,
          matcher/multimatch.cc,matcher/remotesubmatch.cc,
          matcher/remotesubmatch.h,net/progclient.h,net/remotetcpclient.h:
          Move two more headers out of common.

Sun Nov 06 11:56:46 GMT 2011  Olly Betts <olly@survex.com>

        * tests/internaltest.cc: Fix for VPATH build.

Sun Nov 06 11:26:18 GMT 2011  Olly Betts <olly@survex.com>

        * common/,tests/api_replicate.cc: Factor internal classes out of
          output.h into new output-internal.h to fix build failures in VPATH
          due to move of weightinternal.h out of common (since the test harness
          uses output.h).

Sun Nov 06 00:49:45 GMT 2011  Olly Betts <olly@survex.com>

        * api/,backends/brass/,backends/chert/,backends/dbfactory_remote.cc,
          backends/inmemory/inmemory_database.cc,
          backends/multi/multi_termlist.cc,backends/remote/net_postlist.cc,
          backends/remote/net_termlist.h,backends/remote/remote-database.cc,
          bin/,common/,expand/,matcher/,net/,tests/internaltest.cc,
          weight/Makefile.mk,weight/weightinternal.h: Move even more headers
          out of common and next to their corresponding C++ file.

Sat Nov 05 23:55:55 GMT 2011  Olly Betts <olly@survex.com>

        * api/replication.cc,backends/Makefile.mk,
          backends/brass/brass_databasereplicator.h,
          backends/chert/chert_databasereplicator.h,
          backends/databasereplicator.h,common/Makefile.mk,
          common/databasereplicator.h: Move databasereplicator.h from common to
          backends.

Sat Nov 05 23:51:40 GMT 2011  Olly Betts <olly@survex.com>

        * backends/Makefile.mk: Fix sort order of noinst_HEADERS.

Sat Nov 05 23:50:33 GMT 2011  Olly Betts <olly@survex.com>

        * api/documentvaluelist.h,api/omdatabase.cc,api/valueiterator.cc,
          backends/Makefile.mk,backends/brass/,backends/chert/,
          backends/inmemory/inmemory_database.cc,
          backends/multi/multi_valuelist.cc,backends/multivaluelist.h,
          backends/valuelist.h,backends/valuestats.h,bin/xapian-check-brass.cc,
          bin/xapian-check-chert.cc,common/,matcher/valuerangepostlist.h,
          matcher/valuestreamdocument.h: Move multivaluelist.h, valuelist.h and
          valuestats.h from common to backends.

Sat Nov 05 23:40:49 GMT 2011  Olly Betts <olly@survex.com>

        * api/,backends/brass/brass_postlist.h,backends/chert/chert_postlist.h,
          backends/contiguousalldocspostlist.h,backends/database.cc,
          backends/inmemory/inmemory_database.h,
          backends/multi/multi_postlist.h,backends/remote/net_postlist.h,
          backends/remote/remote-database.cc,common/,matcher/: Move
          emptypostlist.h, leafpostlist.h and postlist.h from common to api.

Sat Nov 05 23:31:14 GMT 2011  Olly Betts <olly@survex.com>

        * backends/Makefile.mk,backends/brass/brass_database.cc,
          backends/chert/chert_database.cc,
          backends/contiguousalldocspostlist.h,common/Makefile.mk,
          common/contiguousalldocspostlist.h: Move contiguousalldocspostlist.h
          from common to backends.

Sat Nov 05 23:28:49 GMT 2011  Olly Betts <olly@survex.com>

        * api/omdatabase.cc,backends/Makefile.mk,backends/alltermslist.h,
          backends/brass/,backends/chert/,
          backends/inmemory/inmemory_alltermslist.h,common/Makefile.mk,
          common/alltermslist.h,common/multialltermslist.h: Move alltermslist.h
          from common to backends.

Sat Nov 05 23:20:05 GMT 2011  Olly Betts <olly@survex.com>

        * common/safesysselect.h: Fix typo (FDSET -> FD_SET).

Sat Nov 05 23:12:09 GMT 2011  Olly Betts <olly@survex.com>

        * common/safesysselect.h: Enhance to provide portability for __WIN32__
          too.
        * net/remoteconnection.cc,net/tcpclient.cc: Update to make use of this.

Sat Nov 05 22:39:51 GMT 2011  Olly Betts <olly@survex.com>

        * common/safesysselect.h: Add wrapper around FD_SET() under __WIN32__
          which casts the fd parameter to unsigned to avoid a warning on mingw.
        * net/tcpclient.cc: Remove __WIN32__-specific case here which was
          working around this warning.

Sat Nov 05 21:58:12 GMT 2011  Olly Betts <olly@survex.com>

        * bin/.gitignore,bin/Makefile.mk,bin/xapian-delve.cc,
          docs/admin_notes.rst,examples/,xapian-core.spec.in: Move delve from
          examples to bin and rename to xapian-delve.

Sat Nov 05 15:18:37 GMT 2011  Olly Betts <olly@survex.com>

        * docs/overview.rst: Fix a few things which were out of date and
          improve wording in various places.

Sat Nov 05 12:07:14 GMT 2011  Olly Betts <olly@survex.com>

        * docs/quickstart.rst: Fix some factual errors, and tweak .rst
          source layout a little (":\n::\n" -> "::\n").

Thu Nov 03 20:53:49 GMT 2011  Richard Boulton <richard@tartarus.org>

        * common/msvc_posix_wrapper.cc,common/safe.cc,net/tcpclient.cc:
          Some fixes for warnings when cross-compiling with mingw; missing
          includes to get declarations of functions in windows support
          code, and change to use the windows SOCKET type to avoid a
          signed/unsigned comparison warning in tcpclient.

Sun Oct 30 23:31:09 GMT 2011  Olly Betts <olly@survex.com>

        * NEWS: Update from ChangeLog.

Sun Oct 30 13:16:12 GMT 2011  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: List which flags FLAG_DEFAULT includes
          in the doxygen documentation comments.

Sat Oct 29 14:47:04 GMT 2011  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Add note to API docs to discourage use
          of percentage scores.

Sat Oct 29 14:40:39 GMT 2011  Olly Betts <olly@survex.com>

        * docs/quickstart.rst,docs/quickstartexpand.cc.html,
          docs/quickstartsearch.cc.html,examples/quest.cc,
          examples/simpleexpand.cc,examples/simplesearch.cc: Use get_weight()
          instead of get_percent() in examples, since percentages are rather
          old fashioned and you probably don't want to use them in new
          applications.

Sat Oct 29 13:29:37 GMT 2011  Olly Betts <olly@survex.com>

        * api/omenquire.cc,common/omenquireinternal.h,docs/deprecation.rst,
          include/xapian/enquire.h,include/xapian/types.h,tests/api_anydb.cc:
          Deprecate Xapian::percent and use int instead in the API and our
          own code.

Sat Oct 29 12:30:05 GMT 2011  Olly Betts <olly@survex.com>

        * docs/quickstart.rst: Fix indentation of example code.

Sat Oct 29 10:04:24 GMT 2011  Olly Betts <olly@survex.com>

        * docs/overview.rst: Fix typo in example code.

Fri Oct 28 14:39:09 GMT 2011  Olly Betts <olly@survex.com>

        * include/xapian/database.h: Note that commit() was new in 1.1.0.

Fri Oct 14 12:38:45 GMT 2011  Olly Betts <olly@survex.com>

        * common/realtime.h: Use safesysselect.h.

Mon Oct 03 00:53:13 GMT 2011  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Incorporate changes from latest upstream
          version.  I'm failing to follow branch structure upstream to work
          out which changesets to merge so it's simpler to just compare the
          latest version with what we currently have.

Sun Oct 02 23:31:52 GMT 2011  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Merge https://www.sqlite.org/src/info/d8bab8cf0b:
          'Added %expect directive, to consider a certain number of conflicts
          "correct." This has the side effect of changing the process exit
          code to never overflow.'

Sun Oct 02 23:26:34 GMT 2011  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Merge https://www.sqlite.org/src/info/e6cbe1e5ee:
          "Added -T option, to specify a template filename on the command
          line.  The default is still "lempar.c", though."  Not currently
          useful to us, but trying to minimise differences with upstream
          lemon.

Sun Oct 02 23:14:32 GMT 2011  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Merge https://www.sqlite.org/src/info/e22c090f35:
          "Another attempt at fixing the table generator in lemon. Again, this
          does not effect the SQLite grammar."  No change to generated grammar
          for QueryParser.

Sun Oct 02 22:59:28 GMT 2011  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Merge https://www.sqlite.org/src/info/077a6bee2d:
          "Fix an issue with lemon generating incorrect grammars. This issue
          does not effect SQLite."  This means we now get the same tables
          generated as before the previous change.

Sun Oct 02 22:25:54 GMT 2011  Olly Betts <olly@survex.com>

        * queryparser/lemon.c,queryparser/queryparser.lt: Merge
          https://www.sqlite.org/src/info/27d8e684db: Enhancements to lemon to
          generate more compact action tables and to avoid making array bounds
          tests that can never fail on action table calculations.  This
          reduces the size of QueryParser's tables a little.

Sun Oct 02 21:47:36 GMT 2011  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Merge https://www.sqlite.org/src/info/d66a0f31eb:
          Adjust the lemon implementation so that it always computes the same
          PDA regardless of qsort() implementation on the host platform. In
          other words, make all sorts in lemon stable.

Thu Sep 29 12:11:28 GMT 2011  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Add cases to ensure a quoted boolean
          prefix accepts an empty value or a single space.

Wed Sep 14 04:48:57 GMT 2011  Olly Betts <olly@survex.com>

        * docs/quickstart.rst: Correct link which was to
          quickstartsearch.cc.html but should be to quickstartindex.cc.html.

Tue Sep 13 08:51:34 GMT 2011  Olly Betts <olly@survex.com>

        * backends/flint_lock.cc: Fix comment typo.

Thu Sep 01 12:50:43 GMT 2011  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Clarify "sort by date" with BoolWeight
          example.

Tue Aug 30 13:51:48 GMT 2011  Olly Betts <olly@survex.com>

        * docs/index.rst: Add link to apidoc.pdf.

Wed Aug 24 14:12:05 GMT 2011  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Fix memory leak (caught by existing
          testcase queryparser1 when run under valgrind).

Wed Aug 24 12:47:49 GMT 2011  Olly Betts <olly@survex.com>

        * queryparser/,tests/queryparsertest.cc,tests/termgentest.cc: Add
          support for indexing and searching CJK text using n-grams.  Currently
          this is only enabled if environmental variable XAPIAN_CJK_NGRAM is
          set to a non-empty value.

Tue Aug 23 03:49:27 GMT 2011  Olly Betts <olly@survex.com>

        * api/vectortermlist.cc,api/vectortermlist.h: Change so that p == NULL
          represents at_end, and p == data.data() means we've yet to start.

Mon Aug 22 15:30:51 GMT 2011  Olly Betts <olly@survex.com>

        * api/vectortermlist.cc: Add new source file missed from last commit.

Mon Aug 22 14:32:50 GMT 2011  Olly Betts <olly@survex.com>

        * api/,backends/brass/brass_synonym.cc,backends/chert/chert_synonym.cc,
          common/Makefile.mk,common/vectortermlist.h,
          queryparser/queryparser.cc: Reimplement VectorTermList to store the
          list of terms encoded into a single std::string, which is a lot more
          memory efficient that std::vector<std::string>.

Mon Aug 22 12:22:49 GMT 2011  Olly Betts <olly@survex.com>

        * common/Makefile.mk,common/const_database_wrapper.cc,
          common/const_database_wrapper.h,matcher/Makefile.mk,
          matcher/const_database_wrapper.cc,matcher/const_database_wrapper.h:
          Move const_database_wrapper.h and const_database_wrapper.cc from
          common/ to matcher/.

Sun Aug 21 12:43:38 GMT 2011  Olly Betts <olly@survex.com>

        * Makefile.am: Since we require GNU find for the coverage-check target,
          make use of its -delete option, so we no longer also need GNU xargs.

Thu Aug 18 06:28:11 GMT 2011  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Reorder header includes to be more
          standard.

Thu Aug 18 01:06:00 GMT 2011  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: <cstring> not <string.h>.

Tue Aug 16 04:56:20 GMT 2011  Olly Betts <olly@survex.com>

        * bin/xapian-check.cc: Throw Xapian::FeatureUnavailableError if
          backends are disabled, rather than const char *.

Tue Aug 16 04:49:05 GMT 2011  Olly Betts <olly@survex.com>

        * backends/brass/brass_check.cc,backends/brass/brass_check.h,
          backends/chert/chert_check.cc,backends/chert/chert_check.h,
          bin/xapian-check.cc: Instead of giving cryptic numeric codes for
          B-tree errors and then throwing const char *, throw
          Xapian::DatabaseError() exceptions with string descriptions.

Fri Aug 12 23:11:51 GMT 2011  Olly Betts <olly@survex.com>

        * NEWS: Update from 1.2.7 and ChangeLog.

Fri Aug 12 06:38:45 GMT 2011  Olly Betts <olly@survex.com>

        * backends/remote/remote-database.cc: Factor out throw_bad_message().

Fri Aug 12 06:22:14 GMT 2011  Olly Betts <olly@survex.com>

        * net/remoteconnection.cc: Factor out throw_database_closed().

Fri Aug 12 06:17:43 GMT 2011  Olly Betts <olly@survex.com>

        * net/remoteserver.cc: Factor out throw_read_only() function.

Fri Aug 12 06:17:01 GMT 2011  Olly Betts <olly@survex.com>

        * common/noreturn.h: Add comment showing how to use XAPIAN_NORETURN
          macro.

Sat Aug 06 05:15:53 GMT 2011  Olly Betts <olly@survex.com>

        * api/positioniterator.cc,api/postingsource.cc,api/valueiterator.cc,
          common/serialise.h,include/xapian/positioniterator.h,
          include/xapian/postingsource.h: Fix new warnings from -Wshadow with
          GCC 4.6.  These warnings are when a variable name "shadows" a
          typename, which doesn't seem problematic in general, but the only
          alternative seems to be to disable -Wshadow entirely, and it is
          useful in other cases.

Thu Aug 04 07:57:09 GMT 2011  Olly Betts <olly@survex.com>

        * backends/dbfactory_remote.cc,docs/deprecation.rst,
          include/xapian/dbfactory.h,include/xapian/types.h: Deprecate
          Xapian::timeout in favour of POSIX type useconds_t.

Thu Aug 04 04:04:45 GMT 2011  Olly Betts <olly@survex.com>

        * include/xapian/termgenerator.h,
          queryparser/termgenerator_internal.cc: Rename weight parameter to
          wdf_inc, which much better describes what it does, and avoids a
          -Wshadow warning with GCC 4.6.

Thu Aug 04 04:03:37 GMT 2011  Olly Betts <olly@survex.com>

        * api/registry.cc: Rename weight variable to weighting_scheme to avoid
          -Wshadow warning.

Wed Aug 03 23:13:36 GMT 2011  Olly Betts <olly@survex.com>

        * configure.ac: -Wshadow gives bogus warnings with 4.0 (at least on Mac
          OS X), so disable it for GCC < 4.1 (like the comments suggest we
          already did!)

Wed Aug 03 22:53:55 GMT 2011  Olly Betts <olly@survex.com>

        * configure.ac: Enable -fshow-column for GCC - things like vim's
          quickfix mode will then jump to the appropriate column for a
          compiler error or warning, not just the appropriate line.

Wed Aug 03 22:13:26 GMT 2011  Olly Betts <olly@survex.com>

        * api/omdocument.cc,backends/brass/brass_database.cc,
          backends/chert/chert_database.cc,common/document.h: Document objects
          now track if term positions might have been modified, so we can avoid
          having to consider them at all if you take a document and add or
          remove a boolean filter term.  This gives an 18% speedup for adding
          tags in notmuch.

Mon Aug 01 15:15:17 GMT 2011  Olly Betts <olly@survex.com>

        * api/Makefile.mk,api/ompostlistiterator.cc,api/postingiterator.cc,
          include/xapian/postingiterator.h,tests/api_db.cc: Redo
          PostingIterator based on TermIterator with efficient end iterator
          checks.

Mon Aug 01 13:34:44 GMT 2011  Olly Betts <olly@survex.com>

        * api/,backends/brass/brass_database.cc,
          backends/chert/chert_database.cc,
          backends/inmemory/inmemory_database.cc,common/positionlist.h,
          examples/delve.cc,include/xapian/positioniterator.h,
          include/xapian/termiterator.h,include/xapian/valueiterator.h: Take
          the old SVN end-iterator-proxies branch and rework the TermIterator
          and PositionIterator reimplementations there to use the same
          approach as ValueIterator now uses.

Sun Jul 31 15:24:55 GMT 2011  Olly Betts <olly@survex.com>

        * include/xapian/valueiterator.h: Fix comment typo.

Sun Jul 31 14:45:46 GMT 2011  Olly Betts <olly@survex.com>

        * api/omenquire.cc,tests/api_anydb.cc: Previously,
          Enquire::get_matching_terms_begin() threw InvalidArgumentError if
          the query was empty.  Now we just return an end iterator, which is
          more consistent with how empty queries behave elsewhere.

Sun Jul 31 13:44:06 GMT 2011  Olly Betts <olly@survex.com>

        * api/valueiterator.cc,include/xapian/valueiterator.h: Rename private
          ValueIterator::deref() method to decref() (since dereference has
          another meaning to the intended "remove a reference").

Sun Jul 31 11:27:33 GMT 2011  Olly Betts <olly@survex.com>

        * api/valueiterator.cc,include/xapian/database.h,
          include/xapian/document.h,include/xapian/valueiterator.h: Don't use
          intrusive_ptr to reference count ValueIterator internals, but
          instead update the reference count in hand-written code.  This is
          less good in itself, but it means we can inline ValueIterator's
          default constructor and its destructor in the case where the
          internal is NULL, which should mean a comparison with the end
          iterator optimises to a NULL pointer check but without needing
          the ValueIteratorEnd_ class, which doesn't work as ValueIterator()
          would in templates or some cases of overload resolution.

Sat Jul 30 12:07:52 GMT 2011  Olly Betts <olly@survex.com>

        * docs/doxygen_api.conf.in: Don't generate XML from doxygen for the
          bindings - the bindings now do this for themselves.  (ticket#262)

Fri Jul 29 01:33:37 GMT 2011  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Just forward declare "class KeyMaker"
          rather than including <xapian/keymaker.h>.

Fri Jul 29 01:28:08 GMT 2011  Olly Betts <olly@survex.com>

        * api/omdatabase.cc,backends/slowvaluelist.cc,
          include/xapian/database.h,matcher/valuestreamdocument.cc: Change
          Database::get_document_lazily_() to return void* so we don't need
          to include xapian/document.h from xapian/database.h just to get
          Document::Internal declared.  This doesn't affect user code, but
          reduces the number of files which need to be rebuilt in the library
          when xapian/document.h changes.

Wed Jul 27 05:59:32 GMT 2011  Olly Betts <olly@survex.com>

        * include/xapian/matchspy.h: Remove unnecessary header includes.

Wed Jul 27 02:11:08 GMT 2011  Olly Betts <olly@survex.com>

        * docs/index.rst: Add links to Omega and bindings docs.

Tue Jul 26 05:36:50 GMT 2011  Olly Betts <olly@survex.com>

        * docs/deprecation.rst: Add Omega's OLDP CGI parameter.

Fri Jul 22 15:37:48 GMT 2011  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: Reword documentation of
          add_boolean_prefix()'s exclusive parameter to talk about terms and
          prefixes rather than values and fields (which was confusing since
          "document value" has a particular meaning in Xapian).

Thu Jul 21 03:37:49 GMT 2011  Olly Betts <olly@survex.com>

        * matcher/mergepostlist.cc: Another debug logging fix.

Thu Jul 21 03:16:39 GMT 2011  Olly Betts <olly@survex.com>

        * api/omenquire.cc,api/ompostlistiterator.cc,
          backends/brass/brass_database.cc,
          backends/brass/brass_positionlist.cc,
          backends/brass/brass_postlist.cc,backends/chert/chert_database.cc,
          backends/chert/chert_positionlist.cc,
          backends/chert/chert_postlist.cc: More debug logging fixes.

Thu Jul 21 02:55:00 GMT 2011  Olly Betts <olly@survex.com>

        * api/omdatabase.cc,api/omenquire.cc,api/replication.cc,
          backends/brass/brass_alldocspostlist.cc,
          backends/brass/brass_database.cc,
          backends/brass/brass_spellingwordslist.cc,backends/chert/,
          matcher/mergepostlist.cc,matcher/msetpostlist.cc,
          matcher/synonympostlist.cc: Fix various incorrect LOGCALL lines.

Thu Jul 21 02:12:25 GMT 2011  Olly Betts <olly@survex.com>

        * backends/brass/brass_postlist.cc,backends/chert/chert_postlist.cc,
          common/documentterm.h,net/progclient.cc: Fix uses of LOGCALL_VOID
          which should be LOGCALL_CTOR.

Wed Jul 20 07:00:48 GMT 2011  Olly Betts <olly@survex.com>

        * tests/api_matchspy.cc: Remove checks for remote dbtype in matchspy2
          and matchspy4 testcases - these were checking for values which would
          never match, and the testcases should and do work with remote
          backends.

Wed Jul 20 01:19:46 GMT 2011  Olly Betts <olly@survex.com>

        * docs/facets.rst: Minor clarification.

Wed Jul 20 00:22:38 GMT 2011  Olly Betts <olly@survex.com>

        * bin/xapian-check.cc: Document in --help that checking a whole
          database performs additional cross-checks between the tables.

Tue Jul 19 18:29:51 GMT 2011  Richard Boulton <richard@tartarus.org>

        * docs/facets.rst: Expand descriptions for indexing and finding
          facets to hopefully be more helpful to newcomers.

Tue Jul 19 17:52:25 GMT 2011  Richard Boulton <richard@tartarus.org>

        * docs/facets.rst: Fix example calls to add_matchspy() to be passed
          pointers, and example call to get_termfreq().

Sat Jul 16 10:54:39 GMT 2011  Olly Betts <olly@survex.com>

        * tests/collate-test: Now understand use of "#if 0" to disable
          testcases.
        * tests/api_db.cc: Remove comment in front of
          "DEFINE_TESTCASE(multierrhandler1, [...]" which is no longer needed.

Wed Jul 13 15:07:27 GMT 2011  Olly Betts <olly@survex.com>

        * include/xapian/database.h: Improve the documentation comment for
          Database::close().  (ticket#504)

Sat Jul 09 14:00:08 GMT 2011  Olly Betts <olly@survex.com>

        * include/xapian/stem.h,languages/stem.cc: Stem::operator= now returns
          a reference to the assigned-to object.

Sat Jul 09 07:08:03 GMT 2011  Olly Betts <olly@survex.com>

        * languages/compiler/analyser.c: Change reporting of line number for
          repeated string in among to use "FILE:LINE:" prefix.

Sat Jul 09 01:04:18 GMT 2011  Olly Betts <olly@survex.com>

        * common/pretty.h: Don't dereference a NULL pointer.

Fri Jul 08 14:28:42 GMT 2011  Olly Betts <olly@survex.com>

        * common/output.h,common/pretty.h: Fix invalid templates in pretty.h.

Fri Jul 08 12:55:19 GMT 2011  Olly Betts <olly@survex.com>

        * common/pretty.h: Fix template for pretty printing a std::list.

Thu Jul 07 10:40:53 GMT 2011  Olly Betts <olly@survex.com>

        * api/omenquire.cc: Add assertions that the index is in range when
          dereferencing MSetIterator and ESetIterator.

Wed Jul 06 08:20:56 GMT 2011  Olly Betts <olly@survex.com>

        * backends/brass/brass_table.cc,backends/chert/chert_table.cc: Trust
          new to throw std::bad_alloc rather than returning NULL.

Wed Jul 06 05:50:38 GMT 2011  Olly Betts <olly@survex.com>

        * tests/internaltest.cc: Remove testcase serialisequery1.
        * tests/api_serialise.cc: Extend serialise_query1 to cover equivalent
          cases via the API.

Tue Jul 05 01:20:59 GMT 2011  Olly Betts <olly@survex.com>

        * common/debuglog.h: Add QUERY category for debug logging.

Fri Jul 01 04:55:02 GMT 2011  Olly Betts <olly@survex.com>

        * common/unordered_map.h: Add my <unordered_map> portability wrapper
          which was used by the JNI java bindings.  It's not currently used
          here, but is likely to be useful (two of the GSoC projects are
          using unordered_map).

Wed Jun 29 12:16:59 GMT 2011  Richard Boulton <richard@tartarus.org>

        * languages/compiler/tokeniser.c: Fix memory leak (of file name) in
          snowball compiler introduced by last commit.

Wed Jun 29 07:49:36 GMT 2011  Olly Betts <olly@survex.com>

        * languages/compiler/: Report "FILE:LINE:" before each error so tools
          like vim's quickfix mode can parse this and bring up the line with
          the error automatically.

Wed Jun 29 07:49:10 GMT 2011  Olly Betts <olly@survex.com>

        * languages/compiler/header.h: Add comments to note that struct input
          must be a prefix of struct tokeniser.

Wed Jun 29 07:47:30 GMT 2011  Olly Betts <olly@survex.com>

        * languages/basque.sbl: Use stringdef instead of literal accented
          characters in the code.

Wed Jun 29 07:13:30 GMT 2011  Olly Betts <olly@survex.com>

        * docs/stemming.rst,include/xapian/stem.h,languages/: Add stemmers
          for Armenian (hy), Basque (eu), and Catalan (ca).

Mon Jun 27 08:16:55 GMT 2011  Olly Betts <olly@survex.com>

        * include/xapian/query.h: Add a fake specialised form of the templated
          ctor for SWIG.

Sat Jun 25 11:27:00 GMT 2011  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Fix doc comment typo which reversed the
          intended sense.

Sat Jun 25 06:20:34 GMT 2011  Olly Betts <olly@survex.com>

        * api/omenquire.cc,common/omenquireinternal.h: Remove unused method
          Enquire::Internal::register_match_decider().

Sat Jun 25 06:05:22 GMT 2011  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: MSet(MSet::Internal *) -> MSet(Internal *)
          for consistency with other classes.

Fri Jun 24 16:15:00 GMT 2011  Olly Betts <olly@survex.com>

        * api/omdatabase.cc,backends/slowvaluelist.cc,
          include/xapian/database.h,matcher/valuestreamdocument.cc: Rename
          Database::get_document_lazily() to get_document_lazily_() to conform
          to our convention for naming methods for internal use which have
          "public" visibility.

Wed Jun 22 23:51:15 GMT 2011  Richard Boulton <richard@tartarus.org>

        * configure.ac: Correct tiny typo in error message when zlib isn't
          found.

Tue Jun 21 04:08:29 GMT 2011  Olly Betts <olly@survex.com>

        * common/autoptr.h: Update comment about why we have this file.  It's
          no longer a concern that we might need our own AutoPtr implementation
          but we are likely to want to be able to migrate to unique_ptr easily
          as C++0x features become more widely available.

Tue Jun 21 02:26:36 GMT 2011  Olly Betts <olly@survex.com>

        * HACKING,common/pretty.h,configure.ac,tests/internaltest.cc: Fix a
          few lingering references to RefCntPtr and RefCntBase.

Tue Jun 21 02:01:25 GMT 2011  Olly Betts <olly@survex.com>

        * api/,backends/brass/,backends/chert/,backends/database.cc,
          backends/inmemory/inmemory_alltermslist.h,
          backends/inmemory/inmemory_database.cc,
          backends/inmemory/inmemory_database.h,
          backends/multi/multi_alltermslist.cc,
          backends/multi/multi_valuelist.cc,backends/remote/,common/,
          docs/doxygen_api.conf.in,include/Makefile.mk,include/xapian/,
          matcher/msetpostlist.h,matcher/multimatch.cc,
          queryparser/queryparser_internal.h,
          queryparser/termgenerator_internal.h,tests/internaltest.cc: Convert
          to use xapian/intrusive_ptr.h instead of xapian/base.h.

Mon Jun 20 23:55:10 GMT 2011  Olly Betts <olly@survex.com>

        * include/xapian/intrusive_ptr.h: Unmodified version of
          boost/smart_ptr/intrusive_ptr.hpp as of Boost 1.42 (committed to aid
          merging changes in the future).

Mon Jun 20 12:46:47 GMT 2011  Olly Betts <olly@survex.com>

        * common/databasereplicator.h,languages/steminternal.h,tests/harness/:
          Remove inclusions of xapian/base.h from files which don't use
          RefCntPtr or RefCntBase.

Mon Jun 20 11:33:03 GMT 2011  Olly Betts <olly@survex.com>

        * include/xapian/base.h: Remove unnecessary check for self-assignment
          as it isn't a common case and the current code copes gracefully with
          it anyway.

Mon Jun 20 05:25:05 GMT 2011  Olly Betts <olly@survex.com>

        * backends/brass/brass_postlist.cc,backends/brass/brass_postlist.h,
          backends/chert/chert_postlist.cc,backends/chert/chert_postlist.h:
          Reduce size of BrassPostList/ChertPostList objects by moving bool
          members together (168->160 bytes for ChertPostList on x86-64 Linux).

Sun Jun 19 13:44:32 GMT 2011  Olly Betts <olly@survex.com>

        * tests/internaltest.cc: Fix typo in comment and verbose output.

Sun Jun 19 12:23:43 GMT 2011  Olly Betts <olly@survex.com>

        * api/error.cc,generate-exceptions: Rearrange members of Xapian::Error
          to reduce its size (from 48 to 40 bytes on x86-64 Linux).

Sun Jun 19 12:22:53 GMT 2011  Olly Betts <olly@survex.com>

        * common/pretty.h: Fix comment typo.

Sun Jun 19 04:45:26 GMT 2011  Olly Betts <olly@survex.com>

        * INSTALL: Update GCC details - we now recommend 4.3 or newer (was 4.1)
          and note that while 3.1 is the hard minimum requirement, the oldest
          we've tested with at all recently was 3.3.

Sat Jun 18 14:27:14 GMT 2011  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony,
          queryparser/termgenerator_internal.cc: Fix warning from GCC 3.3.

Sat Jun 18 06:27:03 GMT 2011  Olly Betts <olly@survex.com>

        * api/,expand/ortermlist.cc,include/xapian/: Use TermIterator() instead
          of TermIterator(NULL), and similarly for other Xapian iterator
          classes.

Sat Jun 18 05:16:23 GMT 2011  Olly Betts <olly@survex.com>

        * tests/zlib-vg.so: Remove file committed accidentally.

Sat Jun 18 05:07:56 GMT 2011  Olly Betts <olly@survex.com>

        * api/,include/xapian/positioniterator.h,
          include/xapian/termiterator.h: Reimplementations of PositionIterator
          and TermIterator from the end-iterator-proxies branch.  Assignment
          operators for these classes now return *this rather than void.

Sat Jun 18 01:49:02 GMT 2011  Olly Betts <olly@survex.com>

        * tests/perftest/Makefile.mk: Make sure that perftest isn't run with
          libeatmydata preloaded.

Fri Jun 17 07:39:35 GMT 2011  Olly Betts <olly@survex.com>

        * docs/deprecation.rst: Tabs to spaces.

Fri Jun 17 07:38:06 GMT 2011  Olly Betts <olly@survex.com>

        * docs/deprecation.rst: Add flush() -> commit().

Thu Jun 16 14:40:35 GMT 2011  Olly Betts <olly@survex.com>

        * tests/: Add TEST( ) or TEST(! ) around existing reopen() calls to
          check that we get true or false returned as we would expect.
          (ticket#548)

Thu Jun 16 05:15:28 GMT 2011  Olly Betts <olly@survex.com>

        * README: Note licence is GPL *2+*.  Say "SVN/git".  Use trac URL for
          wiki.

Wed Jun 15 23:31:03 GMT 2011  Olly Betts <olly@survex.com>

        * xapian-core/api/error.cc: Don't include the magic code byte at the
          start of Error::get_description()'s return value.

Wed Jun 15 15:51:42 GMT 2011  Olly Betts <olly@survex.com>

        * exception_data.pm,generate-exceptions,net/serialise.cc: When
          propagating exceptions from a remote backend server, use a numeric
          code to represent which exception is being transferred rather than
          the name of the type as that can be turned back into an exception
          with a simple switch statement.  It's also less data to transfer.
          (ticket#471)

Wed Jun 15 14:03:49 GMT 2011  Olly Betts <olly@survex.com>

        * backends/remote/remote-database.cc,common/remote-database.h,
          common/remoteprotocol.h,docs/remote_protocol.rst,net/remoteserver.cc:
          Propagate the return value of Database::reopen() across the link.
          (ticket#548)

Wed Jun 15 13:03:56 GMT 2011  Olly Betts <olly@survex.com>

        * backends/remote/remote-database.cc,common/remote-database.h,
          common/remoteprotocol.h,docs/remote_protocol.rst,net/remoteserver.cc:
          Unify REPLY_GREETING and REPLY_UPDATE; send (last_docid - doccount)
          instead of last_docid; send (doclen_ubound - doclen_lbound) instead
          of doclen_ubound.  This requires a remote protocol major version
          bump.  Fix out of date documentation for what's in a REPLY_UPDATE
          message.

Wed Jun 15 12:24:07 GMT 2011  Olly Betts <olly@survex.com>

        * backends/remote/remote-database.cc: Remove special check which gives
          a more helpful error message when a modern client is used against a
          remote server running Xapian <= 0.9.6.

Wed Jun 15 11:07:19 GMT 2011  Olly Betts <olly@survex.com>

        * net/remoteserver.cc: Remove unnecessary call to reopen() - either we
          just called it or we're a writable database and it doesn't do
          anything.

Wed Jun 15 09:03:06 GMT 2011  Olly Betts <olly@survex.com>

        * xapian-core/backends/remote/remote-database.cc,
          xapian-core/common/remote-database.h: Factor out the code to decode
          the returned stats into a new apply_stats_update() method.

Wed Jun 15 08:57:12 GMT 2011  Olly Betts <olly@survex.com>

        * xapian-core/Makefile.am: Remove check-* from .PHONY as that doesn't
          work with a pattern rule.  Fix check-% pattern rule to actually work.

Tue Jun 14 15:11:38 GMT 2011  Olly Betts <olly@survex.com>

        * docs/remote_protocol.rst: Fixed typo which reversed the intended
          sense.

Tue Jun 14 02:01:42 GMT 2011  Olly Betts <olly@survex.com>

        * Makefile.am,configure.ac: Avoid portability warning from automake
          about GNU make %-style pattern rules.

Tue Jun 14 01:42:01 GMT 2011  Olly Betts <olly@survex.com>

        * configure.ac: Add unnecessary AC_LANG_SOURCE wrapper to shut up
          autoconf warning.

Tue Jun 14 01:18:54 GMT 2011  Olly Betts <olly@survex.com>

        * configure.ac: Reset LIBRARY_VERSION_INFO to 0:0:0 for the
          development series, since the library name is different (it has a
          -1.3 suffix).

Mon Jun 13 16:24:20 GMT 2011  Olly Betts <olly@survex.com>

        * api/omenquire.cc,common/multimatch.h,common/omenquireinternal.h,
          docs/deprecation.rst,include/xapian/enquire.h,matcher/multimatch.cc,
          net/remoteserver.cc,tests/api_backend.cc: Remove the deprecated
          old-style match spy approach of using a MatchDecider.

Mon Jun 13 15:47:57 GMT 2011  Olly Betts <olly@survex.com>

        * api/keymaker.cc,docs/deprecation.rst,include/xapian/keymaker.h,
          tests/Makefile.am,tests/api_sortingold.cc: Remove deprecated Sorter
          class and MultiValueSorter subclass.
        * tests/Makefile.mk,tests/perftest/Makefile.mk,
          tests/soaktest/Makefile.mk: Make the generated "*_all.h" depend on
          the Makefile.am or Makefile.mk which contains the list of files it
          is generated from so that it gets regenerated when a file is
          removed from that list.

Mon Jun 13 13:18:29 GMT 2011  Olly Betts <olly@survex.com>

        * common/omenquireinternal.h: Remove a FIXME - caching the Document
          object in MSetItem isn't a replacement for storing the sort_key
          now that sort_keys can be computed.

Mon Jun 13 13:07:31 GMT 2011  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h,queryparser/queryparser.cc: Fold the
          two forms of QueryParser::add_boolean_prefix() into one method
          with a default parameter now that changing the ABI isn't a worry.

Mon Jun 13 12:00:36 GMT 2011  Olly Betts <olly@survex.com>

        * docs/deprecation.rst: Non-pythonic iterators have been removed.
          (ticket#255)

Mon Jun 13 10:40:30 GMT 2011  Olly Betts <olly@survex.com>

        * docs/deprecation.rst: Python Stem_get_available_languages() has now
          been removed.

Mon Jun 13 10:38:49 GMT 2011  Olly Betts <olly@survex.com>

        * docs/deprecation.rst,include/xapian/enquire.h: Remove deprecated
          default value for second parameter to Enquire::set_sort_by_value()
          and friends.

Mon Jun 13 09:30:15 GMT 2011  Olly Betts <olly@survex.com>

        * api/omdatabase.cc,backends/brass/brass_database.cc,
          backends/brass/brass_database.h,backends/chert/chert_database.cc,
          backends/chert/chert_database.h,backends/database.cc,
          backends/inmemory/inmemory_database.cc,
          backends/inmemory/inmemory_database.h,
          backends/remote/remote-database.cc,common/,
          include/xapian/database.h: Database::reopen() now returns true if
          the database may have been reopened.  (ticket#548)

Mon Jun 13 09:01:33 GMT 2011  Olly Betts <olly@survex.com>

        * docs/admin_notes.rst: Add note about xapian-chert-update.

Mon Jun 13 08:47:06 GMT 2011  Olly Betts <olly@survex.com>

        * bin/xapian-check-flint.cc,bin/xapian-check-flint.h: Remove two
          flint-specific files I missed.

Mon Jun 13 08:42:11 GMT 2011  Olly Betts <olly@survex.com>

        * HACKING,INSTALL,Makefile.am,api/compactor.cc,api/replication.cc,
          backends/Makefile.mk,backends/brass/brass_compact.cc,
          backends/chert/chert_compact.cc,backends/databasereplicator.cc,
          backends/dbfactory.cc,backends/dir_contents,backends/flint/,
          backends/slowvaluelist.h,bin/,common/database.h,common/pretty.h,
          common/unaligned.h,configure.ac,docs/,include/xapian/dbfactory.h,
          include/xapian/valueiterator.h,include/xapian/version_h.cc,tests/,
          tests/harness/,tests/queryparsertest.cc,tests/termgentest.cc,
          tests/testdata/flint-0.9.9/,tests/testdata/flint-1.0.1/,
          tests/testdata/flint-1.0.2/: Remove flint backend.

Mon Jun 13 06:09:29 GMT 2011  Olly Betts <olly@survex.com>

        * bin/Makefile.mk: Remove lingering reference to quartz (rules to
          generate man pages for quartzdump, etc).

Mon Jun 13 05:46:00 GMT 2011  Olly Betts <olly@survex.com>

        * Makefile.am,tests/Makefile.am: Just use a GNU-make-specific pattern
          rules to forward check-* targets from the top level to the tests
          subdirectory.  It's clear we aren't keeping the explicit list of
          target forwarding rules up to date, and this is just a convenience
          so not worth a lot of maintenance effort.

Mon Jun 13 05:01:33 GMT 2011  Olly Betts <olly@survex.com>

        * configure.ac: Update version to 1.3.0 and add -1.3 suffix for
          library and /xapian-1.3 suffix to include file installation
          directory.

Mon Jun 13 04:56:13 GMT 2011  Olly Betts <olly@survex.com>

        * unicode/tclUniData.cc: Upgrade to Unicode 6.0.0 (ticket#497).
        * tests/api_unicode.cc: Extend testcases to check for assorted changes
          and additions in Unicode 6.0.0.

Sun Jun 12 11:54:45 GMT 2011  Olly Betts <olly@survex.com>

        * NEWS: Final update for 1.2.6.

Sat Jun 11 10:11:23 GMT 2011  Olly Betts <olly@survex.com>

        * api/omdocument.cc: Update LOGCALL(MATCH, ...) to LOGCALL(DB, ...).
          Convert LOGLINE() at start of method to LOGCALL().

Sat Jun 11 09:57:00 GMT 2011  Olly Betts <olly@survex.com>

        * api/omdatabase.cc: Remove self-assignment check from
          Database::operator= since this is an uncommon code path and
          RefCntPtr ensures that self-assignment of the internals is
          safe.

Sat Jun 11 08:48:10 GMT 2011  Olly Betts <olly@survex.com>

        * api/omdatabase.cc,backends/brass/brass_cursor.h,
          backends/chert/chert_cursor.h,backends/flint/flint_cursor.h,
          backends/flint/flint_table.cc,backends/flint/flint_values.cc,
          backends/inmemory/inmemory_database.cc,bin/xapian-check-brass.cc,
          bin/xapian-check-chert.cc,bin/xapian-chert-update.cc,
          matcher/queryoptimiser.cc,matcher/valuegepostlist.h: Use string() or
          std::string() rather than "".
        * common/remoteconnection.h,net/tcpserver.cc: Use 2 parameter form of
          Error subclass ctors when the context is "".
        * api/replication.cc,backends/flint/flint_database.cc,
          common/remoteconnection.h,net/replicatetcpclient.cc,
          net/replicatetcpserver.cc: Make context parameter of
          RemoteConnection ctor optional.
        * common/leafpostlist.h: Say 'empty' rather than '""' in a
          documentation comment.
        * examples/simpleindex.cc: Use '.resize(0)' rather than '= ""'.

Sat Jun 11 07:01:41 GMT 2011  Olly Betts <olly@survex.com>

        * api/,backends/brass/,backends/chert/,backends/flint/,
          backends/remote/remote-database.cc,common/,include/xapian/,matcher/,
          net/remoteserver.cc,net/serialise.cc: Consistently use "slot" in
          variable names for value slots, rather than valueno, valno, valueid
          or value.  The only exception remaining is a protected member of
          Xapian::StringValueRangeProcessor since that's really part of the
          public API.

Fri Jun 10 11:55:45 GMT 2011  Olly Betts <olly@survex.com>

        * NEWS,configure.ac: Update in preparation for 1.2.6.

Fri Jun 10 09:05:38 GMT 2011  Olly Betts <olly@survex.com>

        * examples/NEWS,examples/TODO: Remove files which are unused since the
          examples were merged into xapian-core.

Fri Jun 10 09:03:33 GMT 2011  Olly Betts <olly@survex.com>

        * Makefile.am: Ship ChangeLog.0 in the tarball.

Fri Jun 10 05:19:24 GMT 2011  Olly Betts <olly@survex.com>

        * tests/Makefile.am: Actually include soaktest/Makefile.mk.

Thu Jun 09 23:26:52 GMT 2011  Olly Betts <olly@survex.com>

        * docs/doxygen_api.conf.in,docs/doxygen_source.conf.in: Define
          XAPIAN_DEPRECATED_CLASS to empty for doxygen.

Thu Jun 09 22:21:29 GMT 2011  Olly Betts <olly@survex.com>

        * docs/overview.rst: Document "remote" in stub databases.

Thu Jun 09 15:23:12 GMT 2011  Olly Betts <olly@survex.com>

        * HACKING,docs/deprecation.rst,include/xapian/deprecated.h,
          include/xapian/keymaker.h: Add XAPIAN_DEPRECATED_CLASS macro
          for marking a class as deprecated, so we don't have to call
          XAPIAN_DEPRECATED() with no parameters.

Thu Jun 09 14:03:17 GMT 2011  Olly Betts <olly@survex.com>

        * HACKING: Clarify wording about PATH.

Thu Jun 09 13:04:53 GMT 2011  Olly Betts <olly@survex.com>

        * docs/queryparser.rst,include/xapian/queryparser.h,
          queryparser/queryparser.cc,queryparser/queryparser.lemony,
          queryparser/queryparser_internal.h,tests/queryparsertest.cc: Add
          QueryParser::set_max_wildcard_expansion() method to allow limiting
          the number of terms a wildcard can expand to.  Implementation mostly
          from a patch by Adam Sjøgren in ticket#350.

Tue Jun 07 23:16:33 GMT 2011  Dan Colish <dcolish@gmail.com>

        * backends/brass/brass_changesetapplier.h,
          backends/chert/chert_changesetapplier.h,
          backends/flint/flint_changesetapplier.h: Remove dead code

Thu Jun 02 13:21:28 GMT 2011  Olly Betts <olly@survex.com>

        * AUTHORS: Add recent bug reporters.

Thu Jun 02 11:03:57 GMT 2011  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: If default_op is OP_NEAR or
          OP_PHRASE then disable stemming of the terms, since we don't index
          positional information for stemmed terms by default.
        * tests/queryparsertest.cc: Adjust near1 and phrase1 to act as
          regression tests for this fix.

Thu Jun 02 02:58:58 GMT 2011  Olly Betts <olly@survex.com>

        * backends/brass/brass_spelling.cc,backends/brass/brass_spelling.h,
          backends/chert/chert_spelling.cc,backends/chert/chert_spelling.h,
          backends/flint/flint_spelling.cc,backends/flint/flint_spelling.h:
          Fix bug Nikita Smetanin spotted with adding a word which has the
          same trigram in an even number of times.
        * tests/api_spelling.cc: Add regression test spell8.

Wed Jun 01 14:11:38 GMT 2011  Olly Betts <olly@survex.com>

        * backends/flint_lock.cc: Kill the child process which holds the lock
          with SIGKILL as that can't be ignored, whereas SIGHUP can be in some
          cases it seems.

Wed Jun 01 12:12:14 GMT 2011  Olly Betts <olly@survex.com>

        * docs/quickstartexpand.cc.html,docs/quickstartindex.cc.html,
          docs/quickstartsearch.cc.html: Reinstate the old HTML versions
          of these files.

Wed Jun 01 12:09:55 GMT 2011  Olly Betts <olly@survex.com>

        * docs/queryparser.rst,docs/remote_protocol.rst: Fix literal hard
          spaces in input to just be spaces.

Wed Jun 01 12:06:26 GMT 2011  Olly Betts <olly@survex.com>

        * docs/quickstart.rst: Fix sub-heading run in to previous paragraph.

Wed Jun 01 12:04:52 GMT 2011  Olly Betts <olly@survex.com>

        * docs/remote.rst: Replace out-dated list of xapian-tcpsrv's command
          line options with a reference to --help and the man page.  Tweak
          wording in a few places.

Wed Jun 01 11:54:37 GMT 2011  Olly Betts <olly@survex.com>

        * docs/overview.rst: Change omrset to rset.  Remove some bogus `` left
          over from fixing definition list formatting.

Wed Jun 01 11:38:09 GMT 2011  Olly Betts <olly@survex.com>

        * docs/stemming.rst: Comment out bogus claim that there are stopword
          lists in xapian-data (the lack of stopword lists is already
          ticket#269).

Wed Jun 01 11:29:58 GMT 2011  Olly Betts <olly@survex.com>

        * docs/matcherdesign.rst,docs/stemming.rst: Convert more arrows to
          Unicode.
        * docs/stemming.rst: Fix some missing paragraph breaks.

Wed Jun 01 11:18:25 GMT 2011  Olly Betts <olly@survex.com>

        * docs/intro_ir.rst: Use Unicode right arrow.

Wed Jun 01 10:38:27 GMT 2011  Olly Betts <olly@survex.com>

        * docs/: Revert quickstart*.cc.html to being HTML rather than .rst as
          the .rst version lose the syntax highlighting.  Update svn:ignore.

Wed Jun 01 10:27:11 GMT 2011  Olly Betts <olly@survex.com>

        * docs/intro_ir.rst: Sort out the remaining formatting issues.

Wed Jun 01 08:05:05 GMT 2011  Olly Betts <olly@survex.com>

        * docs/intro_ir.rst: More markup fixes.

Wed Jun 01 06:16:56 GMT 2011  Olly Betts <olly@survex.com>

        * docs/tests.rst: Use generated contents list instead of manual one.

Wed Jun 01 06:16:13 GMT 2011  Olly Betts <olly@survex.com>

        * docs/index.rst,docs/internals.rst: Centre links at top; Sort out
          <hr> to be full width.

Wed Jun 01 03:23:20 GMT 2011  Olly Betts <olly@survex.com>

        * docs/bm25.rst: Sort out inline equations.

Tue May 31 15:21:10 GMT 2011  Olly Betts <olly@survex.com>

        * docs/spelling.rst: Add link to Omega documentation.

Tue May 31 07:52:19 GMT 2011  Olly Betts <olly@survex.com>

        * docs/overview.rst,docs/quickstart.rst,docs/remote_protocol.rst: More
          .rst formatting fixes.

Tue May 31 05:02:48 GMT 2011  Olly Betts <olly@survex.com>

        * docs/overview.rst: More .rst fixes.

Tue May 31 04:32:52 GMT 2011  Olly Betts <olly@survex.com>

        * docs/: More .rst fixes.

Tue May 31 04:11:27 GMT 2011  Olly Betts <olly@survex.com>

        * docs/Makefile.am,docs/code_structure.rst: Revert code_structure.html
          conversion - this file is generated by a script.

Tue May 31 03:56:39 GMT 2011  Olly Betts <olly@survex.com>

        * docs/install.rst,docs/stemming.rst,docs/tests.rst: Fix up some .rst
          conversion issues.

Tue May 31 03:36:49 GMT 2011  Dan Colish <dcolish@gmail.com>

        * docs/remote_protocol.rst docs/quickstart.rst docs/remote.rst
        docs/internals.rst docs/scalability.rst
        docs/quickstartsearch.cc.rst
        docs/bm25.rst docs/install.rst docs/quickstartindex.cc.rst
        docs/index.rst docs/matcherdesign.rst docs/quickstartexpand.cc.rst
        docs/queryparser.rst docs/stemming.rst docs/intro_ir.rst
        docs/code_structure.rst docs/Makefile.am docs/tests.rst
        docs/overview.rst: Bulk port all remaining documentation to RST.

Sun May 29 07:04:42 GMT 2011  Olly Betts <olly@survex.com>

        * docs/postingsource.rst: Add PostingSource example.  (ticket#503)

Sun May 29 05:19:40 GMT 2011  Olly Betts <olly@survex.com>

        * include/xapian/database.h: Add @exception InvalidArgumentError for
          Database::get_document() (ticket#542).

Fri May 27 05:36:28 GMT 2011  Olly Betts <olly@survex.com>

        * NEWS: Update from ChangeLog.

Thu May 26 02:44:07 GMT 2011  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: FIXME:1.1.3 -> FIXME:1.3.

Wed May 25 14:58:37 GMT 2011  Olly Betts <olly@survex.com>

        * docs/queryparser.html: Document the precedence order of operators.

Fri May 20 04:13:54 GMT 2011  Olly Betts <olly@survex.com>

        * examples/simpleindex.cc: Add short description to usage message.

Tue May 17 21:44:55 GMT 2011  Olly Betts <olly@survex.com>

        * docs/scalability.html: Bring up-to-date.

Wed May 11 01:34:34 GMT 2011  Olly Betts <olly@survex.com>

        * AUTHORS: Add Scott Zhang for mingw fixes.

Wed May 11 01:30:54 GMT 2011  Olly Betts <olly@survex.com>

        * net/progclient.cc,net/tcpserver.cc: Need <cstdio> for sprintf on
          __WIN32__ and cygwin.

Wed May 11 01:22:07 GMT 2011  Olly Betts <olly@survex.com>

        * configure.ac: Define __MSVCRT_VERSION__ to 0x0601 under mingw so
          we get _ftime64().

Wed May 11 01:19:14 GMT 2011  Olly Betts <olly@survex.com>

        * common/closefrom.cc,common/closefrom.h: We don't need closefrom()
          under __WIN32__ currently, so disable it there as it doesn't
          compile under mingw.

Mon May 09 20:13:17 GMT 2011  Olly Betts <olly@survex.com>

        * examples/delve.cc: Report has_positions().

Thu Apr 07 05:38:36 GMT 2011  Dan Colish <dcolish@gmail.com>

        * matcher/phrasepostlist.cc, matcher/queryoptimiser.cc,
          matcher/exactphrasepostlist.cc, matcher/exactphrasepostlist.h,
          matcher/phrasepostlist.h: Remove temporary vector in queryoptimiser
          and replace with iterators.

Wed Apr 06 10:27:41 GMT 2011  Richard Boulton <richard@tartarus.org>

        * docs/admin_notes.rst: Remove the word "also", which makes sense
          when read in context of the previous section, but is confusing if
          the paragraph is read standalone, and isn't necessary.

Mon Apr 04 14:41:33 GMT 2011  Olly Betts <olly@survex.com>

        * NEWS: Final update for 1.2.5.

Mon Apr 04 14:06:56 GMT 2011  Olly Betts <olly@survex.com>

        * backends/brass/brass_version.cc: Remove ? from comment - the brass
          version change is definitely going to be in 1.2.5.

Mon Apr 04 13:57:23 GMT 2011  Olly Betts <olly@survex.com>

        * NEWS: Bump release date.

Sat Mar 26 14:49:41 GMT 2011  Olly Betts <olly@survex.com>

        * INSTALL: Fix typo in previous commit.

Sat Mar 26 14:03:15 GMT 2011  Olly Betts <olly@survex.com>

        * INSTALL: Note how to build for a non-default arch on a multi-arch
          platform.

Sat Mar 26 13:22:49 GMT 2011  Olly Betts <olly@survex.com>

        * NEWS,configure.ac: Update for 1.2.5.

Sat Mar 26 12:28:38 GMT 2011  Olly Betts <olly@survex.com>

        * AUTHORS: Update.

Sat Mar 26 10:33:19 GMT 2011  Olly Betts <olly@survex.com>

        * backends/brass/brass_postlist.cc,backends/brass/brass_postlist.h,
          backends/chert/chert_postlist.cc,backends/chert/chert_postlist.h,
          backends/inmemory/inmemory_database.h: Address issues highlighted
          by clang++ warnings.

Fri Mar 25 05:36:41 GMT 2011  Olly Betts <olly@survex.com>

        * docs/tests.html: Slight tweak to improve up-to-date-ness, but more
          work would be useful.

Fri Mar 25 05:30:56 GMT 2011  Olly Betts <olly@survex.com>

        * docs/matcherdesign.html: Update - quite a bit has changed in the
          matcher since this was last updated!

Thu Mar 24 23:31:57 GMT 2011  Olly Betts <olly@survex.com>

        * api/replication.cc,common/replication.h: Pass reader_close_time as
          double everywhere, rather than truncating it to int.  Include
          reader_close_time parameters in debug logging.  Document
          reader_close_time in doxygen comments.

Tue Mar 22 15:36:25 GMT 2011  Dan Colish <dcolish@gmail.com>

        * backends/brass/brass_database.h:
          Remove left over copyright.

Tue Mar 22 04:54:12 GMT 2011  Dan Colish <dcolish@gmail.com>

        * backends/brass/brass_btreebase.cc,backends/chert/chert_btreebase.cc,
          backends/flint/flint_btreebase.cc:
          Correct comments for which revision is packed when writing base files

Tue Mar 22 03:18:19 GMT 2011  Dan Colish <dcolish@gmail.com>

        * backends/brass/brass_database.cc,backends/chert/chert_database.cc,
          backends/flint/flint_database.cc,include/xapian/database.h:
          Remove FIXME and comments for DB_OVERWRITE.

Tue Mar 22 01:18:38 GMT 2011  Dan Colish <dcolish@gmail.com>

        * backends/brass/,backends/chert/chert_database.cc,
          backends/flint/flint_database.cc,tests/api_replicate.cc:
          Clean up changesets when replicating. Add test coverage for this
          feature. Allow XAPIAN_MAX_CHANGESETS to be altered without reopening
          the database. Closes Ticket #278.

Mon Mar 21 01:50:41 GMT 2011  Olly Betts <olly@survex.com>

        * docs/bm25.html: Add a link to the 1976 Robertson/Sparck Jones paper.

Wed Mar 16 05:56:58 GMT 2011  Dan Colish <dcolish@gmail.com>

        * bin/xapian-check-flint.cc: Initialize did and current_wdf to prevent
          uninitalized usage and compiler warnings.

Mon Mar 14 03:20:18 GMT 2011  Olly Betts <olly@survex.com>

        * common/debuglog.cc,common/debuglog.h: Rename indent member to
          indent_level so it doesn't clash with indent() method.

Mon Mar 14 02:44:24 GMT 2011  Olly Betts <olly@survex.com>

        * common/debuglog.cc,common/debuglog.h: Use an integer counter for the
          indent rather than a std::string which we add/remove spaces to/from.
          This is cleaner, but also there seems to be an issue with having a
          std::string member in a global static object on OS X.

Fri Mar 11 01:12:04 GMT 2011  Olly Betts <olly@survex.com>

        * HACKING: Document using '{ }' rather than ';' for empty loop bodies.

Fri Mar 11 01:02:47 GMT 2011  Olly Betts <olly@survex.com>

        * HACKING: Remove bogus ; after method definition in code example.

Fri Mar 11 00:07:22 GMT 2011  Olly Betts <olly@survex.com>

        * backends/brass/brass_database.cc,backends/chert/chert_database.cc,
          backends/flint/flint_database.cc: Factor out literal constant as
          MAX_OPEN_RETRIES.

Wed Mar 09 14:54:06 GMT 2011  Olly Betts <olly@survex.com>

        * tests/api_anydb.cc: Improve the new testcases a bit.

Wed Mar 09 14:11:59 GMT 2011  Olly Betts <olly@survex.com>

        * api/omenquire.cc,common/esetinternal.h,common/omenquireinternal.h,
          expand/esetinternal.cc,expand/expandweight.cc,
          include/xapian/enquire.h,tests/api_anydb.cc: Enquire::get_eset() now
          accepts a min_wt argument to allow the minimum wanted weight to be
          specified.  Default is 0, which gives the previous behaviour.

Wed Mar 09 00:00:25 GMT 2011  Olly Betts <olly@survex.com>

        * include/xapian/termiterator.h: Fix misspelling in doc comment.

Tue Mar 08 06:58:14 GMT 2011  Olly Betts <olly@survex.com>

        * backends/brass/brass_table.cc,backends/brass/brass_table.h,
          backends/chert/chert_table.cc,backends/chert/chert_table.h,
          backends/flint/flint_table.cc,backends/flint/flint_table.h: Use
          defined constant BLOCK_CAPACITY instead of hardcoded 4 (ticket#536).

Tue Mar 08 05:56:42 GMT 2011  Olly Betts <olly@survex.com>

        * backends/brass/brass_table.cc,backends/chert/chert_table.cc,
          backends/flint/flint_table.cc: If we try to delete an old base file
          and it isn't there, just continue rather than throwing an exception.
          We wanted to get rid of it anyway, and it may be NFS issues telling
          us the wrong thing.  In particular, DatabaseCoruptError was rather
          a pessimistic assessment.

Tue Mar 08 05:55:48 GMT 2011  Olly Betts <olly@survex.com>

        * common/io_utils.h: Note that io_unlink() may return false when it
          should have returned true on NFS.

Sun Mar 06 23:25:47 GMT 2011  Olly Betts <olly@survex.com>

        * common/io_utils.cc,common/io_utils.h: Add io_unlink().
        * backends/brass/brass_database.cc,backends/brass/brass_table.cc,
          backends/chert/chert_database.cc,backends/chert/chert_table.cc,
          backends/flint/flint_database.cc,backends/flint/flint_table.cc:
          Use io_unlink() instead of sys_unlink_if_exists().

Sun Mar 06 22:26:36 GMT 2011  Olly Betts <olly@survex.com>

        * backends/brass/brass_database.cc,backends/chert/chert_database.cc,
          backends/flint/flint_database.cc: If DANGEROUS mode is turned on,
          then actually set the flag for this in replication changes files
          (the reader will currently throw an exception, but that's better
          than quietly handling them incorrectly).

Sat Mar 05 12:58:31 GMT 2011  Olly Betts <olly@survex.com>

        * NEWS: Update from ChangeLog.

Sat Mar 05 12:49:16 GMT 2011  Olly Betts <olly@survex.com>

        * NEWS: Fix a few typos.

Sat Mar 05 06:19:25 GMT 2011  Olly Betts <olly@survex.com>

        * NEWS: Fix typo in old entry.

Sat Mar 05 06:16:41 GMT 2011  Olly Betts <olly@survex.com>

        * common/remoteconnection.h: Internal doc comment improvements: Fix
          typo, finish truncated sentence, wrap lines to 80 columns.

Sat Mar 05 02:59:35 GMT 2011  Olly Betts <olly@survex.com>

        * bin/xapian-replicate.cc: Make sure port number is specified.  Add
          "(required)" after --host and --port in help.

Sat Mar 05 02:50:04 GMT 2011  Olly Betts <olly@survex.com>

        * docs/replication.rst: Mention new defaulting of -m.

Sat Mar 05 02:44:37 GMT 2011  Olly Betts <olly@survex.com>

        * bin/xapian-replicate.cc: If --master isn't specified, default to
          DATABASE.

Sat Mar 05 00:14:21 GMT 2011  Olly Betts <olly@survex.com>

        * bin/xapian-replicate.cc: Give an error if the host isn't set, rather
          than trying to connect to an empty hostname, which gives the error
          "Couldn't resolve host  (Unknown server error)", which might confuse
          if you fail to notice the double space and realise what it means.

Fri Mar 04 17:20:13 GMT 2011  Richard Boulton <richard@tartarus.org>

        * docs/replication.rst: Update documentation to make it clear that
          users shouldn't try to create the destination directory for
          replication themselves.

Thu Mar 03 11:10:10 GMT 2011  Olly Betts <olly@survex.com>

        * docs/intro_ir.html: Fix typo in author's name.

Thu Mar 03 11:06:30 GMT 2011  Olly Betts <olly@survex.com>

        * docs/intro_ir.html: Update link to a paper.  Update text about book
          "to be published in 2008".

Tue Mar 01 11:39:40 GMT 2011  Olly Betts <olly@survex.com>

        * NEWS: Update from ChangeLog.

Mon Feb 28 12:40:24 GMT 2011  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Avoid leaking postlist tree if an exception
          is thrown during the match.

Wed Feb 23 15:26:56 GMT 2011  Olly Betts <olly@survex.com>

        * docs/Makefile.am,docs/index.html: Process collapsing.rst and link
          it into the documentation.

Wed Feb 23 15:22:06 GMT 2011  Olly Betts <olly@survex.com>

        * docs/collapsing.rst: Add missing document (for some reason this file
          was empty in SVN, but present in my tree under a different name, and
          not checked in).

Mon Feb 21 14:49:06 GMT 2011  Olly Betts <olly@survex.com>

        * docs/deprecation.rst: Deprecate MSet.items and ESet.items.

Mon Feb 21 14:06:21 GMT 2011  Olly Betts <olly@survex.com>

        * backends/brass/brass_database.cc,backends/chert/chert_database.cc,
          backends/flint/flint_database.cc,common/remoteconnection.h,
          net/remoteconnection.cc: Pass a file descriptor to
          RemoteConnection::send_file() to avoid a race between the caller
          checking if a file exists and send_file() trying to open it to send
          it.

Mon Feb 21 13:50:06 GMT 2011  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Fix issues detected by DACA cppcheck run on the
          Debian archive.

Mon Feb 21 13:30:55 GMT 2011  Olly Betts <olly@survex.com>

        * tests/api_anydb.cc: Fix spaceterms1 which was never running one part
          of the testcase (and had been that way for years).  Fix an
          off-by-one error in the enabled code.

Mon Feb 21 13:05:36 GMT 2011  Olly Betts <olly@survex.com>

        * tests/api_backend.cc: Add some test coverage for
          DatabaseModifiedError in get_mset().

Mon Feb 21 12:03:35 GMT 2011  Olly Betts <olly@survex.com>

        * NEWS: Fix typo in old entry.

Mon Feb 21 11:36:07 GMT 2011  Olly Betts <olly@survex.com>

        * examples/quest.cc: Report any spelling correction (requires the
          database contains spelling data of course).

Wed Feb 16 13:11:03 GMT 2011  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Add doxygen markup so alternative
          overloaded forms of Enquire::get_mset() appear in the API
          documentation.

Wed Feb 09 14:24:57 GMT 2011  Olly Betts <olly@survex.com>

        * docs/admin_notes.rst: Up to darte for 1.2.5.  Minor wording
          improvements.  Mention copydatabase --no-renumber.

Wed Feb 09 14:06:55 GMT 2011  Olly Betts <olly@survex.com>

        * examples/copydatabase.cc: Add --no-renumber option.

Tue Feb 01 11:17:58 GMT 2011  Olly Betts <olly@survex.com>

        * configure.ac: -Wstrict-null-sentinel was added in GCC 4.0.1 so
          doesn't work with GCC 4.0.0.  For simplicity, only enable it for
          GCC >= 4.1.

Tue Feb  1 08:22:52 GMT 2011  Olly Betts <olly@survex.com>

        * docs/deprecation.rst: Add $set{spelling,true}.

Thu Jan 20 14:52:53 GMT 2011  Olly Betts <olly@survex.com>

        * backends/flint/flint_btreebase.cc,backends/flint/flint_btreebase.h,
          backends/flint/flint_table.cc: Don't read the bitmaps from the base
          files when opening a database for reading (cross-port of equivalent
          change to chert).

Thu Jan 20 14:37:10 GMT 2011  Olly Betts <olly@survex.com>

        * backends/brass/brass_btreebase.cc,backends/brass/brass_btreebase.h,
          backends/brass/brass_table.cc: Don't read the bitmaps from the base
          files when opening a database for reading (cross-port of equivalent
          change to chert).

Thu Jan 20 14:21:10 GMT 2011  Olly Betts <olly@survex.com>

        * backends/chert/chert_btreebase.cc,backends/chert/chert_btreebase.h,
          backends/chert/chert_table.cc: Don't read the bitmaps from the base
          files when opening a database for reading.

Thu Jan 20 01:57:02 GMT 2011  Olly Betts <olly@survex.com>

        * backends/brass/brass_database.cc: Optimise not to update doclength
          when it hasn't changed (cross-port of equivalent change to chert).

Thu Jan 20 01:36:51 GMT 2011  Olly Betts <olly@survex.com>

        * backends/chert/chert_database.cc: Optimise not to update doclength
          when it hasn't changed.

Wed Jan 19 03:50:18 GMT 2011  Olly Betts <olly@survex.com>

        * tests/api_compact.cc: Close ofstream objects used to write out stub
          files for testing before we run the actual compaction, to avoid
          issues on Microsoft Windows (ticket#525).

Wed Jan 19 01:01:38 GMT 2011  Olly Betts <olly@survex.com>

        * HACKING: Snapshots and releases are now bootstrapped with autoconf
          2.68 and libtool 2.4.  Prune information about reasons for needing
          really old autotools versions when there's a reason to need a newer
          version anyway.

Sat Jan 15 11:10:26 GMT 2011  Olly Betts <olly@survex.com>

        * NEWS: Update from ChangeLog and 1.0.23.

Sat Jan 15 10:28:10 GMT 2011  Olly Betts <olly@survex.com>

        * bin/xapian-chert-update.cc: Fix to handle value slot entries in the
          termlist table.

Wed Jan 12 23:49:21 GMT 2011  Olly Betts <olly@survex.com>

        * bin/xapian-chert-update.cc: Adjust keys for doclength chunks too.

Wed Jan 12 13:37:30 GMT 2011  Olly Betts <olly@survex.com>

        * AUTHORS,bin/xapian-chert-update.cc: Fix to also rewrite docids in
          value chunk keys (reported by Luca Barbieri on xapian-discuss).

Tue Jan 11 08:41:02 GMT 2011  Olly Betts <olly@survex.com>

        * docs/deprecation.rst: Note removal of if idx in mset.

Tue Jan 11 08:30:29 GMT 2011  Olly Betts <olly@survex.com>

        * docs/deprecation.rst: PostingSource now offers a replacement for
          Enquire::set_bias().

Mon Jan 10 09:40:24 GMT 2011  Olly Betts <olly@survex.com>

        * api/compactor.cc: Add missing header <ctime> for time() (ticket#530).

Sun Jan 09 23:14:02 GMT 2011  Olly Betts <olly@survex.com>

        * api/compactor.cc: Use msvc_posix_rename() under __WIN32__ to
          atomically update stub file after compaction (ticket#525).

Thu Dec 23 13:00:43 GMT 2010  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Whitespace consistency tweak.

Thu Dec 23 11:01:26 GMT 2010  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony,tests/queryparsertest.cc: Handle
          NEAR/<offset> and ADJ/<offset> where offset isn't an integer the same
          way at the end of the query as in the middle.

Tue Dec 21 10:28:08 GMT 2010  Olly Betts <olly@survex.com>

        * net/tcpserver.cc: If we can't bind to the specified port because it
          is a privileged one, exit with code 77 (EX_NOPERM) to make it easier
          to automatically handle failure when starting the server from a
          script.

Tue Dec 21 07:43:52 GMT 2010  Olly Betts <olly@survex.com>

        * docs/index.html: Add link to main website.

Tue Dec 21 07:40:57 GMT 2010  Olly Betts <olly@survex.com>

        * docs/index.html,docs/overview.html: Update links to wiki.xapian.org
          to point to trac.xapian.org/wiki instead.

Mon Dec 20 10:02:06 GMT 2010  Richard Boulton <richard@tartarus.org>

        * docs/deprecation.rst: Add note about botched removal of python's
          Enquire.get_matching_terms (now fully removed).

Sun Dec 19 12:40:12 GMT 2010  Olly Betts <olly@survex.com>

        * NEWS: Update release date.

Sat Dec 18 13:17:52 GMT 2010  Olly Betts <olly@survex.com>

        * NEWS,configure.ac: Update for 1.2.4.

Wed Dec 15 11:56:22 GMT 2010  Olly Betts <olly@survex.com>

        * NEWS: Update.

Tue Dec 14 12:46:36 GMT 2010  Olly Betts <olly@survex.com>

        * HACKING,tests/runtest.in: Add XAPIAN_TESTSUITE_LD_PRELOAD hook to
          allow libeatmydata to easily be used when running the testsuite.

Mon Dec 13 14:28:19 GMT 2010  Olly Betts <olly@survex.com>

        * include/xapian/: Make it more explicitly clear that PostingIterator,
          PositionIterator, and TermIterator's skip_to methods advance (and
          hence shouldn't be expected to allow you to "rewind" the stream).

Mon Dec 13 14:18:18 GMT 2010  Olly Betts <olly@survex.com>

        * include/xapian/database.h: "network databases" -> "remote databases".

Mon Dec 13 14:10:08 GMT 2010  Olly Betts <olly@survex.com>

        * net/remoteserver.cc: If the message parameter only contains a
          string then we can just use it as is.

Mon Dec 13 13:34:30 GMT 2010  Olly Betts <olly@survex.com>

        * backends/remote/remote-database.cc,common/remote-database.h,
          common/remoteprotocol.h,common/remoteserver.h,
          docs/remote_protocol.html,net/remoteserver.cc,tests/api_metadata.cc:
          Add support for iterating metadata keys with the remote backend.
          This change necessitated a minor version bump in the remote protocol.

Sun Dec 12 12:24:48 GMT 2010  Olly Betts <olly@survex.com>

        * weight/tradweight.cc: Fix calculation order to avoid inconsistent
          weights due to rounding for TradWeight(0).
        * tests/api_backend.cc: Add regression test tradweight2.

Sat Dec 11 11:38:32 GMT 2010  Olly Betts <olly@survex.com>

        * AUTHORS: Update thanks list with bug reporters and patch submitters.

Thu Dec 09 03:59:42 GMT 2010  Olly Betts <olly@survex.com>

        * NEWS: Update from ChangeLog.

Thu Dec 09 03:58:20 GMT 2010  Olly Betts <olly@survex.com>

        * net/remoteconnection.cc: Add FIXME note about using sendfile() or
          similar.

Tue Dec 07 10:16:31 GMT 2010  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Note 1.0.x version #515 was fixed in.

Mon Dec 06 05:26:01 GMT 2010  Olly Betts <olly@survex.com>

        * net/replicatetcpclient.cc: Rearrange loop to avoid duplicating code.

Mon Dec 06 01:39:23 GMT 2010  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Fix typo so we test for OP_NEAR or
          OP_PHRASE, not twice for OP_NEAR, which fixes a bug with not setting
          the correct window size for default_op of OP_PHRASE in some cases.
          Factor out the "is_positional(op)" test into an inlined function to
          help avoid repeating this error.
        * tests/queryparsertest.cc: Add regression test coverage.

Mon Dec 06 01:01:03 GMT 2010  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Add coverage for OP_PHRASE as default_op.

Sun Dec 05 12:35:32 GMT 2010  Olly Betts <olly@survex.com>

        * weight/bm25weight.cc: Fix calculation order to avoid inconsistent
          weights due to rounding when BM25Weight is used with certain
          non-default parameter combinations.
        * tests/api_backend.cc: Add regression test bm25weight2.

Sun Dec 05 12:10:36 GMT 2010  Olly Betts <olly@survex.com>

        * backends/chert/chert_compact.cc: Add FIXME comment regarding
          resolve_duplicate_metadata() getting called multiple times for the
          same key in multipass mode.

Sun Dec 05 12:09:32 GMT 2010  Olly Betts <olly@survex.com>

        * include/xapian/compactor.h: Add documentation comments.

Sun Dec 05 04:54:03 GMT 2010  Olly Betts <olly@survex.com>

        * HACKING: Omega now wants libmagic-dev (though it's optional
          currently).

Wed Nov 17 10:56:10 GMT 2010  Olly Betts <olly@survex.com>

        * examples/quest.cc: Add command line options to allow prefixes to
          be specified for the QueryParser.

Tue Nov 09 23:18:36 GMT 2010  Olly Betts <olly@survex.com>

        * backends/brass/brass_compact.cc,backends/chert/chert_compact.cc,
          backends/flint/flint_compact.cc: Fix access to empty priority_queue
          while merging synonyms (found with _GLIBCXX_DEBUG).

Tue Nov 09 03:23:49 GMT 2010  Olly Betts <olly@survex.com>

        * HACKING: Drop list of platforms valgrind supports, as it takes
          effort to keep up to date.  People can check valgrind.org for an
          accurate list of currently supported platforms.

Sun Nov 07 14:13:44 GMT 2010  Olly Betts <olly@survex.com>

        * api/compactor.cc,backends/brass/brass_compact.cc,
          backends/chert/chert_compact.cc,backends/flint/flint_compact.cc,
          bin/xapian-compact.cc,include/xapian/compactor.h:
          Compactor::resolve_duplicate_metadata() callback method is now passed
          an array of std::string plus the array length, which allows for more
          efficient merging that the series of pairwise merges which was
          required before.

Mon Nov 01 14:47:37 GMT 2010  Richard Boulton <richard@tartarus.org>

        * matcher/multimatch.cc,matcher/multixorpostlist.cc,
          matcher/multixorpostlist.h: Add debugging to print out the
          postlist description after recalculation of maxweight, and to
          MultiXorPostList methods.  Fix problem shown by soaktest where
          the matcher was not told to recalculate the maxweight after a
          MultiXorPostList child reached end, which was causing an
          assertion failure in debug builds.  (This could also have been
          causing some performance problems, but I have not measurements.)

Mon Nov 01 10:34:30 GMT 2010  Richard Boulton <richard@tartarus.org>

        * tests/soaktest/soaktest_queries.cc: Fix compilation: call c_str()
          on argument to atoi, now that util.h no longer defines a string
          wrapper.

Sun Oct 31 10:51:12 GMT 2010  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Don't delete this in TermGroup, etc
          until after we have successfully constructed the Query object to
          return to avoid a double free in the Query construction throws an
          exception.  Fixes ticket#515.

Fri Oct 29 12:46:15 GMT 2010  Olly Betts <olly@survex.com>

        * tests/api_backend.cc: Fix comment typo in previous commit.

Fri Oct 29 12:32:47 GMT 2010  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Empty query now return MSet with firstitem
          set correctly.
        * tests/api_backend.cc: Extend msetfirst2 to be a regression test for
          this issue too.

Fri Oct 29 12:13:51 GMT 2010  Olly Betts <olly@survex.com>

        * api/omenquire.cc: If first is larger than get_doccount() then clamp
          it to avid pointlessly trying to allocate far too much memory.
        * tests/api_backend.cc: Regression test msetfirst2.

Thu Oct 21 09:38:44 GMT 2010  Richard Boulton <richard@tartarus.org>

        * tests/Makefile.am: Add zlib-vg.c to distribution tarballs.

Wed Oct 20 11:38:13 GMT 2010  Olly Betts <olly@survex.com>

        * examples/delve.cc: Add '-z' option to count zero-length documents.

Mon Oct 18 10:35:46 GMT 2010  Olly Betts <olly@survex.com>

        * bin/xapian-compact.cc: Add --quiet/-q option to suppress progress
          output.

Thu Oct 14 03:51:02 GMT 2010  Olly Betts <olly@survex.com>

        * tests/api_unicode.cc: Fix typo in previous change.

Thu Oct 14 01:16:31 GMT 2010  Olly Betts <olly@survex.com>

        * tests/api_unicode.cc: Expand tested cases to (hopefully) cover all
          conditional combinations in unicode/utf8itor.cc.

Mon Oct 11 11:46:30 GMT 2010  Olly Betts <olly@survex.com>

        * Makefile.am: Remove xapian-config on "make distclean" rather than
          "make clean", since configure builds it.  Never remove man pages
          under "make clean".

Mon Oct 11 11:41:32 GMT 2010  Olly Betts <olly@survex.com>

        * tests/Makefile.am: Fix typo - CLEAN_FILES should be CLEANFILES.
          This means that where zlib-vg.so is used, it now gets cleaned up.

Sun Oct 10 11:00:31 GMT 2010  Olly Betts <olly@survex.com>

        * Makefile.am: Fix so coverage-reconfigure-maintainer-mode adds
          --enable-maintainer-mode rather than coverage-reconfigure!

Sun Oct 10 10:45:38 GMT 2010  Olly Betts <olly@survex.com>

        * Makefile.am: Factor out COVERAGE_CONFIGURE to make future changes
          easier.

Sun Oct 10 09:59:01 GMT 2010  Olly Betts <olly@survex.com>

        * Makefile.am: Add coverage-reconfigure-maintainer-mode target which
          is just like coverage-reconfigure except it also passes
          --enable-maintainer-mode.

Sun Oct 10 07:29:23 GMT 2010  Olly Betts <olly@survex.com>

        * tests/api_nodb.cc: Check Stem("none") too.  Check
          Stem("").get_description().  No need to check a bogus language name
          here as stemlangs2 now does that.

Sun Oct 10 07:22:41 GMT 2010  Olly Betts <olly@survex.com>

        * tests/api_stem.cc: Test an invalid languages name with each possible
          byte value at the start to improve coverage of the switch in
          api/stem.cc.

Sun Oct 10 06:14:42 GMT 2010  Olly Betts <olly@survex.com>

        * unicode/utf8itor.cc: Correct comments and use bad_cont() in another
          place (no change to code once inlining is taken into account).

Sun Oct 10 06:11:05 GMT 2010  Olly Betts <olly@survex.com>

        * tests/api_unicode.cc: Improve test coverage for
          Utf8Iterator::calculate_sequence_length().

Sun Oct 10 00:33:49 GMT 2010  Olly Betts <olly@survex.com>

        * tests/api_unicode.cc: Tweak testcase utf8iterator2 to add coverage
          for Utf8Iterator(const char *).

Fri Oct 08 13:10:08 GMT 2010  Olly Betts <olly@survex.com>

        * matcher/selectpostlist.cc,matcher/selectpostlist.h: Implement
          SelectPostList::check() so that check() on OP_NEAR and OP_PHRASE
          subqueries won't end up checking potentially huge numbers of
          documents.

Fri Oct 08 12:29:50 GMT 2010  Olly Betts <olly@survex.com>

        * tests/api_backend.cc: Add testcase phrase3 to provide coverage for
          SelectPostList::skip_to().

Fri Oct 08 10:36:18 GMT 2010  Olly Betts <olly@survex.com>

        * matcher/orpostlist.cc,matcher/orpostlist.h: Fix performance
          regression in some cases caused by the introduction of
          OrPostList::check().

Thu Oct 07 03:53:11 GMT 2010  Olly Betts <olly@survex.com>

        * tests/api_anydb.cc: Clear tout before each iteration in scaleweight1.

Wed Oct 06 14:30:34 GMT 2010  Olly Betts <olly@survex.com>

        * NEWS: Update from 1.0.22 and ChangeLog.

Wed Oct 06 12:39:36 GMT 2010  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Add two more testcases for having a phrase
          generator between prefix and term.

Wed Oct 06 12:37:32 GMT 2010  Olly Betts <olly@survex.com>

        * include/xapian/matchspy.h,include/xapian/postingsource.h: Remove
          "experimental" marker from PostingSource and ValueCountMatchSpy.

Wed Oct 06 12:31:01 GMT 2010  Olly Betts <olly@survex.com>

        * docs/index.html: Add links to replication and facets documents, and
          fix typo in serialistion document link.

Wed Oct 06 12:12:51 GMT 2010  Olly Betts <olly@survex.com>

        * docs/Makefile.am,docs/categorisation.rst,docs/facets.rst: Change the
          categorisation document to talk about facets, since that's the
          terminology that seems to be most widely used these days, and
          "categorisation" can also mean automatically assigning categories to
          documents.  Fix up references to features which were removed or
          changed during development.

Wed Oct 06 12:11:21 GMT 2010  Olly Betts <olly@survex.com>

        * docs/internals.html: Add link to replication protocol.

Wed Oct 06 08:36:50 GMT 2010  Olly Betts <olly@survex.com>

        * examples/simplesearch.cc: Fix cut and paste error in usage message.

Wed Oct 06 00:12:40 GMT 2010  Olly Betts <olly@survex.com>

        * api/emptypostlist.cc,matcher/queryoptimiser.cc: In the query
          optimiser, use value range bounds to check for value ranges which
          must be empty.
        * tests/api_opvalue.cc: Add testcase valuerange5 to check this
          optimisation actually fires.

Tue Oct 05 03:43:02 GMT 2010  Olly Betts <olly@survex.com>

        * examples/simplesearch.cc: Fix cut-and-paste error - --version now
          reports simplesearch not simpleexpand.

Tue Oct 05 03:41:48 GMT 2010  Olly Betts <olly@survex.com>

        * docs/categorisation.rst: Update to use the current ValueCountMatchSpy
          API.

Fri Oct 01 09:53:50 GMT 2010  Olly Betts <olly@survex.com>

        * configure.ac: Simplify defaulting enable_documentation a little.

Fri Oct 01 09:29:03 GMT 2010  Olly Betts <olly@survex.com>

        * configure.ac: Default enable_sse to yes to fix build on x86.

Fri Oct 01 09:10:34 GMT 2010  Olly Betts <olly@survex.com>

        * configure.ac: Fix typo in SSE handling code which stopped it
          defaulting as intended.

Fri Oct 01 02:00:49 GMT 2010  Olly Betts <olly@survex.com>

        * NEWS: Update from ChangeLog.

Fri Oct 01 01:54:41 GMT 2010  Olly Betts <olly@survex.com>

        * backends/Makefile.mk,backends/brass/brass_compact.cc,
          backends/byte_length_strings.h,backends/chert/chert_compact.cc,
          backends/flint/flint_compact.cc: Factor out 3 copies of
          ByteLengthPrefixedStringItor and ByteLengthPrefixedStringItorGt into
          their own file.

Fri Oct 01 01:28:57 GMT 2010  Olly Betts <olly@survex.com>

        * backends/Makefile.mk,backends/brass/brass_compact.cc,
          backends/brass/brass_spelling.cc,backends/chert/chert_compact.cc,
          backends/chert/chert_spelling.cc,backends/flint/flint_compact.cc,
          backends/flint/flint_spelling.cc,
          backends/prefix_compressed_strings.h: Factor out 6 copies of
          PrefixCompressedStringItor and PrefixCompressedStringWriter and 3
          copies of PrefixCompressedStringItorGt into their own file.

Thu Sep 30 15:28:49 GMT 2010  Olly Betts <olly@survex.com>

        * NEWS: Update from ChangeLog.

Thu Sep 30 15:26:52 GMT 2010  Olly Betts <olly@survex.com>

        * api/compactor.cc: Need utils.h for stat with a std::string argument.

Thu Sep 30 15:23:50 GMT 2010  Olly Betts <olly@survex.com>

        * tests/api_compact.cc: Remove unwanted check left over from cut and
          pasting code from a previous testcase.

Thu Sep 30 15:21:02 GMT 2010  Olly Betts <olly@survex.com>

        * tests/api_compact.cc: Convert compaction tests to use the new API.

Thu Sep 30 14:54:27 GMT 2010  Olly Betts <olly@survex.com>

        * backends/brass/brass_compact.cc,backends/chert/chert_compact.cc,
          backends/flint/flint_compact.cc: Correct filenames in @file doxygen
          comments.

Thu Sep 30 14:46:02 GMT 2010  Olly Betts <olly@survex.com>

        * api/compactor.cc: Use the ChertVersion, etc classes to make sure that
          the new database has a new UUID rather than creating a "donor"
          database and then stealing its version/uuid file.

Thu Sep 30 14:33:46 GMT 2010  Olly Betts <olly@survex.com>

        * api/Makefile.mk,api/compactor.cc,backends/brass/Makefile.mk,
          backends/brass/brass_compact.cc,backends/brass/brass_compact.h,
          backends/chert/Makefile.mk,backends/chert/chert_compact.cc,
          backends/chert/chert_compact.h,backends/flint/Makefile.mk,
          backends/flint/flint_compact.cc,backends/flint/flint_compact.h,bin/,
          include/Makefile.mk,include/xapian.h,include/xapian/compactor.h:
          Convert compaction code into a Xapian::Compactor class, and make
          xapian-compact a simple wrapper around this new class.  (ticket#175)

Thu Sep 30 06:16:11 GMT 2010  Olly Betts <olly@survex.com>

        * bin/: Eliminate uses of <iostream> in bin/xapian-compact-*.cc.

Thu Sep 30 05:44:06 GMT 2010  Olly Betts <olly@survex.com>

        * bin/xapian-compact-brass.cc,bin/xapian-compact-chert.cc,
          bin/xapian-compact-flint.cc: Fix indentation of table data
          arrays.

Thu Sep 30 05:32:44 GMT 2010  Olly Betts <olly@survex.com>

        * bin/xapian-compact-brass.cc,bin/xapian-compact-chert.cc: Only
          skip producing an output table when there are only some inputs
          for the termlist - for spellings and synonyms, we want to produce
          an output in this case.
        * tests/api_compact.cc: Add regression test compactmissingtables1.

Wed Sep 29 11:13:18 GMT 2010  Olly Betts <olly@survex.com>

        * common/document.h: Initialise docid to 0 when creating a document
          from scratch, as documented.
        * tests/api_none.cc: Add regression test document2.
        * include/xapian/document.h: Document that return value is unreliable
          in this case prior to the next 1.0 and 1.2 releases.

Wed Sep 29 07:06:10 GMT 2010  Olly Betts <olly@survex.com>

        * configure.ac: FreeBSD and OpenBSD don't need explicit dependency
          libraries, so set link_all_deplibs_CXX=no there.

Wed Sep 29 07:04:20 GMT 2010  Olly Betts <olly@survex.com>

        * xapian-config.in: Just check @link_all_deplibs_CXX@ which we adjust
          in configure rather than duplicating configure's list of platforms
          where explicit dependencies aren't required.

Mon Sep 27 04:28:46 GMT 2010  Olly Betts <olly@survex.com>

        * bin/xapian-compact.cc: Convert error messages to stdout/stderr to
          exceptions, in preparation for turning this into an API class.

Mon Sep 27 03:50:54 GMT 2010  Olly Betts <olly@survex.com>

        * bin/xapian-compact.cc: Add support for compacting to a stub database,
          which can be one of the inputs (for atomic update).
        * tests/api_compact.cc: Add testcases compactstub3 and compactstub4 as
          feature tests for this.

Mon Sep 27 03:50:00 GMT 2010  Olly Betts <olly@survex.com>

        * tests/api_compact.cc: Suppress output from xapian-compact in
          compactstub2 (which I'd disabled for debugging).

Sun Sep 26 13:59:20 GMT 2010  Olly Betts <olly@survex.com>

        * bin/xapian-compact.cc: Extend to work on stub database files too.
        * tests/api_compact.cc: Add feature test compactstub2.

Sun Sep 26 13:28:45 GMT 2010  Olly Betts <olly@survex.com>

        * bin/xapian-compact.cc: Inputs can now be stub database directories,
          in which case the databases in the stub are used as inputs.
        * tests/api_compact.cc: Add feature test compactstub1.

Sun Sep 26 11:11:49 GMT 2010  Olly Betts <olly@survex.com>

        * xapian-config.in: Add --static option which makes other options
          report values for static linking.

Tue Sep 21 10:43:17 GMT 2010  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony,tests/queryparsertest.cc: Allow phrase
          generators between a probabilistic prefix and the term itself.

Thu Sep 09 11:18:47 GMT 2010  Olly Betts <olly@survex.com>

        * INSTALL: Raise recommended GCC version from 3.3 to 4.1, since that's
          the oldest we regularly test with.

Thu Sep 09 11:14:03 GMT 2010  Olly Betts <olly@survex.com>

        * HACKING: Debian etch was discontinued 6 months ago, so it's no longer
          useful to document packages for developing Xapian on it.

Thu Sep 09 03:15:00 GMT 2010  Olly Betts <olly@survex.com>

        * docs/deprecation.rst: Actually write down our guidelines for
          supporting other software.

Thu Sep 09 00:20:16 GMT 2010  Olly Betts <olly@survex.com>

        * docs/replication.rst: Adjust text to reflect conclusions about the
          issues in ticket#434.

Thu Sep 09 00:10:03 GMT 2010  Olly Betts <olly@survex.com>

        * docs/replication.rst: Don't suggest using a symlink to switch between
          databases - a stub database is much better.

Thu Sep 09 00:07:02 GMT 2010  Olly Betts <olly@survex.com>

        * docs/replication.rst: Assume xapian tools are installed on PATH not
          in the current directory for example commands.

Thu Sep 09 00:05:22 GMT 2010  Olly Betts <olly@survex.com>

        * docs/replication.rst: Fix a typo.

Mon Sep 06 07:10:02 GMT 2010  Olly Betts <olly@survex.com>

        * configure.ac: Add support for --enable-sse=sse and --enable-sse=sse2
          to allow control of which SSE instructions to use.

Fri Sep 03 13:08:53 GMT 2010  Richard Boulton <richard@tartarus.org>

        * bin/xapian-replicate.cc: If a fullcopy was attempted, but was not
          put live, display an explanatory message (if verbose is true).

Fri Sep 03 05:54:09 GMT 2010  Olly Betts <olly@survex.com>

        * backends/chert/chert_modifiedpostlist.h,
          backends/flint/flint_modifiedpostlist.h,tests/: Fixes required to
          build on OpenBSD 4.5 with GCC 3.3.5.

Tue Aug 31 14:37:44 GMT 2010  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: Document cases where FLAG_WILDCARD and
          FLAG_PARTIAL aren't currently supported.

Mon Aug 30 06:27:46 GMT 2010  Olly Betts <olly@survex.com>

        * configure.ac: Actaully make autoconf 2.64 a hard minimum requirement
          (as HACKING already documented).
        * HACKING,NEWS,configure.ac: autoconf 2.67 is now used to bootstrap.

Mon Aug 30 06:26:03 GMT 2010  Olly Betts <olly@survex.com>

        * NEWS: Update from ChangeLog.

Mon Aug 30 06:04:13 GMT 2010  Olly Betts <olly@survex.com>

        * configure.ac: Enable use of SSE maths on x86 by default with Sun's
          compiler.

Sat Aug 28 16:04:45 GMT 2010  Olly Betts <olly@survex.com>

        * api/omdatabase.cc,include/xapian/queryparser.h,
          tests/harness/backendmanager.h: None of the workarounds we have
          which are conditional on __SUNPRO_CC are needed with Sun C++
          version 5.8, so only enable them for older versions (which will
          mean we can drop these workarounds with confidence once older
          versions are dropped by Sun/Oracle, or once we can find out that
          they have been - currently all I've managed to discover is that
          version 5.0 reached "end of service life" in 6/2006).

Sat Aug 28 15:33:14 GMT 2010  Olly Betts <olly@survex.com>

        * configure.ac,tests/api_replicate.cc: Solaris < 10 doesn't have
          setenv() so we have to use putenv() there.  And the value we set
          XAPIAN_MAX_CHANGESETS to is always constant currently, so set it
          using constant strings generated by a macro.

Sat Aug 28 12:35:25 GMT 2010  Olly Betts <olly@survex.com>

        * configure.ac: Beef up the test for whether -lm is required and add
          a special case to force it to be for Sun's C++ compiler - there's
          some interaction with libtool and/or shared objects which means
          that the configure test doesn't think -lm is needed here when it
          is.

Sat Aug 28 10:59:11 GMT 2010  Olly Betts <olly@survex.com>

        * api/matchspy.cc,common/const_database_wrapper.cc,net/tcpclient.cc,
          tests/api_replicate.cc,tests/harness/backendmanager_remotetcp.cc,
          tests/harness/testsuite.cc,tests/perftest/runprocess.cc,
          unicode/utf8itor.cc: Fix to compile with Sun C++.

Sat Aug 28 10:30:08 GMT 2010  Olly Betts <olly@survex.com>

        * HACKING,PLATFORMS: Move PLATFORMS information to the wiki and replace
          with a pointer.

Sat Aug 28 03:15:47 GMT 2010  Olly Betts <olly@survex.com>

        * matcher/queryoptimiser.cc: Need to avoid excess precision on m68k
          when targeting models 68010, 68020, 68030 as well as 68000.

Tue Aug 24 05:54:27 GMT 2010  Olly Betts <olly@survex.com>

        * configure.ac: Update for 1.2.3.

Tue Aug 24 05:52:47 GMT 2010  Olly Betts <olly@survex.com>

        * NEWS: Update from ChangeLog.

Mon Aug 16 16:46:19 GMT 2010  Olly Betts <olly@survex.com>

        * common/closefrom.cc: Use /dev/fd on Mac OS X.

Mon Aug 16 16:18:26 GMT 2010  Olly Betts <olly@survex.com>

        * common/closefrom.cc: Need safeerrno.h and safeunistd.h on non-Linux
          platforms too.

Mon Aug 16 15:47:48 GMT 2010  Olly Betts <olly@survex.com>

        * backends/flint_lock.cc,common/Makefile.mk,common/closefrom.cc,
          common/closefrom.h,configure.ac,net/progclient.cc: Use closefrom()
          if available, otherwise provide our own implementation (optimised
          to some extent for many platforms).

Sun Aug 15 12:43:04 GMT 2010  Olly Betts <olly@survex.com>

        * AUTHORS: Update.

Sun Aug 15 12:11:26 GMT 2010  Olly Betts <olly@survex.com>

        * xapian-core.spec.in: Update BuildRequires to specify libuuid-devel
          instead of e2fsprogs-devel.

Sun Aug 15 11:30:05 GMT 2010  Olly Betts <olly@survex.com>

        * HACKING,INSTALL,common/safeuuid.h,common/win32_uuid.cc,
          common/win32_uuid.h,configure.ac: libuuid moved from e2fsprogs to
          util-linux-ng about a year ago, so update documentation, comments,
          and configure error messages to reflect this.  Issue reported by
          David Jeske on xapian-devel list.

Sun Aug 15 07:58:51 GMT 2010  Olly Betts <olly@survex.com>

        * tests/harness/backendmanager_remotetcp.cc: Under __WIN32__, we need
          <io.h> for _open_osfhandle() (ticket#495).

Sun Aug 15 07:10:25 GMT 2010  Olly Betts <olly@survex.com>

        * common/realtime.h: MSVC doesn't cope with a prototype at function
          scope with a global namespace qualification (ticket#495).

Wed Aug 04 10:44:08 GMT 2010  Olly Betts <olly@survex.com>

        * backends/flint_lock.cc,backends/multi/multi_alltermslist.cc,
          bin/xapian-chert-update.cc,queryparser/termgenerator.cc,
          queryparser/termgenerator_internal.cc: Fix more incorrect @file
          directives.

Wed Aug 04 09:19:10 GMT 2010  Olly Betts <olly@survex.com>

        * matcher/localsubmatch.h,queryparser/termgenerator_internal.h: Fix
          incorrect @file doxygen directives.

Tue Aug 03 14:42:56 GMT 2010  Olly Betts <olly@survex.com>

        * tests/harness/fdtracker.h: Fix filename in @file.

Tue Aug 03 14:32:45 GMT 2010  Olly Betts <olly@survex.com>

        * common/contiguousalldocspostlist.h,common/unaligned.h: Fix include
          guards to match header filename (cosmetic issues only).

Mon Aug 02 12:38:59 GMT 2010  Olly Betts <olly@survex.com>

        * backends/brass/brass_table.cc,backends/brass/brass_values.cc,
          backends/chert/chert_table.cc,backends/chert/chert_values.cc,
          backends/flint/flint_alldocspostlist.cc,
          backends/remote/remote-document.cc,matcher/multimatch.cc,
          matcher/remotesubmatch.cc,net/progclient.cc: Use new Literal()
          feature in debug logging of function calls.

Mon Aug 02 12:08:42 GMT 2010  Olly Betts <olly@survex.com>

        * common/pretty.h: Add Literal() class to allow bypassing the pretty
          printer for interspersing literal strings.

Sun Aug 01 10:19:38 GMT 2010  Olly Betts <olly@survex.com>

        * api/omdatabase.cc: Database::get_spelling_suggestion() will now
          suggest a correction even if the passed word is in the dictionary,
          provided the correction has at least the same frequency.  Partly
          addresses #225.
        * queryparser/queryparser.lemony: Check spelling even if term is in
          the database.
        * docs/spelling.rst: Update to reflect these changes.
        * tests/api_spelling.cc,tests/queryparsertest.cc: Add test coverage for
          these changes.

Tue Jul 27 15:24:56 GMT 2010  Tim Brody <tdb2@ecs.soton.ac.uk>

        * xapian-core.spec.in: Add xapian-metadata and cmake related files to
          RPM packaging.

Thu Jul 22 07:13:12 GMT 2010  Olly Betts <olly@survex.com>

        * net/remoteconnection.cc: Wrap line.

Thu Jul 22 07:11:23 GMT 2010  Olly Betts <olly@survex.com>

        * common/remoteserver.h,net/remoteserver.cc: Pass 1.0 for the end time
          when relaying a NetworkTimeoutError, not RealTime::now() - any time
          in the past will do, we just want the operation to time out if it
          would block.  Removed related FIXME which is already resolved.

Wed Jul 21 18:00:08 GMT 2010  Olly Betts <olly@survex.com>

        * unicode/tclUniData.cc: Fix comment - this is Unicode 5.2 data, not
          5.1.

Thu Jul 15 13:45:05 GMT 2010  Olly Betts <olly@survex.com>

        * common/realtime.h:Explicitly specify global namespace for
          xapian_sleep_milliseconds prototype as MSVC seems to need this.

Thu Jul 15 13:03:13 GMT 2010  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Fix handling of groups of terms which
          are all stopwords - in situations where this causes a problem we now
          disable stopword checks for such groups.  (ticket#245)
        * tests/queryparsertest.cc: Add regression testcases.

Thu Jul 15 08:13:03 GMT 2010  Olly Betts <olly@survex.com>

        * common/fileutils.cc: Fix reversed memcmp() test.

Sun Jul 11 14:59:06 GMT 2010  Olly Betts <olly@survex.com>

        * common/fileutils.cc: Factor out UNCW path check into a helper
          function.

Sun Jul 11 14:56:27 GMT 2010  Olly Betts <olly@survex.com>

        * common/fileutils.cc,tests/Makefile.am,tests/unittest.cc: Move the
          tests of resolve_relative_path() into a new "unittest" program so
          they actually are run by "make check".  (ticket#243)

Sun Jul 11 13:14:24 GMT 2010  Olly Betts <olly@survex.com>

        * common/fileutils.cc: Support the \\?\ path syntax.

Sat Jul 10 15:49:08 GMT 2010  Olly Betts <olly@survex.com>

        * common/fileutils.cc,common/fileutils.h: Fix resolve_relative_path()
          to handle UNC paths.

Sat Jul 10 15:27:48 GMT 2010  Olly Betts <olly@survex.com>

        * common/fileutils.cc: -D__WIN32__ on the g++ command line works for
          testing on Linux, so no need to have that in the code.  Add a couple
          of UNC path test cases which pass, and a commented-out one which
          fails.

Sat Jul 10 14:58:35 GMT 2010  Olly Betts <olly@survex.com>

        * common/fileutils.cc,common/fileutils.h: We use these routines to
          resolve a relative path (in a stub database file) in terms of a
          second path (the filename of that file), so just instead a
          routine to do exactly that, which is easier to code and more
          efficient.  The new implementation fixes several bugs with
          Microsoft Windows paths.  Some testcases (currently not used)
          are now present in fileutils.cc (ticket#243).
        * backends/dbfactory.cc: Use the new API.

Fri Jul 09 07:42:31 GMT 2010  Olly Betts <olly@survex.com>

        * tests/perftest/perftest.cc: I missed a use of atoi() on std::string
          but just call .cstr() on the string instead of dragging in utils.h.

Fri Jul 09 04:39:40 GMT 2010  Olly Betts <olly@survex.com>

        * common/utils.cc,common/utils.h: Remove unused std::string to const
          char * wrappers for standard functions, and remove the only use of
          rmdir()'s wrapper.

Thu Jul 08 15:18:04 GMT 2010  Olly Betts <olly@survex.com>

        * api/omenquire.cc: Xapian::ESet is a reference counted handle, so it
          is efficient to return by value - remove FIXME which suggests we
          should avoid doing so.

Thu Jul 08 15:17:20 GMT 2010  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc: Update FIXMEs - it's too late to fix stuff
          in 1.1.x!

Thu Jul 08 15:13:47 GMT 2010  Olly Betts <olly@survex.com>

        * api/omenquire.cc: Remove FIXMEs about debug logging which have been
          addressed by the fairly recent debug logging improvements.

Thu Jul 08 15:07:07 GMT 2010  Olly Betts <olly@survex.com>

        * api/keymaker.cc: Fix comment typos.

Thu Jul 08 14:50:59 GMT 2010  Olly Betts <olly@survex.com>

        * api/replication.cc,backends/brass/,backends/chert/,
          backends/dbfactory_remote.cc,backends/flint/,
          backends/remote/remote-database.cc,bin/xapian-progsrv.cc,
          bin/xapian-tcpsrv.cc,common/,net/,tests/perftest/perftest.cc,
          tests/perftest/perftest.h: Replace use of OmTime with a double
          holding a count in seconds since the epoch.

Thu Jul 08 12:35:40 GMT 2010  Olly Betts <olly@survex.com>

        * net/tcpclient.cc: Retry select() if it fails with EINTR while waiting
          for connect(), and discriminate cases with same failure message to
          aid debugging.

Thu Jul 08 05:09:18 GMT 2010  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Remove comment left over from the
          "boolean exclusive" work.

Wed Jul 07 13:18:17 GMT 2010  Olly Betts <olly@survex.com>

        * include/xapian/types.h: Fix documentation comment for Xapian::timeout
          type - it holds a time interval in milliseconds not microseconds
          (the API docs for the methods which use it explicitly document this
          correctly).

Tue Jul 06 15:17:09 GMT 2010  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Fix formatting.

Tue Jul 06 14:13:03 GMT 2010  Olly Betts <olly@survex.com>

        * tests/perftest/perftest.cc: Use str(OmTime::as_double()) rather than
          trying to assemble a string of a floating point number from strings
          of the sec and usec values.

Tue Jul 06 14:03:30 GMT 2010  Olly Betts <olly@survex.com>

        * common/debuglog.h,common/remote-database.h: Remove unused '#include
          "omtime.h"'.
        * backends/remote/remote-database.cc: Add explicit '#include
          "omtime.h"'.

Mon Jul 05 11:40:42 GMT 2010  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Restore iterator to start of
          where we tried to parse a range if we decide it might be a filter
          term instead.  Clear the error if we decide it is a filter.
        * tests/queryparsertest.cc: Fix expected test output from
          qp_value_range4 testcase.

Mon Jul 05 06:46:16 GMT 2010  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Fix to be smarter about handling a
          boolean filter term containing ".." in the presence of
          valuerangeprocessors.
        * tests/queryparsertest.cc: Add regression test qp_value_range4.

Mon Jul 05 04:10:08 GMT 2010  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony,queryparser/queryparser.lt: Clean up
          how value ranges are handled to do the checking of the range in the
          lexer, which then passes a single token (RANGE) to the parser
          (instead of a RANGE_START token which is always followed by a
          RANGE_END token).

Fri Jul 02 12:32:37 GMT 2010  Olly Betts <olly@survex.com>

        * configure.ac: Don't pass -mtune=generic unless GCC >= 4.2 is in use
          (ticket#492).

Wed Jun 30 10:54:15 GMT 2010  Olly Betts <olly@survex.com>

        * backends/brass/brass_postlist.cc: Remove unnecessary NULL check.
          Identified by Coverity's Scan.
        * backends/chert/chert_postlist.cc: Same change for chert.

Tue Jun 29 12:17:16 GMT 2010  Olly Betts <olly@survex.com>

        * backends/brass/brass_chunkedlisttable.h,
          backends/chert/chert_chunkedlisttable.h: Remove unused files.

Sun Jun 27 04:31:06 GMT 2010  Olly Betts <olly@survex.com>

        * NEWS: Update for 1.2.2.

Sun Jun 27 04:22:28 GMT 2010  Olly Betts <olly@survex.com>

        * examples/delve.cc: Show the database's UUID.

Sun Jun 27 03:30:16 GMT 2010  Olly Betts <olly@survex.com>

        * NEWS.SKELETON: Add "tools" section.

Sun Jun 27 03:03:57 GMT 2010  Olly Betts <olly@survex.com>

        * configure.ac: Update for 1.2.2.

Sat Jun 26 15:55:45 GMT 2010  Olly Betts <olly@survex.com>

        * NEWS: Create from ChangeLog.

Sat Jun 26 15:36:37 GMT 2010  Olly Betts <olly@survex.com>

        * NEWS.SKELETON: Add template for NEWS entry.

Sat Jun 26 11:09:03 GMT 2010  Olly Betts <olly@survex.com>

        * backends/brass/brass_table.cc: Sync the table right after the base
          file, which allows more time for the table changes to be written,
          and doing the sync together may be more efficient with some Linux
          kernel versions.
        * backends/chert/chert_table.cc: Same change for chert.

Sat Jun 26 06:46:39 GMT 2010  Olly Betts <olly@survex.com>

        * HACKING: Reorder the release checklist.

Thu Jun 24 08:03:18 GMT 2010  Olly Betts <olly@survex.com>

          bin/xapian-check.cc: Don't try to check doclengths are consistent
          between the postlist and termlist tables if it would use more than
          1GB of memory, and handle std::bad_alloc or std::length_error.  This
          issue affects sup users, as sup allocates docids such that they are
          sparse and large docids can easily occur.

Wed Jun 23 15:38:25 GMT 2010  Olly Betts <olly@survex.com>

        * include/xapian/weight.h: Revert Xapian::Weight's copy ctor back
          to protected as GCC 4.1 fails to compile subclasses when it is
          private (this appears to be a compiler bug).

Wed Jun 23 07:31:19 GMT 2010  Olly Betts <olly@survex.com>

        * AUTHORS: Thank people who reported bugs fixed in 1.2.1.

Wed Jun 23 06:52:54 GMT 2010  Olly Betts <olly@survex.com>

        * xapian-core.spec.in: Update for 1.2.x - add e2fsprogs-devel to
          BuildRequires and add new files.

Wed Jun 23 05:00:34 GMT 2010  Olly Betts <olly@survex.com>

        * HACKING: Wording tweak.

Wed Jun 23 04:11:30 GMT 2010  Olly Betts <olly@survex.com>

        * tests/harness/testsuite.cc: Need <cstdio> for sprintf().  Fixes
          compilation error for some platforms and/or compilers (my guess would
          be GCC 4.5 - it builds OK with GCC 4.4).  (ticket#489)

Tue Jun 22 14:45:37 GMT 2010  Olly Betts <olly@survex.com>

        * NEWS,configure.ac: Update for 1.2.1.

Mon Jun 21 16:00:22 GMT 2010  Olly Betts <olly@survex.com>

        * NEWS: Sync with 1.0.21 and update from ChangeLog.

Mon Jun 21 15:15:50 GMT 2010  Olly Betts <olly@survex.com>

        * tests/api_replicate.cc: Unix putenv() requires the buffer passed to
          remain valid, as it stores it directly in the environment.  It's
          unclear from MSDN if _putenv() does the same, but _putenv_s() must
          allocate a copy since it needs to have an '=' in, so use that
          instead.  It also has an interface much like setenv(), so the code
          looks more similar.

Mon Jun 21 06:07:42 GMT 2010  Olly Betts <olly@survex.com>

        * queryparser/queryparser.cc: Add missing const.

Mon Jun 21 05:21:32 GMT 2010  Olly Betts <olly@survex.com>

        * queryparser/queryparser.cc: Update to match header ABI fix.

Mon Jun 21 03:52:41 GMT 2010  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: QueryParser::add_boolean_prefix() now
          uses two overloaded forms instead of a default parameter so that we
          don't break the ABI.

Fri Jun 18 16:56:59 GMT 2010  Olly Betts <olly@survex.com>

        * AUTHORS: Add 1.0.21 bug reporters.

Fri Jun 18 05:52:00 GMT 2010  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h,queryparser/queryparser.cc,
          queryparser/queryparser.lemony,queryparser/queryparser_internal.h:
          Add new optional parameter to QueryParser::add_boolean_prefix() to
          allow the user to indicate a prefix isn't "exclusive" and that
          OP_AND should be used to combine multiple instances.  Fixes
          ticket#402.  This change should also improve efficiency as it
          avoids copying the lists of prefixes and compares them more
          efficiently.

Fri Jun 18 02:51:11 GMT 2010  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: Fix doccomment typo.

Thu Jun 17 14:04:35 GMT 2010  Olly Betts <olly@survex.com>

        * include/xapian/weight.h: Xapian::Weight's copy ctor is now
          private rather than protected.  This is an API and ABI compatible
          change since there's no definition so a subclass which tried to
          access it before would fail to link.

Thu Jun 17 13:00:47 GMT 2010  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Missing changes from previous commit.

Thu Jun 17 11:37:30 GMT 2010  Olly Betts <olly@survex.com>

        * api/valuerangeproc.cc: Add support for open-ended ranges
          (ticket#480).
        * docs/queryparser.html,docs/valueranges.rst: Document.
        * tests/queryparsertest.cc: Add feature tests.

Thu Jun 17 06:15:24 GMT 2010  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Switch out of IN_GROUP mode when we
          emit a WILDCARD.  Fixeds bug#484.
        * tests/queryparsertest.cc: Add regression testcase to wildcard1.

Thu Jun 17 02:42:16 GMT 2010  Olly Betts <olly@survex.com>

        * tests/api_backend.cc: Rename failedadd1 to failedreplace1 as it's the
          replace which fails really.  Add failedreplace2 which adds explicit
          coverage for the case of a failed replace when the database isn't
          empty to start with.

Tue Jun 15 12:45:36 GMT 2010  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: Note in the description of
          set_database() what the database is used for.

Tue Jun 15 12:26:12 GMT 2010  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: Fix formatting of bullet list.

Mon Jun 14 17:02:10 GMT 2010  Olly Betts <olly@survex.com>

        * backends/brass/brass_table.cc,backends/chert/chert_table.cc,
          backends/flint/flint_table.cc: cancel() now marks the Btree as
          unmodified.
        * tests/api_backend.cc: Add regression test failedadd1.

Sun Jun 13 16:07:49 GMT 2010  Olly Betts <olly@survex.com>

        * common/Makefile.mk,common/safeuuid.h,configure.ac: Fix mingw build to
          use __WIN32__ UUID API.

Sun Jun 13 12:25:24 GMT 2010  Olly Betts <olly@survex.com>

        * tests/perftest/freemem.cc: Fix whitespace to match Omega's version.

Sun Jun 13 11:52:24 GMT 2010  Olly Betts <olly@survex.com>

        * tests/perftest/freemem.cc: Merge in changes from omega's version.
          Clean up whitespace issues.  Put the __WIN32__ case last, as we
          tend to elsewhere (since most people reading the code probably
          want to see the other version).

Sun Jun 13 11:32:30 GMT 2010  Olly Betts <olly@survex.com>

        * tests/perftest/perftest.cc: "MSWin32" isn't the OS name.  Also,
          prefer += to build up a string.

Sat Jun 12 09:31:28 GMT 2010  Olly Betts <olly@survex.com>

        * tests/api_percentages.cc: Note that 1.0.x returned 4% for the top hit
          in topercent5, so checking it gets at least 50% is a regression test
          for that issue.

Fri Jun 11 15:38:26 GMT 2010  Olly Betts <olly@survex.com>

        * configure.ac: -march=pentium4 doesn't seem to give a measurable
          speed-up or size reduction (from Richard's tests) and it carries a
          small risk of introducing instructions which don't work on some
          obscure CPU which implements SSE2, so drop it.

Fri Jun 11 15:25:16 GMT 2010  Olly Betts <olly@survex.com>

        * weight/bm25weight.cc: Stop forcing the wdf_max value to be at least
          one in BM25Weight::get_maxpart() - this is no longer needed now we
          calculate percentages based on the number of matching subqueries, and
          it is more natural for a non-existent term to get zero weight (ditto
          for a term which always has wdf = 0.
        * tests/api_anydb.cc: Change qterminfo1 to check that a non-existent
          term gets zero weight (previously we checked that it got a non-zero
          weight, but really we want to ensure that it contributes to
          percentage calculations, which new test topercent5 now does).

Fri Jun 11 15:19:29 GMT 2010  Olly Betts <olly@survex.com>

        * tests/api_percentages.cc: Add topercent5 testcase which checks that
          an OR search including an non-existent term doesn't get 100%, and
          that the non-existent term doesn't score more than terms which do
          exist.

Fri Jun 11 14:15:07 GMT 2010  Olly Betts <olly@survex.com>

        * matcher/queryoptimiser.cc: When using SSE FP instructions on x86 we
          can disable the use of volatile since there are no excess precision
          issues to work around.

Fri Jun 11 08:21:04 GMT 2010  Olly Betts <olly@survex.com>

        * configure.ac: Put SSE flags in AM_CXXFLAGS not CXXFLAGS.

Fri Jun 11 07:08:01 GMT 2010  Olly Betts <olly@survex.com>

        * configure.ac: Default to building with SSE FP instructions for x86.
          This avoids issues with excess precision and it a bit faster too.
          Should fix ticket#487.

Thu Jun 10 15:15:33 GMT 2010  Olly Betts <olly@survex.com>

        * NEWS: Update from ChangeLog.

Thu Jun 10 15:00:12 GMT 2010  Olly Betts <olly@survex.com>

        * HACKING: Capitalise "Fedora".

Thu Jun 10 11:27:18 GMT 2010  Olly Betts <olly@survex.com>

        * INSTALL: Reword UUID section - list platforms where we make use of
          built-in APIs first, give the URL for e2fsprogs home page, and
          give the package name for Debian and Ubuntu.

Thu Jun 10 01:08:21 GMT 2010  Olly Betts <olly@survex.com>

        * HACKING: libtool 2.2.10 used for snapshots and releases now.

Thu Jun 10 00:21:49 GMT 2010  Olly Betts <olly@survex.com>

        * configure.ac,include/xapian/version_h.cc,
          include/xapian/visibility.h: We do need to have the visibility
          annotations on for code compiling against the library, so substitute
          the probed value of XAPIAN_ENABLE_VISIBILITY into <xapian/version.h>
          so it is available.

Wed Jun 09 11:31:14 GMT 2010  Olly Betts <olly@survex.com>

        * INSTALL,configure.ac,include/xapian/visibility.h: Control use of
          GCC's visibility support with defined(XAPIAN_ENABLE_VISIBILITY)
          instead of !defined(XAPIAN_DISABLE_VISIBILITY), so it is only used
          when building the library, not when building code which uses it.
          Add check to configure that GCC actually supports visibility for
          the platform being built for, which fixes compiler warnings with
          platforms which don't (such as Mac OS X and mingw).

Wed Jun 09 11:17:58 GMT 2010  Olly Betts <olly@survex.com>

        * HACKING: "private", etc as "access specifiers", not "visibility
          specifiers".

Wed Jun 09 11:04:55 GMT 2010  Olly Betts <olly@survex.com>

        * HACKING: Note flex and bison needed to build doxygen.

Wed Jun 09 05:25:10 GMT 2010  Olly Betts <olly@survex.com>

        * common/win32_uuid.cc: Fix signed/unsigned comparison warning on
          mingw.

Tue Jun 08 16:56:26 GMT 2010  Olly Betts <olly@survex.com>

        * common/safewinsock2.h: Reword #error to avoid single quote which
          gives compilation warning with some GCC 4.2.1 on mingw.

Tue Jun 08 14:32:28 GMT 2010  Olly Betts <olly@survex.com>

        * backends/brass/brass_check.h,backends/chert/chert_check.h,
          backends/flint/flint_check.h: Remove mutable from std::ostream &
          member - mutable doesn't make sense for a reference.

Tue Jun 08 13:03:56 GMT 2010  Olly Betts <olly@survex.com>

        * common/,matcher/,weight/weightinternal.cc: Replace the still rather
          contorted mechanism for accumulating rel termfreqs for local
          databases with a simpler mechanism which is more efficient in both
          space and time.

Mon Jun 07 16:31:24 GMT 2010  Olly Betts <olly@survex.com>

        * api/maptermlist.h,api/matchspy.cc,api/termlist.cc,backends/brass/,
          backends/chert/,backends/flint/,
          backends/inmemory/inmemory_database.cc,
          backends/inmemory/inmemory_database.h,
          backends/multi/multi_termlist.cc,backends/multi/multi_termlist.h,
          backends/remote/net_termlist.cc,backends/remote/net_termlist.h,
          common/ortermlist.h,common/termlist.h,expand/ortermlist.cc: Remove
          default OrTermList::skip_to() implementation and implement skip_to()
          in each class instead, as this allows a slightly more efficient
          implementation, and also avoids problems with calling skip_to() as
          the first operation for the many subclasses which have a "started"
          flag, which OrTermList::skip_to() won't set.

Mon Jun 07 06:08:53 GMT 2010  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Rename TermList class to Terms to
          avoid confusion with the TermList typedef used elsewhere.  Add
          documentation comments for Terms and TermGroup classes.

Mon Jun 07 02:18:05 GMT 2010  Olly Betts <olly@survex.com>

        * backends/brass/: Switch to using io_utils instead of brass_io.

Mon Jun 07 02:16:30 GMT 2010  Olly Betts <olly@survex.com>

        * AUTHORS: Add Arvid Ephraim Picciani for help fixing bootstrap for
          BusyBox sha1sum.

Mon Jun 07 01:16:57 GMT 2010  Olly Betts <olly@survex.com>

        * common/io_utils.cc: Whitespace tweak.

Mon Jun 07 00:58:26 GMT 2010  Olly Betts <olly@survex.com>

        * common/io_utils.h: Fix header guard macro name to follow convention.

Sun Jun 06 15:07:55 GMT 2010  Olly Betts <olly@survex.com>

        * HACKING,configure.ac: Upgrade to using libtool 2.2.8.

Sun Jun 06 04:34:13 GMT 2010  Olly Betts <olly@survex.com>

        * bin/Makefile.mk,configure.ac: Fix build failures with some
          combinations of backends disabled (partially addresses ticket#361).

Sat Jun 05 16:30:57 GMT 2010  Olly Betts <olly@survex.com>

        * matcher/remotesubmatch.cc: Add missing parameter of
          RemoteSubMatch::start_match() to debug logging.

Sat Jun 05 15:03:56 GMT 2010  Olly Betts <olly@survex.com>

        * matcher/queryoptimiser.h: Make QueryOptimiser::optimise_query()'s
          argument const pointer, since we only pass it to do_subquery() which
          takes a const pointer.

Fri Jun 04 16:05:01 GMT 2010  Olly Betts <olly@survex.com>

        * common/rset.h: Just keep a reference to the set<docid> from the
          Xapian::RSet object rather than copying it (since we now only
          create the RSetI object transiently, so the Xapian::RSet object
          is definitely valid for its whole lifetime).

Fri Jun 04 15:57:50 GMT 2010  Olly Betts <olly@survex.com>

        * api/omenquire.cc,matcher/localmatch.cc,matcher/localmatch.h: Keep
          a Xapian::RSet handle in the LocalSubMatch object and only create
          an RSetI object briefly in LocalSubMatch::prepare_match().

Fri Jun 04 15:36:45 GMT 2010  Olly Betts <olly@survex.com>

        * common/pretty.h: RSetI objects are no longer passed as parameters
          or return values, so we no longer need to handle them.

Fri Jun 04 15:28:21 GMT 2010  Olly Betts <olly@survex.com>

        * api/omenquire.cc,common/esetinternal.h,common/omenquireinternal.h,
          common/rset.h,expand/esetinternal.cc,matcher/rset.cc: RSetI is used
          when collating statistics prior to performing the match, and when
          generating an ESet.  The second use is entirely unnecessary and just
          ends up with us copying the std::set<Xapian::docid> from inside the
          Xapian::RSet object, so eliminate it and just use the Xapian::RSet
          object directly.  This allows RSetI to be simplified somewhat too.

Fri Jun 04 14:22:38 GMT 2010  Olly Betts <olly@survex.com>

        * tests/api_backend.cc: Make arrays static const.

Fri Jun 04 13:25:20 GMT 2010  Olly Betts <olly@survex.com>

        * backends/Makefile.mk: Note need to update include/xapian/version_h.cc
          when adding a new backend.
        * AUTHORS: Thanks to Conrad Hoffmann for pointing this omission out.

Thu Jun 03 15:01:44 GMT 2010  Richard Boulton <richard@tartarus.org>

        * tests/soaktest/soaktest_queries.cc: Add missing include of str.h

Thu Jun 03 12:09:35 GMT 2010  Richard Boulton <richard@tartarus.org>

        * tests/Makefile.am: Fix building of zlib-vg.so in VPATH builds.

Thu Jun 03 11:49:31 GMT 2010  Richard Boulton <richard@tartarus.org>

        * matcher/orpostlist.cc,tests/api_backend.cc: Fix several bugs in
          OrPostList::check() (introduced since 1.2.0).  Fixes ticket #485.
          Specifically, we have to check a sub-postlist even if head=did,
          because we need to know if that sub-postlist is valid.  Also, if
          a sub-postlist is not valid, set its head to did+1, since we know
          that we're no longer interested in matches before did, and this
          allows the OrPostList to assume that the minimum docid of its
          children is the current docid.

Thu Jun 03 07:15:24 GMT 2010  Olly Betts <olly@survex.com>

        * matcher/: Implement MultiXorPostList which returns correct weights
          for XOR of more than 2 subqueries, and drop XorPostList completely.
          (ticket#475)
        * tests/api_anydb.cc: Add regression test xor2.

Thu Jun 03 04:38:56 GMT 2010  Olly Betts <olly@survex.com>

        * tests/api_replicate.cc: Tweak loop end test to be a normal while.

Thu Jun 03 01:22:20 GMT 2010  Olly Betts <olly@survex.com>

        * tests/api_stem.cc: Note stem2's feature was backported to 1.0.21.

Tue Jun 01 13:49:44 GMT 2010  Olly Betts <olly@survex.com>

        * backends/brass/brass_database.cc,backends/brass/brass_termlist.cc,
          backends/chert/chert_database.cc,backends/chert/chert_termlist.cc,
          backends/flint/flint_database.cc,backends/flint/flint_document.cc,
          backends/flint/flint_termlist.cc,matcher/: Fix LOGCALL_VOID uses
          for ctors and dtors to be LOGCALL_CTOR and LOGCALL_DTOR respectively.

Tue Jun 01 13:33:07 GMT 2010  Olly Betts <olly@survex.com>

        * api/omdocument.cc: Use LOGCALL_VOID instead of LOGCALL with a void
          return type.

Tue Jun 01 13:08:02 GMT 2010  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: The debug logging now copes with being passed
          RSet* so remove special casing with ?:.

Tue Jun 01 10:17:27 GMT 2010  Olly Betts <olly@survex.com>

        * HACKING,configure.ac: Drop support for --enable-log=profile -
          dedicated profiling tools are likely to return more useful results.
        * common/debuglog.cc,common/debuglog.h: Rename xapian_debuglogger__
          global to xapian_debuglogger_ to avoid reserved __ in the name.
        * common/omdebug.cc,common/omdebug.h: Remove in favour of debuglog.h.
        * common/pretty.h: New PrettyOStream<> template class for pretty
          printing types in debug logs (and eventually the testsuite).
        * api/,backends/brass/,backends/chert/,
          backends/dbfactory_remote.cc,backends/flint/,
          backends/inmemory/inmemory_database.cc,
          backends/inmemory/inmemory_document.cc,
          backends/inmemory/inmemory_positionlist.cc,
          backends/multi/multi_postlist.cc,backends/multi/multi_termlist.cc,
          common/,expand/esetinternal.cc,expand/expandweight.cc,
          expand/ortermlist.cc,matcher/,net/progclient.cc,
          net/remoteconnection.cc: Migrate all remaining uses of omdebug.h to
          debuglog.h.  Write more parameters to the debug log.  Retire the
          barely used APICALL category and use API instead (reflecting actual
          current use).  Add new REPLICA category.  Fix names logged for ctors
          and dtors which have "::" in the class name.

Sun May 30 13:45:12 GMT 2010  Olly Betts <olly@survex.com>

        * api/omenquire.cc: Remove bogus "Data::" from debug logging for two
          methods.

Sun May 30 08:49:22 GMT 2010  Olly Betts <olly@survex.com>

        * include/xapian/stem.h,languages/stem.cc: Xapian::Stem now recognises
          "nb" and "nn" as codes for the Norwegian stemmer.
        * tests/api_stem.cc: Add feature test stem2 to check that these new
          codes work.

Sat May 29 10:12:40 GMT 2010  Olly Betts <olly@survex.com>

        * common/debuglog.h: Add overload of operator| which writes ", " and
          then a value to std::ostream.
        * api/omdatabase.cc,api/replication.cc,
          backends/brass/brass_alldocspostlist.cc,
          backends/brass/brass_metadata.cc,backends/brass/brass_table.cc,
          backends/chert/,backends/dbfactory.cc,
          backends/flint/flint_alldocspostlist.cc,expand/esetinternal.cc,
          expand/expandweight.cc,matcher/,net/remoteconnection.cc,
          weight/bm25weight.cc,weight/weight.cc: Use this in LOGCALL uses to
          make them shorter and more readable.

Fri May 28 06:47:57 GMT 2010  Olly Betts <olly@survex.com>

        * api/leafpostlist.cc,api/omdatabase.cc,backends/brass/brass_table.cc,
          backends/chert/chert_table.cc,backends/dbfactory.cc,
          backends/flint/flint_alldocspostlist.cc: Put LOGCALL macro use all on
          one line so we can more easily mechanise use and update.

Fri May 28 04:22:35 GMT 2010  Olly Betts <olly@survex.com>

        * api/replication.cc,api/valueiterator.cc,
          backends/brass/brass_alltermslist.cc,
          backends/chert/chert_alltermslist.cc,backends/dbfactory.cc,
          backends/inmemory/inmemory_document.cc,
          backends/remote/remote-document.cc,matcher/synonympostlist.cc,
          net/remoteconnection.cc,weight/bm25weight.cc: Use NO_ARGS instead of
          "" and LOGCALL_VOID instead of LOGCALL with void return type.

Fri May 28 04:12:35 GMT 2010  Olly Betts <olly@survex.com>

        * matcher/valuerangepostlist.cc: Add missing inclusions of
          "debuglog.h".
        * backends/brass/brass_metadata.h,backends/brass/brass_postlist.h,
          backends/brass/brass_synonym.h,backends/chert/chert_metadata.h,
          backends/chert/chert_postlist.h,backends/chert/chert_synonym.h,
          backends/dbfactory_remote.cc,backends/flint/flint_metadata.h,
          backends/flint/flint_synonym.h,common/database.h,common/rset.h:
          Remove unused inclusions of "omassert.h" and "omdebug.h".
        * common/rset.h: Remove unused inclusion of "weightinternal.h".
        * api/omdatabase.cc,api/registry.cc,api/replication.cc,backends/brass/,
          backends/chert/,backends/dbfactory.cc,backends/flint/: Add missing
          explicit inclusions of "debuglog.h". Fix LOGCALL markup of ctors and
          dtors.  Use LOGCALL instead of DEBUGCALL.

Fri May 28 04:06:08 GMT 2010  Olly Betts <olly@survex.com>

        * backends/flint/flint_alldocspostlist.h: Add missing explicit
          inclusions of "autoptr.h", "flint_database.h", and forward
          declaration of class FlintCursor.

Fri May 28 03:52:40 GMT 2010  Olly Betts <olly@survex.com>

        * common/const_database_wrapper.h,common/databasereplicator.h,
          common/gnu_getopt.h: Add "(C)" to copyright statements for
          consistency with other files.

Fri May 28 03:45:26 GMT 2010  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lt: Include "debuglog.h" instead of
          "omdebug.h".

Fri May 28 03:45:03 GMT 2010  Olly Betts <olly@survex.com>

        * queryparser/queryparser.cc: Remove unused inclusion of "omdebug.h".

Fri May 28 03:40:50 GMT 2010  Olly Betts <olly@survex.com>

        * expand/esetinternal.cc,matcher/localmatch.cc,matcher/multimatch.cc,
          matcher/rset.cc: Add missing explicit inclusions of "omassert.h".

Thu May 27 23:39:57 GMT 2010  Olly Betts <olly@survex.com>

        * common/Makefile.mk,common/expand.h: Remove unused header.

Thu May 27 06:45:27 GMT 2010  Olly Betts <olly@survex.com>

        * include/xapian/stem.h: Update the list of languages that the
          Xapian::Stem constructor recognises.

Thu May 27 05:20:42 GMT 2010  Olly Betts <olly@survex.com>

        * include/xapian/stem.h,languages/Makefile.mk,
          languages/compiler/generator.c,languages/stem.cc,
          languages/steminternal.cc,languages/steminternal.h,tests/Makefile.am,
          tests/api_stem.cc: Add the ability to specify your own stemming
          algorithm by subclassing Xapian::StemImplementation, mostly based on
          patch from Evgeny Sizikov in ticket#448.

Thu May 27 04:50:31 GMT 2010  Olly Betts <olly@survex.com>

        * tests/api_opvalue.cc: Use TEST_REL() instead of tout and TEST() with
          an inequality.

Thu May 27 04:28:07 GMT 2010  Olly Betts <olly@survex.com>

        * api/replication.cc,backends/databasereplicator.cc,common/debuglog.h,
          common/omdebug.h,expand/esetinternal.cc,expand/ortermlist.cc,
          matcher/,net/remoteconnection.cc: Partial mass conversion of files
          from omdebug.h to debuglog.h (this takes care off all the files
          without BSN copyright).

Thu May 27 04:24:36 GMT 2010  Olly Betts <olly@survex.com>

        * common/output.h: Use <ostream> not <fstream>.

Thu May 27 04:09:25 GMT 2010  Olly Betts <olly@survex.com>

        * matcher/orpostlist.cc: Prefer ++x to x += 1 for consistency.

Wed May 26 13:32:20 GMT 2010  Olly Betts <olly@survex.com>

        * matcher/exactphrasepostlist.cc: Separate (C) notice from @file
          doccomment.

Wed May 26 13:11:57 GMT 2010  Olly Betts <olly@survex.com>

        * backends/flint/flint_postlist.cc,backends/flint/flint_postlist.h:
          Move virtual method FlintPostList::get_doclength() definition out
          of header, which also means the header no longer needs omdebug.h.

Wed May 26 13:03:22 GMT 2010  Olly Betts <olly@survex.com>

        * common/debuglog.h: Strip out commented out RETURN_VOID machinery.
          This case is automatically handled provided LOGCALL_VOID is used.

Wed May 26 12:33:04 GMT 2010  Olly Betts <olly@survex.com>

        * common/debuglog.h: Don't check the category more than once in ctors
          and dtors.  Don't convert the return value to a string in RETURN()
          unless we want to log it.

Wed May 26 02:33:00 GMT 2010  Olly Betts <olly@survex.com>

        * tests/api_opvalue.cc: Convert file description to doccomment.
          Remove unused headers and reorder remainder more standardly.

Tue May 25 10:17:42 GMT 2010  Olly Betts <olly@survex.com>

        * tests/api_backend.cc: Note ordecay1 and ordecay2 fixes now also in
          1.0.21.  Whitespace tweak.

Tue May 25 04:11:53 GMT 2010  Olly Betts <olly@survex.com>

        * tests/api_backend.cc: make_ordecay1_db and make_ordecay2_db end up
          looping over at least 4 billion values (or possibly infinitely) on
          platforms where sizeof(long) == 8.  The two databases are very
          similar and the latter one works for the former test, so use the
          same db for both tests, and rewrite the generator to work
          portably.

Sun May 23 07:30:58 GMT 2010  Olly Betts <olly@survex.com>

        * tests/api_backend.cc: Note XOR decay bug also fixed in 1.0.21.

Sat May 22 13:31:38 GMT 2010  Olly Betts <olly@survex.com>

        * configure.ac,tests/Makefile.am: Only try to build zlib-vg.so if we
          are found a suitable valgrind installed (otherwise it's a waste of
          effort to build it, and the build will fail without the valgrind
          headers).

Sat May 22 13:18:33 GMT 2010  Olly Betts <olly@survex.com>

        * configure.ac,tests/Makefile.am,tests/runtest.in,tests/zlib-vg.c: zlib
          can produce "uninitialised" output from "initialised" input - the
          output does decode to the input, so this is presumably just some
          unused bits in the output, so we use an LD_PRELOAD hack to get
          valgrind to check the input is initialised and then tell it that the
          output is initialised.

Wed May 19 14:34:52 GMT 2010  Richard Boulton <richard@tartarus.org>

        * matcher/andmaybepostlist.cc,matcher/andmaybepostlist.h,
          matcher/orpostlist.cc: Fix a bug causing documents to be skipped
          when OR decayed to AND_MAYBE, if the new RHS was behind the LHS
          at the time of the decay.  Fixes #476.
        * tests/api_backend.cc: Add test case ordecay2 as a regression test
          of this.  Also, remove some debug output in ordecay1, to speed it
          up quite a bit.

Wed May 19 11:48:07 GMT 2010  Richard Boulton <richard@tartarus.org>

        * matcher/orpostlist.cc,tests/api_backend.cc: Fix a bug in the
          decay from OR to AND: if the decay happened when the two
          sub-postlists were on different docids, but the higher of those
          docids actually occurred in both postlists, the higher docid
          would be incorrectly skipped.  Add regression test ordecay1 to
          test this.

Wed May 19 10:36:55 GMT 2010  Richard Boulton <richard@tartarus.org>

        * tests/api_backend.cc,tests/api_compact.cc,
          tests/harness/testrunner.cc,tests/harness/testrunner.h: Add new
          test backend selection flag "generated", to select only backends
          which support generated test databases.

Wed May 19 03:14:15 GMT 2010  Olly Betts <olly@survex.com>

        * api/,backends/brass/,backends/chert/,
          backends/contiguousalldocspostlist.cc,backends/flint/,
          backends/inmemory/inmemory_database.cc,
          backends/remote/remote-database.cc,backends/slowvaluelist.cc,
          common/utils.h,expand/esetinternal.cc,matcher/phrasepostlist.cc,
          net/remoteserver.cc,net/remotetcpclient.cc,
          queryparser/termgenerator.cc,tests/,
          tests/harness/backendmanager_multi.cc,
          tests/harness/backendmanager_remote.cc,
          tests/harness/backendmanager_remotetcp.cc,tests/internaltest.cc,
          tests/perftest/perftest.cc,tests/perftest/perftest_matchdecider.cc,
          tests/perftest/perftest_randomidx.cc,tests/queryparsertest.cc,
          tests/termgentest.cc: Fully migrate from om_tostring() to str().

Wed May 19 03:13:43 GMT 2010  Olly Betts <olly@survex.com>

        * cmake/xapian-config-version.cmake,cmake/xapian-config.cmake: Remove
          generated files from SVN.

Wed May 19 02:59:47 GMT 2010  Olly Betts <olly@survex.com>

        * bin/xapian-inspect.cc: Add misisng explicit '#include <utils.h>'.

Tue May 18 14:24:03 GMT 2010  Olly Betts <olly@survex.com>

        * bin/Makefile.mk,bin/xapian-check.cc,bin/xapian-compact.cc: Improve
          building with flint, chert and/or brass disabled (partially addresses
          ticket#361).

Tue May 18 00:42:08 GMT 2010  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Fix warnings with --disable-backend-remote
          (partially addresses ticket#361).

Sat May 15 06:56:26 GMT 2010  Olly Betts <olly@survex.com>

        * net/progclient.cc: Read the max fd with sysconf() instead of using
          a hardcoded value of 256.  Work even if stdin and stdout have been
          closed.

Thu May 13 10:53:24 GMT 2010  Richard Boulton <richard@tartarus.org>

        * matcher/orpostlist.cc: Correct some debugging lines.

Thu May 13 09:57:12 GMT 2010  Richard Boulton <richard@tartarus.org>

        * matcher/xorpostlist.cc,matcher/xorpostlist.h: Pass a minweight
          value of 0 to children of XOR postlists, because we need to know
          about all matching documents from the children even if they have
          a low weight.
        * tests/api_backend.cc: Regression test for this: xordecay1.

Thu May 13 08:47:22 GMT 2010  Richard Boulton <richard@tartarus.org>

        * tests/soaktest/soaktest_queries.cc: Add more code comments,
          increase the number of repetitions from 100 to 10000, remove
          accidentally added semicolons after some braces, remove "return
          false" at end of test which was added for debugging purposes,
          clear tout before testing each query, and display the query
          number, the query, and the msets in the event of failure.

Tue May 11 10:16:05 GMT 2010  Richard Boulton <richard@tartarus.org>

        * tests/soaktest/soaktest_queries.cc: Don't fail for empty result
          sets.

Tue May 11 10:13:08 GMT 2010  Richard Boulton <richard@tartarus.org>

        * tests/soaktest/: Add a "soaktest" testsuite, intended to contain
          long-running tests with random data.  Currently contains a single
          test which builds and runs random queries, checking that the
          results returned are consistent when asking for different result
          ranges.

Mon May 10 16:57:29 GMT 2010  Richard Boulton <richard@tartarus.org>

        * tests/api_opvalue.cc: Add tests for OP_VALUE_RANGE to get
          coverage of the skip_to() and check() methods of
          ValueRangePostList.

Mon May 10 16:51:14 GMT 2010  Richard Boulton <richard@tartarus.org>

        * tests/api_opvalue.cc: Add a test to get coverage of
          ValueGePostList::skip_to().

Sun May 09 21:22:50 GMT 2010  Richard Boulton <richard@tartarus.org>

        * tests/api_nodb.cc,tests/api_opvalue.cc: Move test "opvaluege1"
          from api_nodb.cc to api_opvalue.cc, and rename to valuege3 for
          consistency with other tests of OP_VALUE_GE.

Sun May 09 21:19:43 GMT 2010  Richard Boulton <richard@tartarus.org>

        * tests/Makefile.am,tests/api_anydb.cc,tests/api_opvalue.cc: Move
          the tests for OP_VALUE_* query operators from api_anydb.cc to
          api_opvalue.cc.  Remove copyright statements earlier than 2007,
          since OP_VALUE_* wasn't added until 2007.

Sun May 09 21:04:06 GMT 2010  Richard Boulton <richard@tartarus.org>

        * matcher/valuegepostlist.cc: Initialise valuelist in check() if
          necessary.
        * tests/api_anydb.cc: Add regression test for this.

Thu May 06 15:03:43 GMT 2010  Richard Boulton <richard@tartarus.org>

        * tests/api_replicate.cc: Add some extra debugging, to help
          identify the problem with ticket #472.

Thu May 06 13:38:25 GMT 2010  Olly Betts <olly@survex.com>

        * common/safeuuid.h,configure.ac,INSTALL: Make use of built-in UUID API
          on FreeBSD and NetBSD.  (ticket#470)

Thu May 06 13:10:30 GMT 2010  Olly Betts <olly@survex.com>

        * AUTHORS,Makefile.am,cmake/,configure.ac: Install files to make Xapian
          easier to use with cmake.  Thanks to Sune Vuorela for providing the
          desired output.

Thu May 06 11:42:16 GMT 2010  Olly Betts <olly@survex.com>

        * tests/harness/fdtracker.cc: Don't pass NULL to closedir().

Thu May 06 11:19:41 GMT 2010  Olly Betts <olly@survex.com

        * tests/api_anydb.cc: Test UUID is 36 characters long.

Thu May 06 10:41:21 GMT 2010  Olly Betts <olly@survex.com>

        * matcher/valuegepostlist.cc: Use "str.h" and str().

Thu May 06 10:01:48 GMT 2010  Olly Betts <olly@survex.com>

        * matcher/valuegepostlist.cc: Remove unused headers.

Thu May 06 09:55:27 GMT 2010  Richard Boulton <richard@tartarus.org>

        * matcher/valuegepostlist.cc,matcher/valuerangepostlist.cc:
          Keep return value from valuelist->get_value() as a const string &
          rather than a string - could be more efficient on some compilers,
          though testing with gcc 4.1 revealed no difference.

Thu May 06 09:49:12 GMT 2010  Richard Boulton <richard@tartarus.org>

        * matcher/valuegepostlist.cc: "while(" -> "while (" in recent patch.

Thu May 06 09:30:27 GMT 2010  Olly Betts <olly@survex.com>

        * docs/replication.rst: Remove experimental warning.

Thu May 06 05:05:57 GMT 2010  Olly Betts <olly@survex.com>

        * matcher/valuerangepostlist.cc: Use "str.h" and str().

Thu May 06 05:03:22 GMT 2010  Olly Betts <olly@survex.com>

        * matcher/valuerangepostlist.cc: Remove '#include "leafpostlist.h"'
          and '#include "document.h"' which are no longer used.

Thu May 06 04:53:07 GMT 2010  Olly Betts <olly@survex.com>

        * matcher/valuerangepostlist.cc: Remove '#include "autoptr.h"' which is
          no longer required.

Thu May 06 04:18:25 GMT 2010  Olly Betts <olly@survex.com>

        * matcher/valuerangepostlist.cc: "while(" -> "while (" in recent patch.

Wed May 05 16:44:17 GMT 2010  Richard Boulton <richard@tartarus.org>

        * matcher/orpostlist.cc,matcher/orpostlist.h: Add
          OrPostList::check() method, which calls check() on the
          sub-postlists, rather than falling back to skip_to().  This is
          particularly helpful when a sub-postlist is one for which
          skip_to() can be significantly more expensive than check(), such
          as a ValueRangePostList.  I've observed a speedup of 10 times for
          such a subquery with this change.

Wed May 05 16:34:30 GMT 2010  Richard Boulton <richard@tartarus.org>

        * matcher/valuegepostlist.cc,matcher/valuerangepostlist.cc,
          matcher/valuerangepostlist.h: Implement ValueRangePostList and
          ValueGePostList using a ValueList streaming values for the value
          slot of interest, rather than using an AllDocsPostList to get all
          documents, using that to open temporary documents for each
          document being considered, and then using that to get the value.
          I've observed a speedup of more than 70 times for range queries
          in a real-world situation with this change (a 29 second search
          became a 0.4 second search). (ticket#432)

Wed May 05 06:44:31 GMT 2010  Olly Betts <olly@survex.com>

        * NEWS: Update from ChangeLog.

Wed May 05 05:42:56 GMT 2010  Olly Betts <olly@survex.com>

        * backends/brass/brass_cursor.cc,backends/chert/chert_cursor.cc,
          backends/flint/flint_cursor.cc: If we have to rebuild the cursor
          on next() because the table changed underneath us, we need to
          advance it because find_entry() will put the cursor on the entry
          we were already on, or the one before if the entry we were on
          has been removed.  Bug uncovered by notmuch testsuite, but I'm
          unable to reduce it to a sane testcase for our testsuite.
          (Debian#579951)

Tue May 04 19:38:31 GMT 2010  Richard Boulton <richard@tartarus.org>

        * api/replication.cc,bin/xapian-replicate.cc,
          common/replicatetcpclient.h,common/replication.h,
          net/replicatetcpclient.cc,tests/api_replicate.cc: Fix a bug in
          replication, which triggered when multiple modifications were
          made to a database while a full copy of the database was in
          progress.  In this situation, the client would fail to apply more
          than one changeset before trying (and failing) to make the
          database live, due to an incorrect assignment of the new revision
          number to "offline_needed_revision" instead of
          "offline_revision".  Also, replication now only sleeps for a
          period (to allow reader to catch up) after a changeset has been
          applied to a live database - previously, it would sleep
          unnecessarily after a changeset had been applied to an offline
          database.  Also, make the period for which replication sleeps in
          this situation configurable with the "-r" command line option to
          xapian-replicate.
          A test for these changes will be committed to xapian-bindings
          shortly.

Sat May 01 15:25:48 GMT 2010  Olly Betts <olly@survex.com>

        * Merge change accidentally committed to brass-btree branch:
        * tests/perftest/runprocess.cc: Use safesyswait.h, fixing build failure
          on "make check" on FreeBSD.

Fri Apr 30 12:33:25 GMT 2010  Richard Boulton <richard@tartarus.org>

        * backends/brass/brass_databasereplicator.cc,
          backends/chert/chert_databasereplicator.cc,
          backends/flint/flint_databasereplicator.cc,tests/api_replicate.cc:
          If a DB file doesn't exist when applying a changeset, try
          creating it - this happens with lazy tables which aren't created
          in the initial revision copied.  Add replicate4 test to check
          that this works correctly with a lazily created position table.
          Fixes ticket #468.

Fri Apr 30 07:09:31 GMT 2010  Olly Betts <olly@survex.com>

        * docs/deprecation.rst: Replication and PostingSource aren't
          experimental in 1.2.x.

Fri Apr 30 00:52:22 GMT 2010  Olly Betts <olly@survex.com>

        * tests/harness/testsuite.cc: Fix typo in previous commit.

Thu Apr 29 23:46:09 GMT 2010  Olly Betts <olly@survex.com>

        * tests/harness/testsuite.cc: Check is SA_SIGINFO is defined before
          using it as it isn't available everywhere.  Fixes FTBFS on GNU Hurd.

Thu Apr 29 12:11:48 GMT 2010  Olly Betts <olly@survex.com>

        * configure.ac: Install headers under PREFIX/include not
          PREFIX/include/xapian.  This broke compiling code which didn't use
          XO_LIB_XAPIAN or xapian-config.

Wed Apr 28 12:05:23 GMT 2010  Olly Betts <olly@survex.com>

        * Makefile.am,m4-macros/xapian-1.1.m4: Remove -1.1 suffix from
          xapian-1.1.m4 and libxapian-1.1.la.

Wed Apr 28 06:15:45 GMT 2010  Olly Betts <olly@survex.com>

        * NEWS: Sync with 1.0.20.
        * NEWS,configure.ac: 1.2.0!

Tue Apr 27 12:45:29 GMT 2010  Olly Betts <olly@survex.com>

        * AUTHORS: Add bug reporter.

Mon Apr 26 08:26:26 GMT 2010  Olly Betts <olly@survex.com>

        * common/getopt.cc,common/gnu_getopt.h: On Cygwin, #include <getopt.h>
          for declarations of optind, etc rather than providing our own
          declarations.  Should fix warnings in Cygwin build reported by Reini
          Urban on xapian-devel list.

Mon Apr 26 06:27:07 GMT 2010  Olly Betts <olly@survex.com>

        * common/getopt.cc,common/gnu_getopt.h: Revert previous 2
          getopt-related patches.  The latest state was breaking on Solaris
          which (contrary to what its man pages say) prototypes getopt() stuff
          in stdlib.h.  This seems to be a rabbit hole we don't want to head
          further down.

Sat Apr 24 02:12:53 GMT 2010  Olly Betts <olly@survex.com>

        * examples/delve.cc: Update --help output for -v to cover all terms
          case.

Sat Apr 24 01:58:00 GMT 2010  Olly Betts <olly@survex.com>

        * examples/delve.cc: Add -a option to list all terms in a database.

Sat Apr 24 01:51:01 GMT 2010  Olly Betts <olly@survex.com>

        * examples/copydatabase.cc: Prefer string() to "" converted to string.

Thu Apr 22 14:21:30 GMT 2010  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Fix bug related to ticket#464 (the previous
          fix doesn't fix some similar cases).
        * tests/api_backend.cc: Add regression test msize2.

Thu Apr 22 11:02:11 GMT 2010  Olly Betts <olly@survex.com>

        * tests/: Hook up --abort-on-error fix for termgentest, stemtest,
          queryparsertest, and internaltest.

Thu Apr 22 06:06:53 GMT 2010  Olly Betts <olly@survex.com>

        * HACKING: Add a hyphen.

Wed Apr 21 11:16:50 GMT 2010  Olly Betts <olly@survex.com>

        * tests/harness/testrunner.cc: Exit with status 1 not 0 if we caught an
          exception from the harness itself.

Wed Apr 21 11:11:10 GMT 2010  Olly Betts <olly@survex.com>

        * tests/harness/testrunner.cc,tests/harness/testsuite.cc: Fix
          --abort-on-error to actually work.

Tue Apr 20 12:53:29 GMT 2010  Olly Betts <olly@survex.com>

        * docs/deprecation.rst: Note how to disable deprecation warnings.

Tue Apr 20 07:27:23 GMT 2010  Olly Betts <olly@survex.com>

        * api/omenquire.cc,matcher/multimatch.cc: Fix incorrect estimate and
          bounds on matches when sorting and collapsing in a particular case
          (ticket#464).
        * tests/api_backend.cc: Add regression test msize1.

Mon Apr 19 01:59:59 GMT 2010  Olly Betts <olly@survex.com>

        * examples/delve.cc: Use strtoul() instead of atoi() to decode document
          id and value slot numbers passed on the command line.  Report out of
          range and invalid values.

Sat Apr 17 09:17:25 GMT 2010  Olly Betts <olly@survex.com>

        * common/getopt.cc,common/gnu_getopt.h: Fix getopt code to work on
          platforms without GNU getopt but with getopt().

Fri Apr 16 14:23:49 GMT 2010  Olly Betts <olly@survex.com>

        * NEWS,configure.ac: Update for 1.1.5.
        * NEWS: Sync changes from 1.0.19.

Fri Apr 16 12:29:14 GMT 2010  Olly Betts <olly@survex.com>

        * tests/harness/testsuite.cc: Handle NULL in the const char * catch.

Fri Apr 16 05:47:43 GMT 2010  Olly Betts <olly@survex.com>

        * api/postingsource.cc: Fix wrapping.

Thu Apr 15 09:07:40 GMT 2010  Richard Boulton <richard@tartarus.org>

        * tests/api_replicate.cc: Use a fixed size buffer for copying a
          file, rather than a dynamically sized buffer; avoids using the
          GCC extension allowing dynamically sized arrays.

Thu Apr 15 04:02:34 GMT 2010  Olly Betts <olly@survex.com>

        * AUTHORS: Update with bug reporters.

Thu Apr 15 00:30:45 GMT 2010  Olly Betts <olly@survex.com>

        * include/xapian/termgenerator.h: Note how TermGenerator handles
          stopwords.

Wed Apr 14 23:41:55 GMT 2010  Olly Betts <olly@survex.com>

        * common/getopt.cc,common/gnu_getopt.h: Put our optarg, etc in a
          namespace and then pull them in to avoid linking to versions in the C
          library.  Fixes warnings on Cygwin.

Wed Apr 14 15:33:39 GMT 2010  Olly Betts <olly@survex.com>

        * tests/api_backend.cc: Remove already fixed FIXME comment.

Wed Apr 14 14:13:10 GMT 2010  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Use const reference to avoid a
          needless handle copy.

Wed Apr 14 14:00:21 GMT 2010  Olly Betts <olly@survex.com>

        * backends/brass/brass_alltermslist.cc,
          backends/brass/brass_alltermslist.h,
          backends/chert/chert_alltermslist.cc,
          backends/chert/chert_alltermslist.h,
          backends/flint/flint_alltermslist.cc,
          backends/flint/flint_alltermslist.h: Fix memory leak if Database
          throws an exception in XXXAllTermsList constructor.  Fixes bug#462.
        * tests/api_backend.cc: Enable qpmemoryleak1 for non-remote backends as
          a regression test for this fix.

Tue Apr 13 12:38:08 GMT 2010  Olly Betts <olly@survex.com>

        * backends/flint/flint_table.cc: Don't memcpy() a block to itself -
          it's a waste of effort, and (probably) undefined behaviour (as a
          block overlaps itself).

Tue Apr 13 12:36:53 GMT 2010  Olly Betts <olly@survex.com>

        * backends/brass/brass_table.cc,backends/chert/chert_table.cc: Don't
          memcpy() a block to itself - it's a waste of effort, and (probably)
          undefined behaviour (as a block overlaps itself).

Tue Apr 13 08:38:40 GMT 2010  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Add a ParserHandler class to take
          care of releasing the yyParser object.

Tue Apr 13 07:49:33 GMT 2010  Olly Betts <olly@survex.com>

        * common/autoptr.h: Fix comment typo.

Tue Apr 13 07:47:40 GMT 2010  Olly Betts <olly@survex.com>

        * api/replication.cc: "autoptr.h" not <autoptr.h> (it's an in-tree
          header).

Tue Apr 13 07:25:11 GMT 2010  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Fix leak of yyParser if an exception
          is thrown during parsing.   Partly fixes ticket#462.
        * tests/api_backend.cc: Add regression test qpmemoryleak1.

Tue Apr 13 01:37:08 GMT 2010  Olly Betts <olly@survex.com>

        * common/utils.cc,common/utils.h: Revert change to make removedir()
          recurse into subdirectories - it doesn't fix a bug, so isn't
          appropriate when we're trying to get 1.2.0 out (backends don't
          currently put files in subdirectories, which was the justification
          in the commit message).

Mon Apr 12 11:50:37 GMT 2010  Olly Betts <olly@survex.com>

        * Backport change from brass:
        * backends/flint/: Fix to rebuild cursors if the table gains or loses a
          level.  Fixes ticket#455.

Mon Apr 12 09:29:39 GMT 2010  Olly Betts <olly@survex.com>

        * Backport change from brass:
        * backends/chert/: Fix to rebuild cursors if the table gains or loses a
          level.  Fixes ticket#455.

Mon Apr 12 09:26:53 GMT 2010  Olly Betts <olly@survex.com>

        * backends/brass/: Fix to rebuild cursors if the table gains or loses a
          level.  Fixes ticket#455.

Mon Apr 12 08:27:29 GMT 2010  Olly Betts <olly@survex.com>

        * tests/api_none.cc: Work around compilation failure on OpenBSD.  Fixes
          ticket#458.

Fri Apr 02 04:03:04 GMT 2010  Olly Betts <olly@survex.com>

        * m4-macros/xapian-1.1.m4: Give a more specific error message for the
          cases where XAPIAN_CONFIG isn't found, is a directory, or isn't
          executable.

Thu Mar 25 14:43:57 GMT 2010  Olly Betts <olly@survex.com>

        * tests/api_backend.cc: Add databasemodified1 testcase to provide some
          test coverage for DatabaseModifiedError.

Thu Mar 25 06:32:44 GMT 2010  Olly Betts <olly@survex.com>

        * bin/xapian-check-flint.cc: Report docid for doclength mismatch.

Thu Mar 25 06:23:26 GMT 2010  Olly Betts <olly@survex.com>

        * bin/xapian-check-brass.cc,bin/xapian-check-chert.cc: Report docid for
          doclength mismatch.

Sat Mar 20 15:04:18 GMT 2010  Olly Betts <olly@survex.com>

        * docs/spelling.rst: Add a note about removing automatically added
          spelling dictionary entries.

Sat Mar 20 09:30:44 GMT 2010  Olly Betts <olly@survex.com>

        * docs/spelling.rst: Add section on indexing.  Move the "algorithm"
          section to the end, as it is really just background information for
          the curious.

Wed Mar 17 01:33:39 GMT 2010  Olly Betts <olly@survex.com>

        * INSTALL: Add a hyphen.

Wed Mar 17 01:30:34 GMT 2010  Olly Betts <olly@survex.com>

        * INSTALL: Correct description of --enable-assertions.  It does NOT
          enable debugging symbols, and shouldn't control checks on bad data
          passed to API calls (if it does anywhere, that's a bug).  Note that
          Xapian will run more slowly with assertions on.

Wed Mar 17 01:10:13 GMT 2010  Olly Betts <olly@survex.com>

        * backends/brass/brass_values.cc: Put ValueUpdater in Brass namespace
          to avoid cross-linking issues with ValueUpdater class in chert
          (change taken from brass-btree branch).

Sun Mar 14 10:05:36 GMT 2010  Olly Betts <olly@survex.com>

        * Backport change from chert:
        * backends/flint/flint_database.cc,
          backends/flint/flint_positionlist.cc,
          backends/flint/flint_positionlist.h: When updating a document, rather
          than decoding the old positions, comparing with the new, and then
          encoding the new if different, we now just encode the new and then
          compare the encoded forms.  (ticket#428)  This change also avoids
          calling FlintPositionListTable::del() when we know the entry doesn't
          already exist.
        * backends/flint/flint_positionlist.cc: Minor refactor to improve
          code clarity and to only create std::string variable when it
          is needed.

Sun Mar 14 09:45:34 GMT 2010  Olly Betts <olly@survex.com>

        * Backport change from brass:
        * backends/chert/chert_positionlist.cc: Minor refactor to improve
          code clarity and to only create std::string variable when it
          is needed.

Sun Mar 14 09:29:54 GMT 2010  Olly Betts <olly@survex.com>

        * backends/brass/brass_positionlist.cc: Minor refactor to improve
          code clarity and to only create std::string variable when it
          is needed.

Sun Mar 14 07:37:03 GMT 2010  Olly Betts <olly@survex.com>

        * api/replication.cc,tests/api_closedb.cc,tests/api_metadata.cc,
          tests/internaltest.cc: Catch by const reference rather than just
          reference, unless we actually need to modify the caught object.

Sun Mar 14 06:45:11 GMT 2010  Olly Betts <olly@survex.com>

        * api/replication.cc: Check live_db only has a single sub-database even
          if we just lazily opened it.

Sun Mar 14 05:00:21 GMT 2010  Olly Betts <olly@survex.com>

        * backends/flint/flint_database.cc,
          backends/flint/flint_databasereplicator.cc: Add missing explicit
          '#include "str.h"'.

Sat Mar 13 09:22:24 GMT 2010  Richard Boulton <richard@tartarus.org>

        * tests/api_replicate.cc: Always use off_t to refer to the size of a
          file: fixes warnings about comparting a signed value to an unsigned
          value.

Thu Mar 11 16:07:10 GMT 2010  Richard Boulton <richard@tartarus.org>

        * api/replication.cc: Open the livedb lazily if it gets left in a
          closed state (due to an exception when applying a changeset),
          rather than reopening it straight away in an exception handler.
          This requires the livedb to become a mutable member, but is safer
          in the event that an exception is thrown by the WritableDatabase
          constructor.

Thu Mar 11 15:17:12 GMT 2010  Richard Boulton <richard@tartarus.org>

        * tests/api_replicate.cc: Uncomment the rmtmpdir() at the end of
          replicate3; it was accidentally committed debugging code.

Thu Mar 11 13:03:57 GMT 2010  Richard Boulton <richard@tartarus.org>

        * api/replication.cc: If an exception is thrown, mark that the
          offline revision needed is unknown (represented by being empty);
          ensures that a database isn't put live incorrectly in this case.
          Also, actually read the message for REPL_REPLY_END_OF_CHANGES, so
          that we get an error if the message is truncated.  Also, if an
          attempt to apply a changeset to the live database fails with an
          exception while the live database is closed, reopen the live
          database before allowing the exception to propagate.
        * tests/api_replicate.cc: Split replicate() helper function into
          two parts, to separate getting the changeset messages, and
          applying them. Add replicate3 test, which checks that
          replications which are provided with truncated messages raise
          appropriate errors.

Thu Mar 11 00:46:39 GMT 2010  Olly Betts <olly@survex.com>

        * common/replicate_utils.cc: Avoid creating temporary string objects
          to reduce bloat in compiled code.  Remove explicit std:: qualifiers.

Thu Mar 11 00:38:00 GMT 2010  Olly Betts <olly@survex.com>

        * common/replicate_utils.cc: The directory we're writing changesets
          to will always exist, so no need to ensure it does.

Thu Mar 11 00:10:19 GMT 2010  Olly Betts <olly@survex.com>

        * backends/chert/chert_databasereplicator.cc,
          backends/flint/flint_databasereplicator.cc: Fix calculation of end
          pointer for changes file.  Since the merge, it has been off by
          CONST_STRLEN(CHANGES_MAGIC_STRING).

Wed Mar 10 23:59:38 GMT 2010  Olly Betts <olly@survex.com>

        * backends/chert/chert_database.cc,
          backends/chert/chert_databasereplicator.cc: Add missing explicit
          '#include "str.h"'.

Wed Mar 10 13:07:41 GMT 2010  Richard Boulton <richard@tartarus.org>

        * common/Makefile.mk,common/replicate_utils.cc,
          common/replicate_utils.h: Add some utility functions for
          replication to create changeset files, and append content to
          them, to avoid duplicating the code in each backend.
        * backends/chert/chert_database.cc,
          backends/chert/chert_databasereplicator.cc,
          backends/chert/chert_databasereplicator.h,
          backends/flint/flint_database.cc,
          backends/flint/flint_databasereplicator.cc,
          backends/flint/flint_databasereplicator.h: Make the
          DatabaseReplicator subclasses respect the XAPIAN_MAX_CHANGESETS
          environment variable, such that they write the changesets they're
          applying to disk if the value is non-zero.  Enables replication
          from a replicated copy.
        * tests/api_replicate.cc: Refactor some common code, and add
          replicate2, which tests replication from a replicated copy.  Skip
          this test for brass, since brass doesn't support this.

Wed Mar 10 12:11:41 GMT 2010  Richard Boulton <richard@tartarus.org>

        * common/utils.cc,common/utils.h: Make removedir() recurse into
          subdirectories; this ensures that replication works if backends
          put some files in subdirectories of their replicas (eg, if the
          replica is itself a replicated database).

Wed Mar 10 12:07:40 GMT 2010  Richard Boulton <richard@tartarus.org>

        * backends/chert/,backends/flint/,common/Makefile.mk,
          common/io_utils.cc,common/io_utils.h: Refactor duplicated code
          from {flint,chert}_io.{cc,h} into common/io_utils.{cc,h}.  Rename
          flint_io_read() to io_read(); do similar for flint_io_write()
          and flint_io_sync(), and for the chert versions.  Leave brass
          alone to avoid conflicting with the new brass backend development
          branch.

Mon Mar 08 02:32:35 GMT 2010  Olly Betts <olly@survex.com>

        * bin/xapian-check-chert.cc: Check that the doclen initial chunk
          exists.

Tue Mar 02 13:28:50 GMT 2010  Olly Betts <olly@survex.com>

        * Backport change from brass:
        * backends/chert/chert_database.cc,
          backends/chert/chert_positionlist.cc,
          backends/chert/chert_positionlist.h: When updating a document, rather
          than decoding the old positions, comparing with the new, and then
          encoding the new if different, we now just encode the new and then
          compare the encoded forms.  (ticket#428)  This change also avoids
          calling ChertPositionListTable::del() when we know the entry doesn't
          already exist.

Tue Mar 02 04:00:22 GMT 2010  Olly Betts <olly@survex.com>

        * tests/harness/testsuite.cc: Harness now catches const char *
          exceptions explicitly so it can show their contents.

Tue Mar 02 03:59:27 GMT 2010  Olly Betts <olly@survex.com>

        * include/xapian/valueiterator.h: Comment tweak.

Tue Mar 02 03:57:55 GMT 2010  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: Add missing forward declaration of
          "class Database".

Tue Mar 02 01:51:33 GMT 2010  Olly Betts <olly@survex.com>

        * NEWS: Update partially from ChangeLog.

Mon Mar 01 05:38:41 GMT 2010  Olly Betts <olly@survex.com>

        * backends/brass/brass_database.cc,
          backends/brass/brass_positionlist.cc,
          backends/brass/brass_positionlist.h: When updating a document, rather
          than decoding the old positions, comparing with the new, and then
          encoding the new if different, we now just encode the new and then
          compare the encoded forms.  (ticket#428)  This change also avoids
          calling BrassPositionListTable::del() when we know the entry doesn't
          already exist.

Mon Mar 01 02:09:40 GMT 2010  Olly Betts <olly@survex.com>

        * net/serialise.cc: Don't call Document::values_count() twice when we
          can trivially avoid doing so.  Ditto for termlist_count() and
          positionlist_count().

Mon Mar 01 01:53:58 GMT 2010  Olly Betts <olly@survex.com>

        * bin/: Rename tot_off to last_docid when it is actually holding the
          last_docid value.

Sun Feb 28 23:47:49 GMT 2010  Olly Betts <olly@survex.com>

        * backends/flint/flint_table.cc: Whitespace tweak.

Sun Feb 28 23:44:58 GMT 2010  Olly Betts <olly@survex.com>

        * tests/dbcheck.cc: Tweak whitespace to match standard usage.  Catch
          exceptions by const reference.
        * HACKING: Discuss why exceptions should be caught by const reference.
          Tweak markup of blockquotes.

Sun Feb 28 22:50:50 GMT 2010  Olly Betts <olly@survex.com>

        * HACKING: Add note about "new SomePODType()" not being the same as
          "new SomePODType".

Sun Feb 28 22:29:31 GMT 2010  Olly Betts <olly@survex.com>

        * HACKING: Quote ``cat`` and ``more``.

Sun Feb 28 14:00:39 GMT 2010  Richard Boulton <richard@tartarus.org>

        * tests/api_compact.cc: Clarify comment about regression test for
          1.1.4, and remove a test line which is implicit in the following
          dbcheck() line anyway.

Sun Feb 28 11:07:33 GMT 2010  Olly Betts <olly@survex.com>

        * tests/harness/fdtracker.cc,tests/harness/fdtracker.h: Add GPL
          boilerplate and copyright notices which I failed to do before
          committing these new files.

Thu Feb 25 10:34:15 GMT 2010  Olly Betts <olly@survex.com>

        * backends/chert/chert_table.cc,backends/flint/flint_table.cc:
          Initialise z_stream members zalloc, zfree, and opaque with Z_NUL
          rather than 0 cast to the appropriate type, as that's what the zlib
          documentation says to do.  Add missing initialisation of opaque for
          the inflate z_stream which the docs say is needed, though reading
          the zlib code, isn't actually for current versions.

Wed Feb 24 14:24:05 GMT 2010  Olly Betts <olly@survex.com>

        * backends/remote/remote-database.cc: Fix indentation.

Wed Feb 24 14:18:25 GMT 2010  Olly Betts <olly@survex.com>

        * backends/remote/remote-database.cc,common/remote-database.h,
          common/remoteprotocol.h,common/remoteserver.h,
          docs/remote_protocol.html,net/remoteserver.cc,tests/api_spelling.cc:
          Add remote backend support for WritableDatabase::add_spelling() and
          WritableDatabase::remove_spelling().  This bumps the remote protocol
          to version 35.0 (so both client and servers will need updating).
          Suggesting spelling corrections isn't yet supported.  (ticket#178)

Wed Feb 24 09:09:27 GMT 2010  Olly Betts <olly@survex.com>

        * examples/delve.cc: "lastdocid" -> "highest document id ever used"
          in output so it's clearer what this number means.

Tue Feb 23 14:03:47 GMT 2010  Olly Betts <olly@survex.com>

        * api/postingsource.cc: Fix incorrect classname in error message.

Tue Feb 23 13:16:11 GMT 2010  Olly Betts <olly@survex.com>

        * configure.ac: For -fno-strict-aliasing for GCC 4.2 to avoid bad code
          being generated due to a bug in that compiler version.  Fixes
          ticket#449.

Tue Feb 23 03:08:02 GMT 2010  Olly Betts <olly@survex.com>

        * configure.ac,tests/harness/testsuite.cc: Use sigsetjmp() and
          siglongjmp() where available so that the set of blocked signals
          get restored and the test harness can catch a second incidence
          of a particular signal in a run.  Use sigaction() instead of
          signal() where available, which allows us to report the address
          associated with SIGSEGV, SIGFPE, SIGILL, and SIGBUS.

Mon Feb 22 14:29:50 GMT 2010  Olly Betts <olly@survex.com>

        * backends/brass/brass_databasereplicator.cc,
          backends/chert/chert_databasereplicator.cc,
          backends/flint/flint_databasereplicator.cc: Fix exception message
          if we get an unsupported changeset type.

Mon Feb 22 01:49:03 GMT 2010  Richard Boulton <richard@tartarus.org>

        * tests/dbcheck.cc: Check the wdf, doclen, and value bounds
          reported by the database against correct (tight) bounds
          calculated by iterating through the database contents.

Mon Feb 22 01:47:20 GMT 2010  Richard Boulton <richard@tartarus.org>

        * backends/brass/brass_database.cc,backends/chert/chert_database.cc:
          Ensure that wdfs are reported to the stats object correctly when
          replacing documents.  These checks were absent entirely in chert,
          and incorrectly skipped in some cases in brass.

Mon Feb 22 00:59:57 GMT 2010  Olly Betts <olly@survex.com>

        * tests/api_valuestream.cc: Reset tout before testing each interval.
          Prefer string() to "".

Mon Feb 22 00:57:59 GMT 2010  Olly Betts <olly@survex.com>

        * docs/deprecation.rst,examples/delve.cc: Remove delve's -k option,
          accepted as an undocumented alias for -V since 0.9.10 for
          compatibility with 0.9.9 and earlier.  Just use -V instead.

Mon Feb 22 00:45:37 GMT 2010  Olly Betts <olly@survex.com>

        * examples/delve.cc: If documents are specified, change "-V<valueno>"
          to only show calues for those documents.

Sun Feb 21 14:11:58 GMT 2010  Olly Betts <olly@survex.com>

        * common/stringutils.h: Factor out looking up a character in the table
          into a separate inlined function.  Add C_islcxdigit() to check for
          an lower case hex digit.

Sun Feb 21 11:10:10 GMT 2010  Olly Betts <olly@survex.com>

        * examples/Makefile.mk,examples/xapian-metadata.cc: Add new example
          "xapian-metadata" which allows you to get and set individual user
          metadata entries.

Sun Feb 21 10:31:56 GMT 2010  Olly Betts <olly@survex.com>

        * configure.ac: Belatedly update version number to 1.1.4.

Sat Feb 20 01:09:45 GMT 2010  Olly Betts <olly@survex.com>

        * tests/runtest.in: Now we have fd leak checking in the test harness,
          remove the ulimit as it doesn't add anything, and has caused problems
          on some Debian buildds.

Fri Feb 19 02:08:25 GMT 2010  Olly Betts <olly@survex.com>

        * tests/harness/backendmanager.h,tests/harness/testsuite.cc:
          Call backendmanager->clean_up() before checking for fd leaks
          to avoid finding the sockets/pipes as leaks.  This means that
          clean_up() needs to handle being called more than once for
          a test sometimes (which the current versions do) so document
          that.

Thu Feb 18 02:31:17 GMT 2010  Olly Betts <olly@survex.com>

        * examples/simpleindex.cc: Explicitly call commit() on the database,
          as that is good practice (since you see any exceptions).

Thu Feb 18 01:52:10 GMT 2010  Olly Betts <olly@survex.com>

        * tests/api_wrdb.cc: Clear tout on each pass of the loop to avoid a
          lot of irrelevant output under --verbose if the test fails.

Thu Feb 18 01:33:53 GMT 2010  Olly Betts <olly@survex.com>

        * tests/harness/testsuite.cc: Fix fd tracking change to work when
          HAVE_VALGRIND isn't defined.

Thu Feb 18 00:46:20 GMT 2010  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: Document the possible exception
          messages from QueryParser::parse_query().

Thu Feb 18 00:20:18 GMT 2010  Olly Betts <olly@survex.com>

        * tests/harness/backendmanager.cc: Also explicitly commit after
          indexing for flint and chert.

Wed Feb 17 15:58:04 GMT 2010  Olly Betts <olly@survex.com>

        * tests/harness/: Add machinery to check for leaked FDs.  Currently
          requires /proc/self/fd to work (so it works on at least Linux), but
          should do nothing on platforms without this directory.

Wed Feb 17 15:53:30 GMT 2010  Olly Betts <olly@survex.com>

        * tests/harness/backendmanager.cc: Explicitly commit after indexing
          for brass, so we see any exceptions from the commit (commit from
          the dtor swallows any exceptions).

Tue Feb 16 16:23:30 GMT 2010  Richard Boulton <richard@tartarus.org>

        * bin/xapian-compact.cc: Fix failure to set lastdocid to an
          appropriate value when using --no-renumber.
        * tests/api_compact.cc: Add regression test for this.

Tue Feb 16 16:10:49 GMT 2010  Richard Boulton <richard@tartarus.org>

        * examples/delve.cc: Display the lastdocid value when displaying
          general database statistics.

Tue Feb 16 15:39:50 GMT 2010  Richard Boulton <richard@tartarus.org>

        * bin/xapian-check-brass.cc,bin/xapian-check-chert.cc: Correct typo
          in error message.

Mon Feb 15 13:59:45 GMT 2010  Olly Betts <olly@survex.com>

        * configure.ac: Update for 1.1.4.

Mon Feb 15 13:58:44 GMT 2010  Olly Betts <olly@survex.com>

        * PLATFORMS: We don't support GCC < 3.1, so remove discussion of
          issues with GCC 2.95.

Mon Feb 15 13:55:10 GMT 2010  Olly Betts <olly@survex.com>

        * PLATFORMS: Update from 1.0.18.

Mon Feb 15 11:51:15 GMT 2010  Olly Betts <olly@survex.com>

        * NEWS: Update from ChangeLog.  Update from 1.0.18.

Sun Feb 14 05:47:30 GMT 2010  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Fix QueryParser to handle an explicit
          AND before a hated term (foo AND -bar).  (ticket#447)
        * tests/queryparsertest.cc: Add regression test cases.

Fri Feb 12 01:27:32 GMT 2010  Olly Betts <olly@survex.com>

        * queryparser/termgenerator_internal.cc: Only include trailing '+' or
          '#' on a term if it isn't followed by a word character (makes more
          sense and matches QueryParser's behaviour).  (ticket#446)
        * tests/termgentest.cc: Add regression test.

Thu Feb 11 04:30:56 GMT 2010  Olly Betts <olly@survex.com>

        * bin/xapian-inspect.cc: Add new "open" command to allow easy switching
          between tables.

Wed Feb 10 02:40:36 GMT 2010  Olly Betts <olly@survex.com>

        * include/xapian/document.h: Rewrite the note about Document being a
          lazy handle to fix a few details and avoid nailing down the
          exact implementation.

Wed Feb 10 00:37:54 GMT 2010  Olly Betts <olly@survex.com>

        * docs/admin_notes.rst: Update for chert and other recent changes.

Wed Feb 10 00:37:04 GMT 2010  Olly Betts <olly@survex.com>

        * docs/replication_protocol.rst: Update.

Mon Feb 08 12:05:05 GMT 2010  Olly Betts <olly@survex.com>

        * backends/brass/brass_version.cc: Fix comments about BRASS_VERSION
          which were previously just cut-and-pasted from those about
          CHERT_VERSION.

Mon Feb 08 11:54:04 GMT 2010  Olly Betts <olly@survex.com>

        * backends/brass/brass_metadata.cc: Include missing headers.

Mon Feb 08 09:23:00 GMT 2010  Olly Betts <olly@survex.com>

        * backends/brass/brass_document.h,backends/chert/chert_document.h:
          Fix typos in documentation comments.

Mon Feb 08 08:27:09 GMT 2010  Olly Betts <olly@survex.com>

        * tests/harness/testsuite.cc: Remove unused headers <streambuf> and
          "omdebug.h".

Mon Feb 08 01:28:48 GMT 2010  Olly Betts <olly@survex.com>

        * common/debuglog.h: Use std::boolalpha so bool is logged as "true"
          or "false" (instead of "1" or "0").

Sat Feb 06 10:04:42 GMT 2010  Olly Betts <olly@survex.com>

        * AUTHORS: Sync with 1.0 branch.

Sat Feb 06 08:20:31 GMT 2010  Olly Betts <olly@survex.com>

        * tests/api_closedb.cc: Avoid trying to create a database where
          an already open one exists (which fails on Microsoft Windows).
          (ticket#443).

Fri Feb 05 13:28:08 GMT 2010  Olly Betts <olly@survex.com>

        * examples/simpleexpand.cc,examples/simpleindex.cc,
          examples/simplesearch.cc: Handle --help and --version.

Fri Feb 05 13:25:37 GMT 2010  Olly Betts <olly@survex.com>

        * bin/xapian-compact.cc: Fix not to assign elements off the end of a
          vector (ticket#440).

Fri Feb 05 11:41:05 GMT 2010  Richard Boulton <richard@tartarus.org>

        * api/matchspy.cc,include/xapian/matchspy.h,tests/api_matchspy.cc:
          Remove ValueCountMatchSpy::get_values().  values_begin() should
          be used instead to iterate over the values.

Fri Feb 05 07:39:46 GMT 2010  Olly Betts <olly@survex.com>

        * configure.ac: Enable automake's std-options feature to check all
          installed programs support --help and --version.

Fri Feb 05 01:45:49 GMT 2010  Olly Betts <olly@survex.com>

        * include/xapian/document.h: Add Document::add_boolean_term().
        * tests/api_none.cc: Add testcase document1 as a feature test.

Fri Feb 05 00:27:52 GMT 2010  Olly Betts <olly@survex.com>

        * backends/chert/chert_btreebase.cc,backends/flint/flint_btreebase.cc:
          Add missing SEQUENTIAL entry to documentation of base file format.

Thu Feb 04 03:06:26 GMT 2010  Olly Betts <olly@survex.com>

        * tests/api_compact.cc: Fix to work with MSVC makefiles (ticket#440).

Thu Feb 04 03:04:43 GMT 2010  Olly Betts <olly@survex.com>

        * HACKING,common/Makefile.mk,common/safesyswait.h: Add wrapper
          for <sys/wait.h> which defines macros for WEXITSTATUS and
          WIFEXITED when required.

Wed Feb 03 15:01:36 GMT 2010  Richard Boulton <richard@tartarus.org>

        * api/matchspy.cc,include/xapian/matchspy.h,tests/api_matchspy.cc:
          Add ValueCountMatchSpy::values_begin() and values_end() to allow
          iteration over all the values in a ValueCountMatchSpy without
          needing to handle the dict.  Move the contents of
          ValueCountMatchSpy into a reference counted internal object, so
          that the iterator can ensure that the contents aren't deleted
          before it finishes.

Wed Feb 03 15:01:02 GMT 2010  Richard Boulton <richard@tartarus.org>

        * tests/generate-api_generated: Add ValueCountMatchSpy to the list
          of non-copyable API classes.

Wed Feb 03 13:18:03 GMT 2010  Richard Boulton <richard@tartarus.org>

        * include/xapian/matchspy.h,tests/api_matchspy.cc: Provide an
          iterator for accessing the top values found by a matchspy, rather
          than using a method which takes a vector reference as a
          parameter.  Should be wrappable much more nicely (and get wrapped
          automatically), and be easier to use: the testcase for this is
          significantly shorter than for the old API.  Remove
          StringAndFrequency from API - it's now just an internal class.
        * api/matchspy.cc: Test new access method for top_values.

Wed Feb 03 06:46:37 GMT 2010  Olly Betts <olly@survex.com>

        * AUTHORS: Add Emmanuel Engelhart for reporting problems indexing
          Burmese text.

Wed Feb 03 06:32:03 GMT 2010  Olly Betts <olly@survex.com>

        * include/xapian/unicode.h,queryparser/queryparser.lemony,
          queryparser/termgenerator_internal.cc: Add ENCLOSING_MARK and
          COMBINING_SPACING_MARK categories to is_wordchar().  Make
          TermGenerator and QueryParser ignore several zero-width space
          characters.
        * tests/queryparsertest.cc,tests/termgentest.cc: Add test coverage for
          the changes.

Wed Feb 03 03:14:30 GMT 2010  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Fix apostrophe abuse in comment.

Wed Feb 03 01:23:04 GMT 2010  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Make TermList::as_opwindow_query()
          private.

Wed Feb 03 01:19:19 GMT 2010  Olly Betts <olly@survex.com>

        * common/replication.h: Use "" not <> for including API headers.

Wed Feb 03 01:08:58 GMT 2010  Olly Betts <olly@survex.com>

        * common/replication.h: Remove warnings about this being an
          experimental API, which no longer make sense now it is internal.

Tue Feb 02 21:59:59 GMT 2010  Olly Betts <olly@survex.com>

        * tests/generate-api_generated: Remove DatabaseReplica.

Tue Feb 02 17:01:23 GMT 2010  Richard Boulton <richard@tartarus.org>

        * include/xapian/document.h: Add a note to the API documentation
          for the Document class about the potential issues involved in
          lazy loading.  Fixes ticket #421.

Tue Feb 02 16:21:39 GMT 2010  Richard Boulton <richard@tartarus.org>

        * docs/categorisation.rst: Remove documentation of NumericRanges
          stuff for now, since the NumericRanges is no longer on trunk.

Tue Feb 02 15:59:14 GMT 2010  Richard Boulton <richard@tartarus.org>

        * common/replication.h: Put the ReplicationInfo, DatabaseMaster and
          DatabaseReplica symbols back into public visibility - they're
          needed for the tests, and for the command line scripts.

Tue Feb 02 15:06:44 GMT 2010  Richard Boulton <richard@tartarus.org>

        * api/matchspy.cc,include/xapian/matchspy.h,tests/api_matchspy.cc:
          Remove NumericRanges from trunk - their API is still uncertain,
          so I want to do a bit more development work on them on the
          matchspy branch before committing to support them for several
          years.

Tue Feb 02 13:45:24 GMT 2010  Richard Boulton <richard@tartarus.org>

        * api/replication.cc,backends/brass/brass_database.cc,
          backends/chert/chert_database.cc,backends/flint/flint_database.cc,
          common/,include/Makefile.mk,include/xapian/replication.h,
          net/replicatetcpclient.cc,net/replicatetcpserver.cc,
          tests/generate-api_generated: Move replication support out of the
          public API headers and public symbol visibility.  Access to
          replication, for now, is via the command-line scripts: this is
          similar to the access to running a remote database server, and
          the access to database compaction and checking.  See ticket #347
          for some commentary.

Tue Feb 02 07:22:28 GMT 2010  Olly Betts <olly@survex.com>

        * Backport change from chert:
        * backends/flint/flint_alltermslist.h,backends/flint/flint_spelling.h,
          backends/flint/flint_spellingwordslist.h: Add missing std::
          qualifiers.

Tue Feb 02 07:12:51 GMT 2010  Olly Betts <olly@survex.com>

        * docs/doxygen_api.conf.in: Add generated include/xapian/error.h so
          that Xapian::Error and subclass API docs are collated for a VPATH
          build.
        * docs/Makefile.am: Add regression test to make sure doxygen collated
          API docs for Xapian::RuntimeError.

Tue Feb 02 06:52:55 GMT 2010  Olly Betts <olly@survex.com>

        * Backport change from brass:
        * backends/chert/chert_alltermslist.h,backends/chert/chert_spelling.h,
          backends/chert/chert_spellingwordslist.h: Add missing std::
          qualifiers.

Tue Feb 02 01:34:52 GMT 2010  Richard Boulton <richard@tartarus.org>

        * docs/replication.rst: Add note about not using reopen() with
          databases being updated by the replication client.

Tue Feb 02 01:17:34 GMT 2010  Richard Boulton <richard@tartarus.org>

        * api/matchspy.cc,docs/categorisation.rst,include/xapian/matchspy.h,
          tests/api_matchspy.cc: Remove score_evenness(), since it turned
          out to be of little or no use in practical situations.  See
          ticket #435 for more details.

Mon Feb 01 21:53:41 GMT 2010  Olly Betts <olly@survex.com>

        * backends/brass/brass_table.cc,backends/chert/chert_table.cc: Use
          LOGCALL_VOID for add() methods which now return void.

Mon Feb 01 21:50:05 GMT 2010  Olly Betts <olly@survex.com>

        * Backport change from brass:
        * backends/flint/flint_table.cc,backends/flint/flint_table.h:
          Fix documentation comments for FlintTable::add() and
          FlintTable::del() - errors actually cause exceptions, not a false
          return value, and del() returns true if it actually removed an entry.
          Fix FlintTable::add() to throw an exception for the (hopefully never
          hit) case when the tag value is too insanely large to handle.  With
          that FlintTable::add() always returns true, and we never check the
          return value anyway, so just make it return void.

Mon Feb 01 21:37:33 GMT 2010  Olly Betts <olly@survex.com>

        * Backport change from brass:
        * backends/chert/chert_table.cc,backends/chert/chert_table.h:
          Fix documentation comments for ChertTable::add() and
          ChertTable::del() - errors actually cause exceptions, not a false
          return value, and del() returns true if it actually removed an entry.
          Fix ChertTable::add() to throw an exception for the (hopefully never
          hit) case when the tag value is too insanely large to handle.  With
          that ChertTable::add() always returns true, and we never check the
          return value anyway, so just make it return void.

Mon Feb 01 16:02:27 GMT 2010  Richard Boulton <richard@tartarus.org>

        * bin/xapian-check-brass.cc,bin/xapian-check-chert.cc: Fix checking
          of the METAINFO key in chert and brass.  For small databases, the
          statistics fit in few enough bytes that the trailing
          unpack_uint_last() moved to end, so errors weren't being
          reported, but for large databases the check was incorrectly
          reporting an error.

Mon Feb 01 09:24:14 GMT 2010  Olly Betts <olly@survex.com>

        * backends/brass/brass_table.cc,backends/brass/brass_table.h:
          Fix documentation comments for BrassTable::add() and
          BrassTable::del() - errors actually cause exceptions, not a false
          return value, and del() returns true if it actually removed an entry.
          Fix BrassTable::add() to throw an exception for the (hopefully never
          hit) case when the tag value is too insanely large to handle.  With
          that BrassTable::add() always returns true, and we never check the
          return value anyway, so just make it return void.

Mon Feb 01 01:45:09 GMT 2010  Olly Betts <olly@survex.com>

        * backends/brass/brass_alltermslist.h,backends/brass/brass_spelling.h,
          backends/brass/brass_spellingwordslist.h: Add missing std::
          qualifiers.

Mon Feb 01 00:57:21 GMT 2010  Olly Betts <olly@survex.com>

        * backends/flint/flint_spelling.h: Add missing std:: qualifier.

Mon Feb 01 00:52:27 GMT 2010  Olly Betts <olly@survex.com>

        * backends/brass/brass_spelling.h,backends/chert/chert_spelling.h:
          Add missing std:: qualifier.

Sun Jan 31 23:35:52 GMT 2010  Olly Betts <olly@survex.com>

        * backends/chert/chert_termlisttable.cc,
          backends/chert/chert_termlisttable.h: Remove
          ChertTermListTable::get_doclength() as it is no longer used.

Sun Jan 31 23:19:50 GMT 2010  Olly Betts <olly@survex.com>

        * backends/brass/brass_termlisttable.cc,
          backends/brass/brass_termlisttable.h: Remove
          BrassTermListTable::get_doclength() as it is no longer used.

Sun Jan 31 09:19:39 GMT 2010  Olly Betts <olly@survex.com>

        * bin/xapian-inspect.cc: "until" improvements:
          + No longer reports the current key and tag.
          + If passed a key before the current one, no longer silently advances
            to the next key.
          + Explicitly says if the specified key doesn't exist, including where
            we ended up.

Sun Jan 31 00:19:41 GMT 2010  Olly Betts <olly@survex.com>

        * tests/api_compact.cc: Use a single Document object rather than
          creating the same one 10000 times.

Sun Jan 31 00:08:38 GMT 2010  Olly Betts <olly@survex.com>

        * tests/api_compact.cc: Move make_multichunk_db() before the testcase
          which uses it, rather than between two helper functions for another
          testcase.

Sun Jan 31 00:07:03 GMT 2010  Olly Betts <olly@survex.com>

        * tests/api_compact.cc: Remove confusing comment, cut-and-pasted from
          elsewhere and not relevant here.

Fri Jan 29 06:13:18 GMT 2010  Olly Betts <olly@survex.com>

        * backends/brass/brass_metadata.cc,backends/chert/chert_metadata.cc,
          backends/flint/flint_metadata.cc: Correct filenames in @file.

Thu Jan 28 22:34:03 GMT 2010  Richard Boulton <richard@tartarus.org>

        * tests/api_compact.cc: Add check that xapian-compact works
          correctly on a database with multiple chunks for a single term;
          this is a regression test for ticket #427

Thu Jan 28 22:33:16 GMT 2010  Richard Boulton <richard@tartarus.org>

        * bin/xapian-compact-brass.cc,bin/xapian-compact-chert.cc: Don't
          cut the extra byte of doclen chunk keys.

Thu Jan 28 21:23:48 GMT 2010  Richard Boulton <richard@tartarus.org>

        * bin/xapian-compact-flint.cc: Revert previous patch for flint - it
          only applies to new key format used by chert and brass.

Thu Jan 28 21:13:38 GMT 2010  Richard Boulton <richard@tartarus.org>

        * bin/xapian-compact-brass.cc,bin/xapian-compact-chert.cc,
          bin/xapian-compact-flint.cc: Partial fix for #427: truncate
          follow-on keys for postlist chunks fully (was leaving the
          trailing 0-byte, causing the code for chert and brass to
          incorrectly think a new chunk had started, resulting in a
          truncated posting list.

Thu Jan 28 20:42:47 GMT 2010  Richard Boulton <richard@tartarus.org>

        * bin/xapian-inspect.cc: Add "until" command to display keys until
          a specified one.  Useful for seeing all keys for a particular
          posting list, etc.

Thu Jan 28 01:31:54 GMT 2010  Olly Betts <olly@survex.com>

        * tests/dbcheck.cc: Whitespace tweak.

Wed Jan 27 06:29:21 GMT 2010  Olly Betts <olly@survex.com>

        * tests/dbcheck.cc: <config.h> not "config.h".

Wed Jan 27 04:20:42 GMT 2010  Olly Betts <olly@survex.com>

        * backends/brass/brass_inverter.h: Make two getters const.

Wed Jan 27 04:01:17 GMT 2010  Olly Betts <olly@survex.com>

        * backends/chert/chert_database.cc,backends/chert/chert_database.h,
          backends/flint/flint_database.cc,backends/flint/flint_database.h:
          Add ChertWritableDatabase::insert_mod_plist() to handle the simpler
          case where we know the document doesn't already exist, to avoid
          adding extra code to that common path over the code we had before
          the #250-related changes.

Tue Jan 26 03:25:59 GMT 2010  Olly Betts <olly@survex.com>

        * tests/internaltest.cc: In testcase pack_uint_preserving_sort1, use
          data() not c_str(), calculate the end position just once, and use
          swap to copy the current packed to prev_packed.

Fri Jan 15 12:51:38 GMT 2010  Olly Betts <olly@survex.com>

        * backends/chert/chert_database.cc,backends/flint/flint_database.cc:
          Fix to use 'M' as the flag character for modified entries in
          modplists (not 'U').  We never explicitly check for 'M' (we check for
          'A' vs 'D' vs something else), so this isn't a functional change,
          but rather making the values consistent (as they were before the
          fix for #250).

Fri Jan 15 08:25:14 GMT 2010  Olly Betts <olly@survex.com>

        * backends/chert/chert_database.cc,backends/chert/chert_database.h,
          backends/flint/flint_database.cc,backends/flint/flint_database.h:
          Use Xapian::termcount_diff instead of Xapian::termcount for
          parameters of add_freq_delta() which can be signed.  Fix parameter
          docs to say "change" instead of "increase".

Fri Jan 15 06:05:28 GMT 2010  Olly Betts <olly@survex.com>

        * tests/api_replacedoc.cc: Just test that begin == end when we expect
          no positions rather than generating a string representation and
          then testing if it is empty.

Thu Jan 14 11:17:36 GMT 2010  Olly Betts <olly@survex.com>

        * HACKING: Auto-enabling of -Werror is now done for GCC 4.1 or newer.

Thu Jan 14 05:06:42 GMT 2010  Olly Betts <olly@survex.com>

        * HACKING: Include the MIT licence text in HACKING itself.
        * COPYING_MIT: Remove external copy of text - it could mislead users
          into thinking that this is the current licence of Xapian.

Sun Jan 10 07:36:16 GMT 2010  Olly Betts <olly@survex.com>

        * configure.ac:With --enable-maintainer-mode, enable -Werror for GCC
          >= 4.1 rather than >= 4.0 as Apple's GCC 4.0 gives bogus
          uninitialised variable warnings for pack.h.

Sat Jan 09 00:56:06 GMT 2010  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Add support for quoting boolean terms
          so they can contain arbitrary characters (partly addresses
          ticket#128).
        * tests/queryparsertest.cc: Add test coverage.

Fri Jan 08 13:25:25 GMT 2010  Richard Boulton <richard@tartarus.org>

        * tests/api_compact.cc: Add copyright note for my changes committed
          earlier today.

Fri Jan 08 12:19:07 GMT 2010  Olly Betts <olly@survex.com>

        * bin/xapian-compact-brass.cc,bin/xapian-compact-chert.cc: Fix merging
          of databases by xapian-compact for brass and chert.
        * tests/api_compact.cc: Enable test compactmerge1 for brass and chert
          as a regression test.

Fri Jan 08 11:26:41 GMT 2010  Olly Betts <olly@survex.com>

        * backends/brass/brass_database.cc,backends/chert/chert_database.cc,
          backends/flint/flint_database.cc: Rearrange comparison between old
          and new termlists to avoid double check of termlist.at_end().

Fri Jan 08 11:22:30 GMT 2010  Richard Boulton <richard@tartarus.org>

        * tests/api_compact.cc: Add test of xapian-compact when merging
          databases.  Currently, the generated databases are broken for
          chert and brass, so skipping the test for those to avoid breaking
          the snapshotter.

Fri Jan 08 11:13:13 GMT 2010  Richard Boulton <richard@tartarus.org>

        * tests/: Move routines for helping to check database contents and
          consistency into dbcheck.cc, with headers in dbcheck.h.

Fri Jan 08 10:07:09 GMT 2010  Richard Boulton <richard@tartarus.org>

        * tests/internaltest.cc: Add test_pack_uint_preserving_sort1()
          which I wrote when suspicious of that function - passes fine, but
          probably worth keeping the test coverage.

Fri Jan 08 00:23:06 GMT 2010  Olly Betts <olly@survex.com>

        * AUTHORS: Add Henry Combrinck for Search::Xapian patches.

Thu Jan 07 15:51:57 GMT 2010  Richard Boulton <richard@tartarus.org>

        * api/postingsource.cc: For ValueWeightPostingSources for which
          there are no entries, the upper bound returned will be an empty
          string, which translated to -inf when passed to
          sortable_unserialise().  This was causing the matcher to get
          confused and return no results in some queries involving such a
          posting source.  This commit fixes this.
        * tests/api_postingsource.cc: Add emptyvalwtsource1 as a regression
          test for this, and a general test of this area of code.

Thu Jan 07 09:17:58 GMT 2010  Olly Betts <olly@survex.com>

        * backends/brass/brass_inverter.h: Fix comment typo.

Wed Dec 30 11:46:45 GMT 2009  Richard Boulton <richard@tartarus.org>

        * backends/brass/brass_database.cc,backends/chert/chert_database.cc,
          backends/flint/flint_database.cc: When updating documents, don't
          update posting entries which havn't changed.  Largely fixes
          ticket #250.
        * AUTHORS: Add Kan-Ru Chen, since his patch attached to ticket #250
          was the basis of this fix.

Wed Dec 30 11:44:18 GMT 2009  Richard Boulton <richard@tartarus.org>

        * backends/brass/brass_inverter.h: Add methods for updating an
          existing posting, so we don't have to remove then re-add it.

Wed Dec 30 11:41:57 GMT 2009  Richard Boulton <richard@tartarus.org>

        * backends/brass/brass_database.h: Remove old unused members:
          total_length and lastdocid.

Wed Dec 30 01:07:04 GMT 2009  Richard Boulton <richard@tartarus.org>

        * backends/chert/chert_database.h: Remove old unused members:
          total_length and lastdocid.

Wed Dec 30 00:21:03 GMT 2009  Richard Boulton <richard@tartarus.org>

        * backends/chert/chert_database.cc,backends/chert/chert_database.h,
          backends/flint/flint_database.cc,backends/flint/flint_database.h:
          Move frequently repeated code for updating the freq_deltas and
          mod_plists items into separate functions.  Makes the code
          considerably clearer, and prepares the way for applying the patch
          to fix ticket #250.

Wed Dec 30 00:07:33 GMT 2009  Richard Boulton <richard@tartarus.org>

        * tests/api_replacedoc.cc: Add a few more sequences of operations
          which look worth testing, after looking at the code implementing
          replace_document().

Tue Dec 29 22:29:08 GMT 2009  Richard Boulton <richard@tartarus.org>

        * tests/api_replacedoc.cc: Check consistency of the posting lists
          with the termlists, and consistency of the statistics, at each
          step of modtermwdf1.  Also, add some other terms to the document,
          so we can check the stored doclength for terms which haven't been
          modified.

Sun Dec 27 14:56:16 GMT 2009  Richard Boulton <richard@tartarus.org>

        * backends/chert/chert_modifiedpostlist.cc,
          backends/flint/flint_modifiedpostlist.cc: Report the wdf from the
          modifications, rather the sum of the wdf from the modifications
          and the old wdf.  The old behaviour was just wrong, but we had no
          test coverage for this until the last commit.

Sun Dec 27 13:34:06 GMT 2009  Richard Boulton <richard@tartarus.org>

        * tests/api_replacedoc.cc: Add test of the contents of the
          postlist of a term which is being modified.  Also, tidy up the
          output of docterms_to_string() to skip any empty position lists.

Sat Dec 26 19:21:19 GMT 2009  Richard Boulton <richard@tartarus.org>

        * tests/api_replacedoc.cc: Extend test to cover removing a term but
          not deleting it, and finally deleting the document.

Thu Dec 24 19:18:41 GMT 2009  Richard Boulton <richard@tartarus.org>

        * tests/api_replacedoc.cc: Expand test to cover some modification
          to the positional information.

Thu Dec 24 19:06:32 GMT 2009  Richard Boulton <richard@tartarus.org>

        * tests/api_replacedoc.cc: Add some more sets of modification
          operations to the tests.

Thu Dec 24 18:55:37 GMT 2009  Richard Boulton <richard@tartarus.org>

        * tests/api_replacedoc.cc: Add test modtermwdf1, which tests a lot
          more cases where documents are modified.

Thu Dec 24 14:36:38 GMT 2009  Olly Betts <olly@survex.com>

        * tests/: Canonicalise the conditions on testcases.

Thu Dec 24 14:08:59 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_closedb.cc: Fix typo in last commit.

Thu Dec 24 13:39:28 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_closedb.cc: Check WritableDatabase::close() during a
          transaction does *NOT* implicitly call commit().

Thu Dec 24 13:07:09 GMT 2009  Olly Betts <olly@survex.com>

        * backends/brass/brass_database.cc,backends/brass/brass_database.h,
          backends/chert/chert_database.cc,backends/chert/chert_database.h,
          backends/flint/flint_database.cc,backends/flint/flint_database.h:
          Fix WritableDatabase::close() to commit() changes (unless a
          transaction is in progress).
        * tests/api_closedb.cc: Add regression test closedb4.

Wed Dec 23 00:26:34 GMT 2009  Olly Betts <olly@survex.com>

        * backends/brass/brass_database.cc,backends/brass/brass_inverter.cc,
          backends/brass/brass_inverter.h: For allterms iteration of a
          WritableDatabase, if a prefix is specified only flush changes for
          terms with that prefix.  Also, don't flush document lengths for
          allterms iteration.

Tue Dec 22 22:48:55 GMT 2009  Olly Betts <olly@survex.com>

        * bin/xapian-check.cc: Fixed reversed checks for chert and flint being
          enabled in r13781.

Tue Dec 22 14:20:24 GMT 2009  Olly Betts <olly@survex.com>

        * tests/harness/testrunner.cc: Add brass variants of multi and remote
          backends.

Tue Dec 22 14:15:43 GMT 2009  Olly Betts <olly@survex.com>

        * bin/: Implement xapian-check and xapian-compact support for brass.

Tue Dec 22 13:41:08 GMT 2009  Olly Betts <olly@survex.com>

        * bin/: Split the chert-specific checking code into a separate file
          so xapian-check.cc is just the driver code.

Tue Dec 22 12:47:59 GMT 2009  Olly Betts <olly@survex.com>

        * backends/brass/: Add new Inverter class to encapsulate the inversion
          data structures and associated code.  Instead of carefully iterating
          modified posting lists and document length lists, just flush the
          particular list needed to disk and iterate that.  This is much
          simpler and more obviously free of subtle bugs, and means we don't
          need to use data structures which allow such iteration.

Tue Dec 22 12:25:04 GMT 2009  Olly Betts <olly@survex.com>

        * backends/brass/,backends/dbfactory.cc,include/xapian/dbfactory.h,
          include/xapian/valueiterator.h,include/xapian/version_h.cc,
          tests/harness/Makefile.mk: Fix to actually build brass.  Testsuite
          doesn't currently all pass.

Tue Dec 22 04:26:17 GMT 2009  Olly Betts <olly@survex.com>

        * HACKING,INSTALL,backends/Makefile.mk,backends/brass/,
          backends/chert/dir_contents,backends/databasereplicator.cc,
          backends/dbfactory.cc,common/pack.h,configure.ac,docs/,tests/,
          tests/harness/: Add new development backend called "brass" and
          promote "chert" to being the stable backend.

Mon Dec 21 09:41:57 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_database.cc: Update comment about
          MAX_SAFE_TERM_LENGTH to reflect the key format changes.

Mon Dec 21 08:12:55 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_alldocsmodifiedpostlist.cc,
          backends/chert/chert_alldocsmodifiedpostlist.h: Change reference
          parameter to const reference.

Mon Dec 21 03:19:09 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_database.cc,backends/flint/flint_database.cc:
          Replacing a document deleted since the last flush failed to update
          the collection frequency and wdf, and caused an assertion failure
          when assertions were enabled.
        * tests/api_backend.cc: Add regression test replacedoc8.

Sun Dec 20 07:26:30 GMT 2009  Olly Betts <olly@survex.com>

        * configure.ac: Divert to AS_MESSAGE_LOG_FD rather than literal fd 5.
          Divert more output to AS_MESSAGE_LOG_FD rather than /dev/null.

Thu Dec 17 13:53:31 GMT 2009  Olly Betts <olly@survex.com>

        * NEWS: Update from ChangeLog.

Thu Dec 17 13:36:54 GMT 2009  Olly Betts <olly@survex.com>

        * Backport change from chert:
        * backends/flint/flint_alltermslist.cc: Tweak to not apply the
          prefix test in the "at end" case.
        * backends/flint/flint_alltermslist.cc: There's no point checking
          follow-on chunks match the prefix - the first chunk we'll hit
          which doesn't match has to be an initial chunk for a term.

Thu Dec 17 11:57:31 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_replacedoc.cc: Fix to test the right variable.

Thu Dec 17 11:16:51 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_wrdb.cc: The regression test replacedoc5 no longer actually
          checks for the situation it was written for, due to the shortcutting
          we now do in flint and chert when replacing a document with itself,
          so extend it with a check with that behaviour suppressed (fortunately
          it still passes).

Wed Dec 16 12:03:13 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/,bin/Makefile.mk,common/pack.h: Change the packing
          of uints and strings into sortable keys in chert databases, which
          reduces database size by 2.5% in tests.  This means an incompatible
          change in the chert format.
        * bin/xapian-chert-update.cc: Utility to update a chert database from
          the old format to the new format.  It works much like xapian-compact
          so should take a similar amount of time (and results in a compact
          database).
        * tests/api_wrdb.cc: Adjust the test which checks a string of zero
          bytes fails in the correct way - 126 zero bytes is now handled, so
          we need 127 to check the failure mode.

Wed Dec 16 11:52:27 GMT 2009  Olly Betts <olly@survex.com>

        * bin/xapian-compact.cc: Ensure that the resultant database has a
          fresh UUID (previously chert copied the UUID from the first input,
          while flint didn't set a UUID so one was generated on demand when
          next requested, if the database is writable.
        * tests/api_compact.cc: Add tests that a UUID is set and that it is
          different from that of the input.

Wed Dec 16 09:57:27 GMT 2009  Olly Betts <olly@survex.com>

        * examples/quest.cc: If no database is specified, still parse the query
          and report get_description() on it as this provides a useful way to
          see how a query parses.

Wed Dec 16 00:40:51 GMT 2009  Olly Betts <olly@survex.com>

        * languages/german.sbl,languages/german2.sbl: Update the german and
          german2 stemming algorithms to the latest versions from Snowball.
          These add an extra rule for the "-nisse" ending.

Tue Dec 15 13:08:33 GMT 2009  Olly Betts <olly@survex.com>

        * bin/: Split apart the flint and chert compaction code.  Should be
          no change in functionality.

Tue Dec 15 10:11:10 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_alltermslist.cc: Tweak to not apply the
          prefix test in the "at end" case.

Tue Dec 15 09:40:19 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_alltermslist.cc: There's no point checking
          follow-on chunks match the prefix - the first chunk we'll hit
          which doesn't match has to be an initial chunk for a term.

Tue Dec 15 08:24:04 GMT 2009  Olly Betts <olly@survex.com>

        * include/xapian/: Convert DerefStringWrapper_ to a templated
          DerefWrapper_ and use it instead of DocIDWrapper and TermPosWrapper.

Tue Dec 15 08:23:08 GMT 2009  Olly Betts <olly@survex.com>

        * include/xapian/query.h: Mark Query::Internal as @private for doxygen.

Tue Dec 15 03:59:44 GMT 2009  Olly Betts <olly@survex.com>

        * common/pack.h: Return false not true if
          unpack_string_preserving_sort() fails.  Add assertions that the
          source pointer isn't NULL to all the functions.

Tue Dec 15 02:30:24 GMT 2009  Olly Betts <olly@survex.com>

        * examples/delve.cc: Improve phrasing ("unique terms" -> "distinct
          terms").

Sat Dec 12 13:07:51 GMT 2009  Richard Boulton <richard@tartarus.org>

        * tests/Makefile.am,tests/api_posdb.cc,tests/api_replacedoc.cc:
          Split my recently added replacedoc test out into a new file.

Sat Dec 12 12:58:22 GMT 2009  Richard Boulton <richard@tartarus.org>

        * tests/api_posdb.cc: Extend test of document modification to cover
          removing the last term in the document, too.

Sat Dec 12 12:57:43 GMT 2009  Richard Boulton <richard@tartarus.org>

        * backends/chert/chert_database.cc,backends/flint/flint_database.cc:
          Fix comparison of old term with new.

Sat Dec 12 11:30:23 GMT 2009  Richard Boulton <richard@tartarus.org>

        * backends/chert/chert_database.cc,backends/flint/flint_database.cc,
          tests/api_posdb.cc: Delete old positionlist chunks in
          replace_document().  Uncomment part of test which tested this.

Sat Dec 12 04:24:42 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_database.cc,backends/flint/flint_database.cc,
          common/document.h: If a document is replaced with itself unmodified,
          we no longer increase the automatic flush counter.
        * tests/api_backend.cc: Add regression test replacedoc7.

Fri Dec 11 19:39:34 GMT 2009  Richard Boulton <richard@tartarus.org>

        * tests/api_posdb.cc: Add a basic test of adding a document, and
          modifying its positions.  Found one bug already, but the line
          which triggers this is commented out for now so that we don't
          break the snapshotters until it's fixed.

Fri Dec 11 16:51:22 GMT 2009  Richard Boulton <richard@tartarus.org>

        * common/documentterm.h: Fix some documentation comments which were
          trivially incorrect or incomplete.

Fri Dec 11 11:05:19 GMT 2009  Richard Boulton <richard@tartarus.org>

        * COPYING_MIT,HACKING: Add details of our policy for accepting
          patches.  This has informally been true for a while, but it
          probably helps to tell people about it!

Tue Dec 08 13:15:28 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_cursor.h: Fix to build with --enable-assertions.

Tue Dec 08 13:05:36 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_cursor.cc,backends/chert/chert_cursor.h,
          backends/chert/chert_postlist.cc: Add MutableChertCursor subclass of
          ChertCursor and implement del() there rather than in ChertCursor.
          This means we can use the C++ type system to track whether we got
          a const or non-const ChertTable * and so whether it is safe to
          cast away that const and delete the entry the cursor points to.

Tue Dec 08 12:03:08 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_database.cc,backends/chert/chert_table.cc,
          backends/chert/chert_table.h,backends/flint/flint_database.cc,
          backends/flint/flint_table.cc,backends/flint/flint_table.h,
          bin/xapian-compact.cc,bin/xapian-inspect.cc: Add empty() method to
          FlintTable and ChertTable which works completely reliably even if
          the item count has wrapped.
        * tests/api_closedb.cc: Add closedb3 for coverage of get_doccount() and
          has_positions().

Tue Dec 08 08:23:12 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_cursor.h: Tweak whitespace in comment.

Mon Dec 07 04:56:42 GMT 2009  Olly Betts <olly@survex.com>

        * backends/flint/flint_database.cc,backends/flint/flint_synonym.h:
          Eliminate "size" private member of FlintSynonymTermList which is set
          but never used.

Mon Dec 07 04:49:54 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_database.cc,backends/chert/chert_synonym.h:
          Eliminate "size" private member of ChertSynonymTermList which is set
          but never used.

Mon Dec 07 04:32:46 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/: Use > 32 bit type to keep count of items in a
          table.  This fixes misreporting by xapian-check, and in the very
          unlikely case where the counter has just wrapped to 0, makes
          xapian-compact not mistakenly think tables are empty and the
          matcher ignore positional information.

Thu Dec 03 10:08:28 GMT 2009  Richard Boulton <richard@tartarus.org>

        * tests/api_compact.cc: Cast character value in string constructor
          to a char; without this we were getting a stack overflow and
          general nastiness on i386, which we hypothesise was due to the
          wrong overload for string() being picked.

Wed Dec 02 23:10:50 GMT 2009  Olly Betts <olly@survex.com>

        * backends/flint_lock.cc: Add missing include of xapian/error.h.
          This was causing the snapshot builder to fail, but worked OK
          in my tree for reasons I don't understand.

Wed Dec 02 14:30:40 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_database.cc,
          backends/chert/chert_databasereplicator.cc,
          backends/flint/flint_database.cc,
          backends/flint/flint_databasereplicator.cc,backends/flint_lock.cc,
          backends/flint_lock.h: Factor out 4 copies of the same code to
          report why Xapian failed to get a lock.

Wed Dec 02 10:05:27 GMT 2009  Olly Betts <olly@survex.com>

        * backends/Makefile.mk,backends/chert/,backends/flint/,
          backends/flint_lock.cc,backends/flint_lock.h: Factor out a single
          version of the "flint-compatible locking code" and use it from both
          flint and chert.

Wed Dec 02 02:49:14 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_compact.cc,tests/apitest.cc,tests/apitest.h,
          tests/harness/backendmanager.cc,tests/harness/backendmanager.h: Add
          get_database_path() variant which takes a generator function and use
          it so that the right database names are used in compactnorenumber1.

Tue Dec 01 12:37:24 GMT 2009  Olly Betts <olly@survex.com>

        * tests/apitest.cc,tests/harness/backendmanager.cc,
          tests/harness/backendmanager.h: Move generator function variant of
          get_database() to BackendManager, and tweak it to build the database
          under a temporary path and rename it once built, to avoid leaving a
          partial database in place if interrupted.
        * tests/perftest/perftest_matchdecider.cc: Use this mechanism to lazily
          generate test databases.
        * tests/harness/: Remove the optional name parameter from various
          BackendManager methods as it was only used by perftest and is no
          longer needed.

Tue Dec 01 11:00:35 GMT 2009  Olly Betts <olly@survex.com>

        * tests/apitest.cc,tests/apitest.h: Add mechanism for caching databases
          generated by a function.
        * tests/api_compact.cc: Use it for compactnorenumber1.

Tue Dec 01 10:59:50 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_db.cc: Rename matchfunctor<n> to matchdecider<n> to match
          current terminology.

Tue Dec 01 10:51:23 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_db.cc: Don't run matchfunctor3 under remote backends as
          MatchDecider isn't actually supported there (uncovered by recent
          change to throw UnimplementedError in this case).

Tue Dec 01 09:35:53 GMT 2009  Richard Boulton <richard@tartarus.org>

        * include/xapian/matchspy.h: Remove out-of-date reference to
          add_slot(), which no longer exists: users are expected to use
          multiple ValueCountMatchSpies if they need to monitor more than
          one slot.

Tue Dec 01 08:04:17 GMT 2009  Olly Betts <olly@survex.com>

        * tests/Makefile.am,tests/api_compact.cc: Add test coverage for
          xapian-compact --no-renumber with multiple databases.

Tue Dec 01 06:25:47 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_backend.cc: Clean up matchdecider4.

Tue Dec 01 06:12:29 GMT 2009  Olly Betts <olly@survex.com>

        * HACKING: A couple more std::string efficiency tips.

Tue Dec 01 05:51:52 GMT 2009  Olly Betts <olly@survex.com>

        * api/omenquire.cc,common/multimatch.h,matcher/multimatch.cc,
          net/remoteserver.cc: Throw UnimplementedError if a matchdecider or
          "legacy" matchspy is used with the remote backend.
        * tests/api_backend.cc: Add regression test matchdecider4.

Mon Nov 30 05:42:43 GMT 2009  Olly Betts <olly@survex.com>

        * backends/remote/remote-database.cc,common/remote-database.h,
          common/remoteprotocol.h,common/remoteserver.h,
          docs/remote_protocol.html,net/remoteserver.cc,tests/api_metadata.cc,
          tests/harness/testrunner.cc: Add support for
          WritableDatabase::set_metadata() and Database::get_metadata() to the
          remote backend (based largely on patch in #178).
        * AUTHORS: Thanks to Paul Rudin for patch.

Thu Nov 26 07:25:15 GMT 2009  Olly Betts <olly@survex.com>

        * NEWS: Start to update from ChangeLog.

Thu Nov 26 02:26:43 GMT 2009  Olly Betts <olly@survex.com>

        * common/str.cc: Tweak the length calculation for the buffer used by
          str() when converting integers to strings so that the buffer is
          exactly the minimum required size for integers of size 1, 2, 4,
          and 8 bytes, and only a byte extra for 16 byte integers.

Wed Nov 25 05:59:13 GMT 2009  Olly Betts <olly@survex.com>

        * bin/xapian-compact.cc: In the --no-renumber case, just set offset[]
          entries to zero to start with rather than fixing them up later.

Wed Nov 25 05:49:37 GMT 2009  Olly Betts <olly@survex.com>

        * bin/xapian-compact.cc: Extend --no-renumber to support merging
          databases, but only if they have disjoint ranges of used document
          ids.

Wed Nov 25 04:37:38 GMT 2009  Olly Betts <olly@survex.com>

        * bin/xapian-compact.cc: Fix typos in --help output.

Wed Nov 25 04:22:26 GMT 2009  Olly Betts <olly@survex.com>

        * bin/xapian-compact.cc: Prune unused docids off the end of database
          when merging multiple databases with renumbering.

Wed Nov 25 03:12:24 GMT 2009  Olly Betts <olly@survex.com>

        * bin/xapian-compact.cc: Use string() instead of "" and string(1, '\0')
          instead of string("", 1).

Wed Nov 25 02:34:10 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_lock.cc: Fix locking code to work if stdin
          and/or stdout have been closed.
        * backends/flint/flint_lock.cc: Backport fix to flint.
        * tests/api_backend.cc: Add regression test lockfilefd0or1.

Wed Nov 25 00:59:05 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_database.cc,backends/chert/chert_lock.cc,
          backends/chert/chert_lock.h: Add "FDLIMIT" reason code for why
          locking failing.

Tue Nov 24 12:44:56 GMT 2009  Olly Betts <olly@survex.com>

        * api/omdatabase.cc: Factor out throwing an exception for docid 0 not
          being valid.

Tue Nov 24 12:39:10 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_none.cc: Note previous fix was ticket#415.

Tue Nov 24 12:33:12 GMT 2009  Olly Betts <olly@survex.com>

        * api/omdatabase.cc: Fix many Xapian::Database methods to behave better
          on a database with no subdatabases, such as is constructed by
          Database().
        * tests/Makefile.am,tests/api_nodb.cc,tests/api_none.cc: Expand
          emptydb_metadata1 to also regression test these other cases, and
          rename to nosubdatabases1.

Mon Nov 23 14:01:51 GMT 2009  Olly Betts <olly@survex.com>

        * common/debuglog.h: Add "NO_ARGS" which can be used for debug logging
          when a function or method takes no arguments.  The main advantage
          over "" is that no extra code is generated for it.
        * api/omdatabase.cc: Convert to use debuglog.h fully.
        * api/matchspy.cc,api/omdatabase.cc: Make use of NO_ARGS.

Mon Nov 23 09:10:55 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_cursor.cc,backends/flint/flint_cursor.cc,
          common/debuglog.cc,common/debuglog.h,common/omdebug.h,configure.ac,
          matcher/multimatch.cc,queryparser/queryparser.lt: Rename
          XAPIAN_DEBUG_VERBOSE macro to XAPIAN_DEBUG_LOG to better match the
          user-visible "--enable-log" configure option which controls it.

Mon Nov 23 08:08:45 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_database.cc,backends/chert/chert_lock.cc,
          backends/chert/chert_table.cc,backends/flint/: Use string() or
          s.resize(0) instead of "".  Use string(1, '\0') instead of
          string("", 1).

Sun Nov 22 14:20:51 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_postlist.cc: When skipping through a chunk of
          postings to find the one we want, don't bother to unpack the wdf
          values we're skipping over, which should save a significant amount
          of time in certain cases where the profile data shows we spend
          something like 1/3 of the time in the function where this happens.

Sun Nov 22 13:12:39 GMT 2009  Olly Betts <olly@survex.com>

        * api/matchspy.cc,backends/chert/chert_values.cc,
          languages/steminternal.cc: Tweak whitespace after while to be
          consistent.

Sat Nov 21 17:39:23 GMT 2009  Richard Boulton <richard@tartarus.org>

        * backends/chert/chert_values.cc,backends/chert/chert_values.h:
          Make ValueChunkReader::skip_to() assign the value to a string
          only when the target has been reached.  Saves a lot of
          unnecessary string copying - on a benchmark of mydeco data,
          improves time for 100 queries from 3.66s to 3.10s.

Sat Nov 21 01:13:26 GMT 2009  Olly Betts <olly@survex.com>

        * tests/: Make arrays which don't need to be modified const.

Sat Nov 21 00:01:04 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_matchspy.cc: The default parameter for
          get_writable_database() is string(), so don't explicitly pass "".

Fri Nov 20 16:19:13 GMT 2009  Richard Boulton <richard@tartarus.org>

        * tests/api_matchspy.cc: Add regression test for underflow in
          numeric ranges (based on python version in ticket #321).

Fri Nov 20 10:54:08 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/valuestreamdocument.cc: Use check() instead of skip_to() in
          ValueStreamDocument.

Fri Nov 20 09:57:12 GMT 2009  Olly Betts <olly@survex.com>

        * common/document.h,matcher/: Implement ValueStreamDocument subclass
          of Xapian::Document::Internal which provides a way to connect up
          valuestreams to uses of values during the match.  Other
          (non-recommended) uses of the Document passed to MatchDecider, etc
          are passed through to a lazily created backend Document::Internal
          subclass.  This should be a lot more efficient for chert.  It's
          unclear how it will affect performance for backends which don't store
          values in streams - profiling is required.

Fri Nov 20 02:35:14 GMT 2009  Olly Betts <olly@survex.com>

        * backends/inmemory/inmemory_document.cc: Fix closedb1 on InMemory
          backend, broken by recent commit.

Thu Nov 19 12:03:52 GMT 2009  Olly Betts <olly@survex.com>

        * backends/multi/multi_valuelist.cc: Fix to handle the case where all
          the sublists turn out to be empty when we first call next().

Thu Nov 19 11:12:53 GMT 2009  Olly Betts <olly@survex.com>

        * backends/inmemory/: Set the document data and values lazily for the
          inmemory backend too.  They're much less costly to fetch than if
          a disk access may be needed, but it avoids a copy of the respective
          data if they aren't needed, and either could potentially be large.
          Consistency here also makes things easier to understand.

Thu Nov 19 08:47:24 GMT 2009  Olly Betts <olly@survex.com>

        * api/omdocument.cc: Prefer string() to "".

Thu Nov 19 07:38:29 GMT 2009  Olly Betts <olly@survex.com>

        * api/omdatabase.cc,backends/multi/Makefile.mk,
          backends/multi/multi_valuelist.cc,common/Makefile.mk,
          common/multivaluelist.h,tests/api_valuestream.cc: Implement support
          for iterating valuestreams for multidatabases.

Thu Nov 19 06:19:05 GMT 2009  Olly Betts <olly@survex.com>

        * bin/xapian-check.cc: Rework the checking of postlist chunks into
          a cleaner approach which should report errors better, and
          eliminate the (probably) impossible "did might not be initialised"
          path which GCC 4.2 spotted.

Thu Nov 19 01:15:03 GMT 2009  Olly Betts <olly@survex.com>

        * common/pack.h: Remove incorrect assertion and document what NULL
          parameter value means in this case.

Wed Nov 18 16:33:01 GMT 2009  Richard Boulton <richard@tartarus.org>

        * bin/xapian-check.cc: Fix compiler warning (with gcc-4.2) that did
          could be used uninitialised: it couldn't be, but it's hard for a
          compiler to see that.

Wed Nov 18 12:48:17 GMT 2009  Richard Boulton <richard@tartarus.org>

        * AUTHORS: Update my email address.

Wed Nov 18 12:21:09 GMT 2009  Olly Betts <olly@survex.com>

        * common/valuelist.h: Fix internal documentation comment.

Wed Nov 18 10:40:54 GMT 2009  Olly Betts <olly@survex.com>

        * configure.ac: Use <cstdlib>, <cmath>, <cstdio>, <cstring> for
          configure tests since we use these forms in the code and want
          consistency between what configure tests and what the code
          uses.
        * NEWS,configure.ac: Update for 1.1.3.

Wed Nov 18 10:39:59 GMT 2009  Olly Betts <olly@survex.com>

        * PLATFORMS: Update from 1.0.17.

Wed Nov 18 10:31:49 GMT 2009  Olly Betts <olly@survex.com>

        * INSTALL: Improve text about zlib dependency.

Wed Nov 18 10:13:59 GMT 2009  Olly Betts <olly@survex.com>

        * INSTALL: Note the package to install for building against libuuid on
          Fedora, and note that libuuid isn't required on Microsoft Windows.

Wed Nov 18 02:34:30 GMT 2009  Olly Betts <olly@survex.com>

        * NEWS: Update from 1.0.17 and ChangeLog.

Mon Nov 16 08:35:52 GMT 2009  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Fix interaction of FLAG_PARTIAL and
          FLAG_SYNONYM.  (ticket#407)
        * tests/Makefile.am,tests/api_qpbackend.cc: Add regression test
          qpsynonympartial1.

Mon Nov 16 02:15:14 GMT 2009  Olly Betts <olly@survex.com>

        * backends/flint/flint_version.cc: Add "using namespace std;" and drop
          the explicit std:: qualifiers.

Fri Nov 13 02:27:48 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_spelling.h,backends/chert/chert_table.h,
          backends/flint/flint_spelling.h,backends/flint/flint_table.h,
          common/getopt.cc,common/stringutils.h,languages/steminternal.h:
          Add missing std:: qualifiers for functions in <cstring>, <cstdlib>,
          etc.

Fri Nov 13 02:25:50 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_lock.cc,backends/flint/flint_lock.cc: Add
          "using namespace std;" and drop the explicit std:: qualifiers.

Fri Nov 13 02:11:18 GMT 2009  Olly Betts <olly@survex.com>

        * common/str.cc: Use assignment to initialise a size_t - the current
          code was turning a missing snprintf() prototype into a confusing
          error message with Sun's C++, and is less clear anyway.

Fri Nov 13 02:03:28 GMT 2009  Olly Betts <olly@survex.com>

        * HACKING,backends/chert/chert_lock.cc,backends/flint/flint_lock.cc,
          backends/remote/remote-database.cc,net/remoteserver.cc,
          net/tcpserver.cc,tests/harness/backendmanager_remotetcp.cc,
          tests/harness/testsuite.cc: Sun C++'s <csignal> (not unreasonably)
          excludes non-ISO-C functions which are in <signal.h> - for example,
          kill() (which POSIX specifies).  So revert <csignal> to <signal.h>
          and document this as a global exception.

Thu Nov 12 08:30:07 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/collapser.h: Remove spurious comma after last entry in enum,
          which Sun's C++ compiler warns about.

Thu Nov 12 00:24:55 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Sorter -> KeyMaker in an exception message.

Thu Nov 12 00:01:55 GMT 2009  Olly Betts <olly@survex.com>

        * include/xapian/database.h: Tweak documentation comments about
          committing changes.

Wed Nov 11 12:23:48 GMT 2009  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Fix handling of a group of stopwords
          which notably caused issues when default_op was OP_AND, but could
          probably manifest in other cases too.  Fixes ticket#406.
        * tests/queryparsertest.cc: Add regression test qp_stopword_group1.

Wed Nov 11 10:54:58 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_version.h,common/safeuuid.h: Fix workaround for
          uuid.h headers which lack const to actually work on Solaris.

Wed Nov 11 10:53:50 GMT 2009  Olly Betts <olly@survex.com>

        * common/Makefile.mk: Need to ship new pack.h header.

Tue Nov 10 22:27:47 GMT 2009  Olly Betts <olly@survex.com>

        * bin/xapian-check.cc: Fix compiler warning introduced by previous
          change.

Tue Nov 10 12:24:34 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/,bin/xapian-check.cc,common/pack.h: Rewrite the
          packing and unpacking functions more efficiently.  As well as being
          generally faster, the pack functions now take a reference to a string
          to append to, which avoids creating a lot of temporary string
          objects.  Indexing HTML files with omindex is 5-10% faster.
          Searching for "The" on gmane (which results in a lot of unpacking of
          postings and document lengths) is about 35% faster.  (ticket#326)

Thu Nov 05 03:55:37 GMT 2009  Olly Betts <olly@survex.com>

        * common/safeuuid.h: Fix to work with uuid libraries which lack const
          qualifiers.  Fixes build failure on Solaris.

Thu Nov 05 00:15:24 GMT 2009  Olly Betts <olly@survex.com>

        * HACKING: Update details of debian packaging.

Wed Nov 04 04:11:38 GMT 2009  Olly Betts <olly@survex.com>

        * common/output.h: Use C++ syntax for NULL with a type in log output.

Wed Nov 04 04:02:09 GMT 2009  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Avoid trivial memory leak.

Wed Nov 04 00:13:00 GMT 2009  Olly Betts <olly@survex.com>

        * include/xapian/database.h: Reword to avoid somewhat ambiguous "this
          method".

Tue Nov 03 12:12:09 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/database.h: Make it more clear that you need to
          add the unique term to the document if you want to use
          replace_document() to use external unique IDs for documents.

Tue Nov 03 06:08:43 GMT 2009  Olly Betts <olly@survex.com>

        * tests/generate-api_generated: Update MultiValueSorter to
          MultiValueKeyMaker.

Tue Nov 03 05:51:23 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_sorting.cc,tests/api_sortingold.cc: Fix changesorter1 and
          oldchangesorter1 to not be run for the remote backend where they will
          now fail with UnimplementedError.

Tue Nov 03 02:43:12 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Xapian::Sorter isn't supported with the remote
          backend so throw UnimplementedError rather than giving incorrect
          results.  (ticket#384)
        * tests/api_sorting.cc: Add sortfunctorremote1 test this exception is
          actually thrown.

Tue Nov 03 01:26:57 GMT 2009  Olly Betts <olly@survex.com>

        * common/database.h: Fix vertical whitespace glitch.

Mon Nov 02 08:10:03 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * api/omdatabase.cc: Check that internal is not empty before
          referencing its first element, in get_metadata() and
          metadata_keys_begin(), to avoid a potential segfault.
        * tests/api_nodb.cc: Add emptydb_metadata1, a regression test for
          this bug.

Sun Nov 01 22:10:54 GMT 2009  Olly Betts <olly@survex.com>

        * examples/delve.cc,examples/quest.cc: Extend exception handling to the
          whole of main.  Xapian::Stem("english") can't actually throw, but
          that's not obvious to static analysis tools, and it is more robust
          to wrap the whole of main, and reduces indentation.

Sun Nov 01 21:27:05 GMT 2009  Olly Betts <olly@survex.com>

        * bin/xapian-compact.cc: Add missing exception catch for const char *.
          The only case which currently throws this is an "impossible"
          situation, but if we're going to check for it, the reporting of
          failure should actually work.  Identified by Coverity's Scan.

Sun Nov 01 07:56:38 GMT 2009  Olly Betts <olly@survex.com>

        * examples/quest.cc: Tighten up the type of the error we catch to
          detect an unknown stemming language.

Sat Oct 31 07:16:11 GMT 2009  Olly Betts <olly@survex.com>

        * NEWS: Update from ChangeLog.

Sat Oct 31 06:59:19 GMT 2009  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Fix deprecation warnings when building with
          recent GCC.

Sat Oct 31 02:46:04 GMT 2009  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Add another test query string to cover a
          case we didn't previously check.

Tue Oct 27 00:42:59 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_lock.cc,backends/flint/flint_lock.cc: Don't
          try to close the fd one more than the maximum allowable.
          (ticket#408)
        * AUTHORS: Add Carl Worth for the patch.

Mon Oct 05 09:00:58 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * configure.ac: Mention e2fsprogs-devel in the message thrown up by
          configure, too.

Mon Oct 05 08:53:05 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * HACKING: Note the command needed to get the uuid library
          installed on fedora, since it's rather non-obvious.

Sat Oct 03 20:11:48 GMT 2009  Olly Betts <olly@survex.com>

        * unicode/tclUniData.cc: Update Unicode character database to Unicode
          5.2.  (ticket#351)
        * tests/api_unicode.cc: Add tests for some characters added in Unicode
          5.2.

Thu Oct 01 21:19:34 GMT 2009  Olly Betts <olly@survex.com>

        * xapian-config.in: Need to quote ^ for Solaris /bin/sh.

Fri Sep 18 13:23:00 GMT 2009  Olly Betts <olly@survex.com>

        * configure.ac: Actually use any flags we determine are needed to
          switch the compiler to proper ANSI C++ mode, when building
          xapian-core - this stopped working in 1.0.12, breaking support for
          HP's aCC, Compaq's cxx, Sun's CC, and SGI's CC.

Fri Sep 18 12:40:37 GMT 2009  Olly Betts <olly@survex.com>

        * include/xapian/matchspy.h: Mark ValueCountMatchSpy, NumericRange,
          NumericRanges, and score_evenness() as experimental.

Fri Sep 18 08:36:34 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/weight.h,weight/weight.cc: Remove default
          implementation of Weight::clone() which returns NULL - we always
          need clone() to be implemented because it's called for every term
          in the query, not just used for the remote backend.

Fri Sep 18 08:02:08 GMT 2009  Olly Betts <olly@survex.com>

        * api/omenquire.cc,docs/deprecation.rst,include/xapian/enquire.h: Mark
          and document the matchspy parameter of Enquire::get_mset() as
          deprecated in favour of the new MatchSpy class and
          Enquire::add_matchspy().

Fri Sep 18 07:58:11 GMT 2009  Olly Betts <olly@survex.com>

        * tests/perftest/perftest_matchdecider.cc: Don't pass default values
          for optional parameters to Enquire::get_mset().

Fri Sep 18 02:36:43 GMT 2009  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: If FLAG_PARTIAL is specified, don't
          try to spell correct a term at the end of the query which we attempt
          to expand as partial.
        * tests/queryparsertest.cc: Add regression test qp_spellpartial1.

Fri Sep 18 02:33:55 GMT 2009  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: For testcase qp_spellwild1: Fix the dbdir
          to qp_spellwild1 to match the testname;  Fix the ordering of
          TESTCASE macros to match the order of the test functions;  Note that
          this is a regression test and the versions the bug will be fixed in.

Fri Sep 18 01:25:37 GMT 2009  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Fix to work with the old scoping rules for
          variables declared in for().

Thu Sep 17 19:17:30 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * queryparser/queryparser.lemony: Don't apply spelling correction
          to wildcard terms if FLAG_WILDCARD and FLAG_SPELLING_CORRECTION
          are both specified.
        * tests/queryparsertest.cc: Add qp_spellwild1 as a test for this.

Thu Sep 17 12:08:17 GMT 2009  Olly Betts <olly@survex.com>

        * NEWS: Update from ChangeLog.

Thu Sep 17 10:20:35 GMT 2009  Olly Betts <olly@survex.com>

        * api/keymaker.cc: Implement Richard's idea of not encoding any
          trailing, forward sorted, empty values which is a generalisation
          of encoding all forward sorted, empty values as an empty string.
        * tests/api_sorting.cc: Add new testcase multivaluekeymaker1 to
          check encodings are as expected.

Thu Sep 17 07:15:10 GMT 2009  Olly Betts <olly@survex.com>

        * api/,common/multimatch.h,common/omenquireinternal.h,
          docs/deprecation.rst,docs/sorting.rst,include/Makefile.mk,
          include/xapian.h,include/xapian/enquire.h,include/xapian/keymaker.h,
          include/xapian/sorter.h,matcher/multimatch.cc,tests/Makefile.am,
          tests/api_sorting.cc,tests/api_sortingold.cc: Rename Sorter to
          KeyMaker, paving the way for using it to build collapse keys too.
          Resolve the inconsistency in MultiValueSorter::add()'s "forward"
          parameter by replacing it with MultiKeyMaker::add_value() with a
          "reverse" parameter.  (ticket#359)

Thu Sep 17 07:13:25 GMT 2009  Olly Betts <olly@survex.com>

        * api/valuesetmatchdecider.cc,include/xapian/valuesetmatchdecider.h:
          Inline trivial constructor from header.  Add explicit '#include
          "xapian/document.h"'.

Thu Sep 17 05:22:50 GMT 2009  Olly Betts <olly@survex.com>

        * HACKING: Document how to use the XAPIAN_DEPRECATED() macro to
          mark a class as deprecated.

Wed Sep 16 02:40:13 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_table.cc,backends/flint/flint_table.cc:
          Eliminate a couple of assertions which can never fire.

Sat Sep 12 04:05:35 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/msetpostlist.cc: Fix MSetPostList not to read off the end of
          the MSet if get_maxweight() is called when at_end().  This can
          happen but the testcase was too large to send so sadly no
          regression test I'm afraid.

Sat Sep 12 03:41:04 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_values.cc: Fix code to find the first docid in
          the net chunk (ticket#399).
        * tests/api_backend.cc: Add regression test from Rich Lane.

Fri Sep 11 11:14:49 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/,bin/xapian-check.cc,bin/xapian-compact.cc: Add
          support for chert databases without a termlist table (ticket#181).
          Currently the only way to create such a database is to create a
          chert database and do "rm termlist.*".

Fri Sep 11 10:07:35 GMT 2009  Olly Betts <olly@survex.com>

        * bin/xapian-compact.cc: Don't report an absent lazy input table as 0
          size.

Fri Sep 11 03:17:17 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_table.h: Improve documentation of "handle"
          member.

Thu Sep 10 13:24:29 GMT 2009  Olly Betts <olly@survex.com>

        * m4-macros/xapian-1.1.m4: Report the default xapian-config
          basename in configure's --help output.

Thu Sep 10 12:55:48 GMT 2009  Olly Betts <olly@survex.com>

        * m4-macros/xapian-1.1.m4: Add optional third parameter to
          XO_LIB_XAPIAN which specifies the basename for the "xapian-config"
          script (defaults to "xapian-config" to give the current behaviour).

Thu Sep 10 06:39:17 GMT 2009  Olly Betts <olly@survex.com>

        * NEWS: Update with changes in 1.0.16 and from ChangeLog.

Thu Sep 10 02:17:56 GMT 2009  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: Clarify the documentation comments for
          QueryParser::set_default_op() and QueryParser::get_default_op().

Wed Sep 09 13:36:58 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * matcher/andmaybepostlist.cc,tests/Makefile.am,tests/api_queryopt.cc:
          Back out patch from r13440 which introduced a new optimisation
          for AND_MAYBE when the maximum weight of the RHS becomes zero,
          due to various undesirable side effects.  I've put the patch into
          ticket #400 with an explanation.

Wed Sep 09 01:54:05 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_postlist.cc,tests/api_backend.cc: Fix
          WritableDatabase::get_doclength() to work properly after a call to
          commit for the chert backend (ticket#397).

Wed Sep 09 00:28:09 GMT 2009  Olly Betts <olly@survex.com>

        * AUTHORS: Add Dmitry Liakh for fix for #398.

Wed Sep 09 00:02:47 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_lock.cc,backends/flint/flint_lock.cc: Fix a
          typo which stopped this fix in 1.0.12 from working (ticket #398):

          If we fail to get the lock after we spawn the child lock process
          (the common case is because the database is already open for
          writing) then we now clean up the child process properly.

Fri Sep 04 11:24:26 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * docs/categorisation.rst: Remove out-of-date call to get_mset()
          which passed a MatchSpy in - spies are now set with
          add_matchspy() before get_mset() is called.

Thu Sep 03 00:29:27 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * matcher/andmaybepostlist.cc: For AndMaybe, if the RHS has a
          maximum possible weight of 0, we now decay to just the LHS.
        * tests/Makefile.am,tests/api_queryopt.cc: Test coverage that this
          optimisation doesn't break anything.

Tue Sep 01 12:04:13 GMT 2009  Olly Betts <olly@survex.com>

        * configure.ac: Send stderr output from ldconfig to config.log.

Tue Sep 01 10:35:51 GMT 2009  Olly Betts <olly@survex.com>

        * AUTHORS,common/safeuuid.h: Fix uuid_unparse_lower() replacement for
          older libuuid to actually compile (really fixes ticket#368).

Mon Aug 31 05:58:55 GMT 2009  Olly Betts <olly@survex.com>

        * NEWS: Sync with 1.0.15.

Mon Aug 31 05:48:13 GMT 2009  Olly Betts <olly@survex.com>

        * NEWS: Start to format entries for 1.1.3.

Mon Aug 31 04:14:58 GMT 2009  Olly Betts <olly@survex.com>

        * PLATFORMS: Sync with 1.0.15.

Mon Aug 31 01:30:01 GMT 2009  Olly Betts <olly@survex.com>

        * common/getopt.cc: Use USE_GLIBC_GNUGETOPT from gnu_getopt.h rather
          than repeating the conditionals used to determine it here.  Rename
          __getopt_initialized to getopt_initialized and make it static.
          Rename _getopt_initialize() to getopt_initialize().

Mon Aug 31 01:24:29 GMT 2009  Olly Betts <olly@survex.com>

        * common/gnu_getopt.h: Update (C) dates.  Markup file description for
          doxygen.  Fix comment reference to ctype.h as we now use <cctype>.

Sun Aug 30 23:28:25 GMT 2009  Olly Betts <olly@survex.com>

        * common/gnu_getopt.h: Make optarg, optind, opterr, and optopt extern
          "C" to avoid linkage clash with these symbols on Mac OS X 10.6.

Thu Aug 27 03:05:33 GMT 2009  Olly Betts <olly@survex.com>

        * HACKING: Add note to document the reason for any exceptions to the
          rule to use C++ forms of ISO C headers.

Wed Aug 26 13:07:07 GMT 2009  Olly Betts <olly@survex.com>

        * AUTHORS,INSTALL,docs/install.html: Drop .php from xapian.org URLs.

Wed Aug 26 12:58:51 GMT 2009  Olly Betts <olly@survex.com>

        * HACKING: Update URLs.  Remove duplicated text about updating RoadMap
          from the release checklist.

Wed Aug 26 10:56:07 GMT 2009  Olly Betts <olly@survex.com>

        * configure.ac: Update various URLs.

Tue Aug 25 01:52:51 GMT 2009  Olly Betts <olly@survex.com>

        * tests/harness/testsuite.cc: Fix not to report heaps of bogus errors
          under valgrind 3.5.0.

Mon Aug 24 02:19:06 GMT 2009  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Also update the documentation comment for
          set_sort_by_relevance_then_value() to mention sortable_serialise().

Fri Aug 21 14:35:35 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * Makefile.am: Add generate-exceptions to EXTRA_DIST - was missing
          from tarballs.

Fri Aug 21 12:21:59 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * AUTHORS: Add Michael Vogt, who suggested adding a comment about
          sortable_serialise to set_sort_by_value().

Fri Aug 21 12:14:13 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/enquire.h: Update documentation comments for
          set_sort_by_value() and set_sort_by_value_then_relevance() to
          mention sortable_serialise() as a good way to store values if you
          want to sort by them.

Mon Aug 17 16:51:10 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * matcher/multimatch.cc: When sorting by non-pure-relevance, ensure
          that the document is shown to the matchspy even if it couldn't
          get in the mset.
        * tests/api_matchspy.cc: Extend matchspy4 to include a regression
          test for this.

Mon Aug 17 11:51:24 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * api/matchspy.cc,include/xapian/matchspy.h: Add overload for
          score_evenness to allow a NumericRanges object to be passed to
          it.

Mon Aug 17 07:36:57 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * api/matchspy.cc,include/xapian/matchspy.h: Replace
          build_numeric_ranges() function with a NumericRanges object,
          whose constructor is passed the values and which exposes the
          calculated ranges via a getter.
        * tests/api_matchspy.cc: Update tests to use new NumericRanges
          object instead of build_numeric_ranges().

Wed Aug 12 17:33:53 GMT 2009  Olly Betts <olly@survex.com>

        * Makefile.am: Fix generate-exceptions change to work in a VPATH
          build.

Wed Aug 12 15:57:44 GMT 2009  Olly Betts <olly@survex.com>

        * exception_data.pm: Add new SerialisationError.
        * common/serialise-double.cc: Throw SerialisationError or InternalError
          instead of NetworkError.

Wed Aug 12 15:19:05 GMT 2009  Olly Betts <olly@survex.com>

        * Makefile.am,configure.ac,generate-exceptions,generate-exceptions.in:
          It's not very useful to be able to run generate-exceptions outside
          the build system, and it only gets the #! line substituted, so just
          move those runes into Makefile.am and reduce the number of files that
          configure needs to generate by one.

Mon Aug 10 13:25:22 GMT 2009  Olly Betts <olly@survex.com>

        * api/matchspy.cc: Use <cfloat> and <cmath> rather than <float.h> and
          <math.h> (regression from merging the matchspy branch).

Mon Aug 10 13:01:57 GMT 2009  Olly Betts <olly@survex.com>

        * api/,bin/xapian-tcpsrv.cc,common/,docs/postingsource.rst,
          docs/serialisation.rst,include/Makefile.mk,include/xapian.h,
          include/xapian/,net/remoteserver.cc,tests/: Rename
          SerialisationContext to Registry.

Mon Aug 10 11:23:23 GMT 2009  Olly Betts <olly@survex.com>

        * NEWS: Start to update from ChangeLog.

Mon Aug 10 10:29:13 GMT 2009  Olly Betts <olly@survex.com>

        * api/omenquire.cc,include/xapian/weight.h,matcher/localmatch.cc:
          Make Weight::clone() public, and remove Weight::clone_() as it is
          no longer required.

Mon Aug 10 07:55:04 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * HACKING: Add section on ordering of include files, and fix a few
          formatting issues to make this file into valid restructured text
          again.

Mon Aug 10 06:55:45 GMT 2009  Olly Betts <olly@survex.com>

        * api/serialisationcontext.cc,common/serialisationcontextinternal.h:
          Refactor to use a template function to implement the exception safe
          approach I implemented for PostingSource, and use it for MatchSpy
          and Weight too.
        * tests/api_serialise.cc: Add tests for exception safety of MatchSpy
          and Weight with SerialisationContext.

Mon Aug 10 06:15:23 GMT 2009  Olly Betts <olly@survex.com>

        * include/xapian/weight.h,weight/weight.cc: Add default implementations
          of Weight methods name(), serialise(), unserialise(), and clone() for
          consistency with PostingSource and MatchSpy.

Mon Aug 10 03:29:12 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_postingsource.cc: Tweak header include order.

Tue Aug 04 15:49:54 GMT 2009  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: Explicitly document that an empty
          prefix argument to QueryParser::add_prefix() means "no prefix".

Tue Aug 04 13:11:26 GMT 2009  Olly Betts <olly@survex.com>

        * api/postingsource.cc: Throw UnimplementedError rather than
          InvalidOperationError from PostingSource::serialise() and
          PostingSource::unserialise() for consistency with MatchSpy.
        * include/xapian/postingsource.h: Document this behaviour (previously
          we didn't say what the default implementation actually did).
        * tests/api_serialise.cc: Add test coverage.

Mon Aug 03 11:40:31 GMT 2009  Olly Betts <olly@survex.com>

        * api/serialisationcontext.cc: Fix to handle the clone() method or dtor
          of a PostingSource subclass throwing exceptions.
        * tests/api_serialise.cc: Add new testcase serialisationcontext1 as a
          regression test for this.

Mon Aug 03 06:40:28 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_serialise.cc: Fix copy-and-pasted @brief.

Sun Aug 02 16:21:54 GMT 2009  Olly Betts <olly@survex.com>

        * common/remoteprotocol.h: Correction: protocol version 33 will debut
          in 1.1.3 not 1.1.4.

Sun Aug 02 16:20:28 GMT 2009  Olly Betts <olly@survex.com>

        * docs/remote_protocol.html: Update to document protocol version 33.

Sun Aug 02 16:17:24 GMT 2009  Olly Betts <olly@survex.com>

        * backends/remote/remote-database.cc,net/remoteserver.cc: We were
          ignoring any trailing junk after the matchspies in MSG_GETMSET, so
          change to not send a count of them and just unpack until we run out
          of data.

Sun Aug 02 15:47:30 GMT 2009  Olly Betts <olly@survex.com>

        * common/remoteprotocol.h: Note the versions in which recent protocol
          versions were introduced.

Sun Aug 02 15:09:13 GMT 2009  Olly Betts <olly@survex.com>

        * backends/remote/remote-database.cc,common/serialise.h,
          net/remoteserver.cc,net/serialise.cc: Put the serialised MSet last in
          REPLY_RESULTS as then it doesn't need to know its own length (so the
          encoding is the same size it used to be in the non-matchspy case),
          and we avoid having to check for there being "junk" data left over
          after unserialising.

Sun Aug 02 14:39:18 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/remotesubmatch.h: Fix to build with GCC 4.4.1.

Sun Aug 02 14:27:44 GMT 2009  Olly Betts <olly@survex.com>

        * backends/remote/remote-database.cc: Don't assign a temporary string
          object.

Sun Aug 02 13:50:14 GMT 2009  Olly Betts <olly@survex.com>

        * include/xapian/matchspy.h: Add missing documentation comments.

Sun Aug 02 12:15:43 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        Merge from matchspy branch.
        * api/,backends/remote/remote-database.cc,common/,docs/Makefile.am,
          docs/categorisation.rst,include/Makefile.mk,include/xapian.h,
          include/xapian/enquire.h,include/xapian/matchspy.h,
          include/xapian/serialisationcontext.h,matcher/multimatch.cc,
          matcher/remotesubmatch.cc,matcher/remotesubmatch.h,
          net/remoteserver.cc,net/serialise.cc,tests/Makefile.am,
          tests/api_matchspy.cc: Add new-style Xapian::MatchSpy class,
          which is a pure "spy" class, rather than being able to take a
          decision on whether a spy is applied before or after a result.
          This class is also designed to work with remote databases,
          passing the results back in serialised form.  Also, add
          ValueCountMatchSpy, which counts the occurrences of each value in
          a slot in the search results seen (useful for faceted or
          categorisation systems).

Fri Jul 31 12:50:57 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_backend.cc,tests/api_wrdb.cc: Move new test
          modifiedpostlist1 from api_wrdb.cc to api_backend.cc - we're trying
          not to make api-wrdb.cc any larger.  Also note the ticket number and
          the release this will be fixed in.

Thu Jul 30 16:30:06 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_modifiedpostlist.cc: Fix ChertModifiedPostList
          to skip added-but-then-deleted-before-flush documents.  (ticket#392)
          backends/flint/flint_modifiedpostlist.cc: Same fix for flint.
        * tests/api_wrdb.cc: Add regression test modifiedpostlist1.
        * AUTHORS: Add Rich Lane for patch.

Wed Jul 29 09:44:15 GMT 2009  Olly Betts <olly@survex.com>

        * NEWS: Update from ChangeLog.

Wed Jul 29 09:29:45 GMT 2009  Olly Betts <olly@survex.com>

        * include/xapian/valueiterator.h: Fix typos ("again" -> "and").

Wed Jul 29 06:18:41 GMT 2009  Olly Betts <olly@survex.com>

        * tests/Makefile.am: Actually distribute testdata/apitest_declen.txt
          - new test data from the postingsources branch merge.

Tue Jul 28 16:38:55 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        Merge from postingsources branch:
        * tests/generate-api_generated: Test get_description() methods of
          Xapian::PostingSource subclasses.

Tue Jul 28 16:35:54 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        Merge from postingsources branch:
        * api/Makefile.mk,api/decvalwtsource.cc,api/serialisationcontext.cc,
          include/xapian/postingsource.h: Add
          DecreasingValueWeightPostingSource class, which reads weights
          from a value slot in which a significant range of the values are
          in decreasing order.  This functions similarly to
          ValueWeightPostingSource, but can be much more efficient.
        * tests/api_valuestream.cc,tests/testdata/apitest_declen.txt:
          Tests, and some associated constructed test data, for
          DecreasingValueWeightPostingSource.

Mon Jul 27 04:50:45 GMT 2009  Olly Betts <olly@survex.com>

        * HACKING: Now using autoconf 2.64.

Mon Jul 27 04:46:17 GMT 2009  Olly Betts <olly@survex.com>

        * HACKING: Add note about preferring std::string::assign(), and also
          one about building up strings using +=.

Mon Jul 27 04:45:15 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_lock.cc,backends/chert/chert_utils.h,
          backends/flint/flint_lock.cc,backends/flint/flint_utils.h,
          backends/remote/remote-database.cc: Use std::string::assign() rather
          than constructing a temporary string object to assign.

Sun Jul 26 16:08:10 GMT 2009  Olly Betts <olly@survex.com>

        * AUTHORS: Update for bugs fixed in 1.0.14.

Sun Jul 26 16:03:54 GMT 2009  Olly Betts <olly@survex.com>

        * HACKING: Update the release checklist.

Sun Jul 26 14:28:25 GMT 2009  Olly Betts <olly@survex.com>

        * docs/doxygen_source.conf.in: Update roughly in-line with apidoc
          changes.  I've not looked at the output much though.

Sun Jul 26 14:00:14 GMT 2009  Olly Betts <olly@survex.com>

        * include/xapian/database.h: Remove documentation comment for namespace
          Xapian - this is now documented in xapian.h.

Sun Jul 26 13:59:42 GMT 2009  Olly Betts <olly@survex.com>

        * include/xapian/unicode.h: Add documentation comment for namespace
          Unicode.

Sun Jul 26 13:58:44 GMT 2009  Olly Betts <olly@survex.com>

        * include/xapian/dbfactory.h: Add documentation comments for the
          backend namespaces (InMemory, etc).

Sun Jul 26 13:57:29 GMT 2009  Olly Betts <olly@survex.com>

        * include/xapian/version_h.cc: Add documentation comments for the
          generated version.h, and all the preprocessor defines it contains.

Sun Jul 26 13:56:15 GMT 2009  Olly Betts <olly@survex.com>

        * include/xapian.h: Consistently say "linked with" rather than "linked
          to" in some cases.  Put documentation comment for namespace Xapian
          in this file.

Sun Jul 26 13:06:45 GMT 2009  Olly Betts <olly@survex.com>

        * docs/doxygen_api.conf.in: More fettling to try to get better output:
          + Wrap long comments.
          + Quote arguments containing @...@ substitutions as they could
            conceivably contain spaces.
          + ALWAYS_DETAILED_SEC = NO: since a detailed section with no extra
            information is pointless.
          + STRIP_FROM_PATH, INCLUDE_PATH: Add "@top_builddir@/include" for
            VPATH builds.
          + HIDE_UNDOC_MEMBERS = YES: otherwise @internal members show up
            (with no documentation).
          + HIDE_FRIEND_COMPOUNDS = YES: as friend declarations in the API
            headers are implementation details.
          + SHOW_INCLUDE_FILES = NO: users should just include <xapian.h>
            for all their API needs.
          + GENERATE_TODOLIST, GENERATE_TESTLIST, GENERATE_BUGLIST: all set to
            NO as we don't want these in the API documentation.
          + SHOW_NAMESPACES = YES: We have several sub-namespaces so these are
            useful to document.
          + INPUT: Prepend "@top_builddir@/include/xapian/version.h" so that
            XAPIAN_HAS_FLINT_BACKEND, etc are defined before parsing other
            headers.
          + EXCLUDE: remove all entries and use EXCLUDE_PATTERNS instead.
          + EXCLUDE_PATTERNS: Include entries corresponding to those in EXCLUDE
            and add */derefwrapper.h and */.* (the latter avoids trying to look
            in .svn or any other hidden files or directories).
          + REFERENCES_LINK_SOURCE = NO: Improves output.
          + VERBATIM_HEADERS = NO: The verbatim headers aren't very
            interesting.
          + PREDEFINED: Define XAPIAN_VISIBILITY_DEFAULT and
            XAPIAN_DEPRECATED(D)=D as doxygen seem reluctant to parse included
            files.
          + EXPAND_AS_DEFINED: Remove XAPIAN_VISIBILITY_DEFAULT and
            XAPIAN_DEPRECATED as these are now handled by PREDEFINED.
          + EXTERNAL_GROUPS = NO, GROUP_GRAPHS = NO: We don't use groups so
            disable these.

Sun Jul 26 10:14:32 GMT 2009  Olly Betts <olly@survex.com>

        * docs/doxygen_api.conf.in,docs/doxygen_source.conf.in: Change
          @PACKAGE@ to @PACKAGE_NAME@ and @VERSION@ to @PACKAGE_VERSION@ to
          reflect modern autotools usage.

Fri Jul 24 16:23:31 GMT 2009  Olly Betts <olly@survex.com>

        * configure.ac,docs/: Rename doxygen configuration files from "_conf"
          to ".conf".  Rename doxygen_full.conf to doxygen_source.conf, etc.

Fri Jul 24 16:02:39 GMT 2009  Olly Betts <olly@survex.com>

        * HACKING: Update to note that doxygen is now installed in-tree, and
          that we now use 1.5.9 for 1.1.x snapshots and releases, and that
          graphviz ">1.8.10" is now required.

Fri Jul 24 16:01:31 GMT 2009  Olly Betts <olly@survex.com>

        * include/xapian/: Documentation comment tweaks.

Fri Jul 24 15:34:03 GMT 2009  Olly Betts <olly@survex.com>

        * include/xapian/unicode.h: Fix @param names to match parameter names.

Fri Jul 24 15:33:12 GMT 2009  Olly Betts <olly@survex.com>

        * docs/doxygen_api_conf.in: Major doxygen config overhaul:
          + STRIP_FROM_PATH: Strip include from header names.
          + JAVADOC_AUTOBRIEF: Re-enable as we have lost most of our brief
            descriptions - we can fix up the few cases where this caused
            problems with an explicit @brief.
          + BUILTIN_STL_SUPPORT: Enable for slightly STL-related stuff.
          + DISTRIBUTE_GROUP_DOC: Enable so group members get the group's
            comments.
          + EXTRACT_STATIC, EXTRACT_LOCAL_CLASSES: Disable since we don't
            need these.
          + SHOW_NAMESPACES: Disable to hide the "Xapian" namespace.
          + QUIET: Enable for less doxygen chatter.
          + WARN_LOGFILE: Unset so warnings go to stderr to encourage us to
            actually fix them!
          + EXCLUDE: Hide base.h, deprecated.h, errordispatch.h, visibility.h.
          + HTML_DYNAMIC_SECTIONS: Enable so the class diagrams are hidden by
            default but can be "expanded" to be viewed.
          + COLLABORATION_GRAPH: Disable as these don't ever seem useful in
            the API docs.
          + TEMPLATE_RELATIONS: Disable as we don't want to see template
            instantiations in inheritance diagrams.
          + DOT_MULTI_TARGETS: Enable for faster dot processsing.  Needs
            graphviz ">1.8.10", but that's really old now.

Fri Jul 24 13:00:24 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * bin/xapian-compact.cc: Fix to work with the metainfo key stored
          in the latest format of chert databases.

Fri Jul 24 10:32:32 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_values.cc: Avoid doing pointless work by trying
          to delete non-existent lists of values when we're just adding
          documents.

Fri Jul 24 05:32:34 GMT 2009  Olly Betts <olly@survex.com>

        * docs/doxygen_api_conf.in: Update with "doxygen -u" using doxygen
          1.5.9 and then trim trailing whitespace.

Thu Jul 23 04:10:49 GMT 2009  Olly Betts <olly@survex.com>

        * NEWS,configure.ac: Update for 1.1.2.

Wed Jul 22 13:58:13 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_databasereplicator.cc,
          backends/flint/flint_databasereplicator.cc: Prefer += to + for
          building up strings.

Wed Jul 22 09:01:57 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * backends/chert/chert_databasereplicator.cc,
          backends/flint/flint_databasereplicator.cc: Check result of
          ::open() for -1, and throw an error immediately if this happens,
          rather than leaving it to a later call to fail with EBADF.
          Should make it easier to diagnose problems, since we'll now see
          the reason that the open() failed.

Tue Jul 21 17:08:41 GMT 2009  Olly Betts <olly@survex.com>

        * NEWS: Update from ChangeLog and sync with 1.0.14.

Mon Jul 20 04:48:32 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/queryoptimiser.cc: Fix build with assertions enabled.

Mon Jul 20 04:47:33 GMT 2009  Olly Betts <olly@survex.com>

        * include/xapian/query.h: Update doc comment - OP_SYNONYM can take any
          number of subqueries too.

Sun Jul 19 17:26:53 GMT 2009  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc,include/xapian/query.h,matcher/localmatch.cc:
          Remove wqf member of Xapian::Query::Internal and store the wqf in
          the parameter member instead.  (ticket#280)

Sun Jul 19 17:24:02 GMT 2009  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc,include/xapian/query.h: Remove unused
          method Xapian::Query::Internal::swap().

Sun Jul 19 16:22:01 GMT 2009  Olly Betts <olly@survex.com>

        * api/valuerangeproc.cc,include/xapian/queryparser.h: Move support for
          a prefix/suffix from NumberValueRangeProcessor to
          StringValueRangeProcessor, and change NumberValueRangeProcessor and
          DateValueRangeProcessor to inherit from StringValueRangeProcessor so
          all three now support a prefix/suffix.  (ticket#220)
        * tests/queryparsertest.cc: Add test coverage for new features.

Sun Jul 19 16:05:04 GMT 2009  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Reenable tests which require the inmemory
          backend to be enabled by fixing typo XAPIAN_HAS_BACKEND_INMEMORY ->
          XAPIAN_HAS_INMEMORY_BACKEND.

Sun Jul 19 14:56:16 GMT 2009  Olly Betts <olly@survex.com>

        * api/documentvaluelist.cc: Use str() instead of om_tostring().

Sun Jul 19 14:42:15 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/msetcmp.cc: Eliminate two more relocations.

Sun Jul 19 13:46:08 GMT 2009  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc: Factor out "is_distributable()" function.

Sun Jul 19 11:11:06 GMT 2009  Olly Betts <olly@survex.com>

        * include/xapian/version_h.cc: Fix "dummy" -> "dummy[]" so the code
          here is valid C - we only preprocess it, but since the reason for
          having the dummy stuff at all is to avoid problems with "smart"
          preprocessors which moan if the code isn't valid, this seems worth
          fixing.

Sun Jul 19 10:21:41 GMT 2009  Olly Betts <olly@survex.com>

        * backends/flint/flint_database.cc: Backport the previous change to
          flint.

Sun Jul 19 08:04:48 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_database.cc: Instead of dynamically building a
          std::list of the leafnames we need to replicate, just list them in a
          compact format in the source file.  Results in smaller code and
          should be faster and smaller at runtime.

Sat Jul 18 17:12:58 GMT 2009  Olly Betts <olly@survex.com>

        * languages/compiler/generator.c: Merge among table entries which are
          substrings of others in the same among.  We could be much cleverer
          and merge between amongs, and allow overlaps, etc, but this get us
          a nice size reduction for a small amount of effort, so it'll do for
          now.

Sat Jul 18 15:42:48 GMT 2009  Olly Betts <olly@survex.com>

        * languages/compiler/generator.c,languages/steminternal.cc,
          languages/steminternal.h: Change how snowball generates the data used
          by among - instead of using pointers to the strings in struct among,
          store an offset into a constant pool, as this reduces the number of
          relocations from 5001 to 2706, which should decrease the time taken
          by the dynamic linker when loading the library.  This also results
          in slightly smaller code.

Fri Jul 17 16:32:02 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_nodb.cc: Check output of Stem::get_description() for each
          supported language.

Thu Jul 16 04:34:57 GMT 2009  Olly Betts <olly@survex.com>

        * common/fileutils.h: Remove unnecessary XAPIAN_VISIBILITY_DEFAULT
          (ticket#63).
        * common/fileutils.cc,common/fileutils.h: Make isabspath() static
          since it is only used by other functions in the same file.

Thu Jul 16 04:13:48 GMT 2009  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Fix comment typo.

Thu Jul 16 03:59:49 GMT 2009  Olly Betts <olly@survex.com>

        * api/sorter.cc,include/xapian/sorter.h: MultiValueSorter doesn't
          need an explicit dtor - it's enough that Sorter has a virtual dtor.

Thu Jul 16 03:29:41 GMT 2009  Olly Betts <olly@survex.com>

        * AUTHORS: Add Andreas Flöter for the Solaris package howto.

Wed Jul 15 14:37:19 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/rset.cc: Just pass pointer as AutoPtr constructor parameter
          rather constructing a temporary AutoPtr and invoking the assignment
          operator.

Wed Jul 15 03:43:35 GMT 2009  Olly Betts <olly@survex.com>

        * common/omenquireinternal.h: "class" -> "object" in doc comment.

Wed Jul 15 03:38:55 GMT 2009  Olly Betts <olly@survex.com>

        * tests/runtest.in: Raise the fd limit from 32 to 64 - multi_flint
          tests need more than 32 fds.

Tue Jul 14 20:32:52 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * api/omenquire.cc,common/omenquireinternal.h: Revert r13052, which
          changed Enquire::Internal::weight not to be mutable.  Expand the
          comment explaining why it's mutable.

Tue Jul 14 18:40:43 GMT 2009  Olly Betts <olly@survex.com>

        * tests/runtest.in: Use "ulimit -n" where available to limit the
          number of available file descriptors to 32 so we catch file
          descriptor leaks sooner.

Tue Jul 14 16:53:48 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * api/omenquire.cc,common/omenquireinternal.h: Tidy up mutable
          Weight member on Enquire::Internal class; make it non-mutable,
          and just make a temporary BM25Weight object if the weight member
          was NULL.

Tue Jul 14 12:36:46 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * common/output.h: Display a "<NULL $CLASSNAME>" message in debug
          output when a pointer being output is NULL.  Previously, NULL
          Query::Internal pointers were causing segfaults with debug
          logging for many tests (eg, emptyquery1).

Sun Jul 12 14:56:18 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_database.cc: We no longer have a "value" table
          (values are now stored in the postlist and termlist tables) so fix
          comments not to refer to it.

Sun Jul 12 14:47:17 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/: Add new ChertLazyTable class and subclass lazy
          tables from it so that we only need to implement the common
          differences once.

Sun Jul 12 13:41:27 GMT 2009  Olly Betts <olly@survex.com>

        * api/replication.cc: No point using join_paths() to append a literal
          leaf name, especially as we already don't elsewhere.

Sun Jul 12 12:01:25 GMT 2009  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Fix memory leak accidentally
          introduced in r13005.

Sun Jul 12 11:40:26 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_opsynonym.cc: Remove debug "cout" calls.

Sun Jul 12 09:43:06 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/queryoptimiser.cc: Don't just skip counting subqueries which
          are the RHS of OP_AND_NOT - skip based on factor == 0.0, which means
          we get the RHS of OP_FILTER too.
        * tests/api_percentages.cc: Add topercent4 as a regression test for
          this.

Sun Jul 12 09:32:11 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * matcher/andmaybepostlist.cc: Add DEBUGCALL macro to
          count_matching_subqs() to fix build with assertions.

Sun Jul 12 08:17:02 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/remotesubmatch.cc: Percentage scaling for remote results is
          handled in a different way, so replace FIXME with comment noting
          this.

Sun Jul 12 05:48:17 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Fix handling of percentage weights in various
          cases when we're searching multiple remote databases or a mix of
          local and remote databases.
        * tests/api_percentages.cc: Add regression test topercent3.

Sat Jul 11 13:35:02 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/mergepostlist.cc: Fix file description - MergePostList can
          merge any number of posting lists, not just two.

Sat Jul 11 13:09:40 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/extraweightpostlist.h:
          ExtraWeightPostList::read_position_list() and
          ExtraWeightPostList::open_position_list() aren't used, so remove
          them.

Sat Jul 11 12:54:30 GMT 2009  Olly Betts <olly@survex.com>

        * api/leafpostlist.cc,api/postlist.cc,common/leafpostlist.h,
          common/postlist.h,common/submatch.h,matcher/,tests/api_anydb.cc,
          tests/api_opsynonym.cc: Count how many leaf subqueries match for the
          document with the highest weight when calculating the percentage
          weights, instead of using the termlist of that document (ticket#363).
          Also fixes XOR with a SYNONYM subquery which could achieve 100%
          weight before.

Fri Jul 10 08:02:18 GMT 2009  Olly Betts <olly@survex.com>

        * api/omdatabase.cc,backends/chert/chert_spelling.cc,
          backends/flint/flint_spelling.cc,common/database.h: Deal with the
          case of get_spelling_suggestion() with an empty or single character
          word up front.

Thu Jul 09 16:20:47 GMT 2009  Olly Betts <olly@survex.com>

        * tests/harness/backendmanager_remotetcp.cc: In clean_up(), only scan
          through the pid_to_fd array once, and disable the signal handler
          and call waitpid() for any remaining pids ourselves, rather than
          calling sleep(1) and rechecking.  This should avoid pointless delays
          when the child hasn't exited when we first check.

Thu Jul 09 12:40:52 GMT 2009  Olly Betts <olly@survex.com>

        * tests/harness/: BackendManager has a virtual dtor, so we don't need
          empty virtual dtors in its subclasses.

Thu Jul 09 11:40:20 GMT 2009  Olly Betts <olly@survex.com>

        * tests/harness/backendmanager_remotetcp.cc,
          tests/harness/backendmanager_remotetcp.h: Move the
          BackendManagerRemoteTcp ctor back into the header now it is trivial
          again.

Wed Jul 08 16:56:53 GMT 2009  Olly Betts <olly@survex.com>

        * backends/flint/flint_io.h: Backport change to use F_FULLSYNC from
          chert.

Wed Jul 08 15:30:22 GMT 2009  Olly Betts <olly@survex.com>

        * configure.ac: Check that we can find the valgrind/memcheck.h header
          as well as the valgrind binary.

Wed Jul 08 14:30:53 GMT 2009  Olly Betts <olly@survex.com>

        * tests/harness/backendmanager_remotetcp.cc: Sort out the clash
          between two different patches to fix leaking file descriptors.
          Also, call clean_up() from the destructor to correctly handle the
          case when a BackendManagerRemoteTcp is created by a test case
          directly.

Wed Jul 08 14:17:43 GMT 2009  Olly Betts <olly@survex.com>

        * tests/harness/: Rename "posttest()" method to "clean_up()" - I keep
          thinking "power-on self-test".

Wed Jul 08 05:08:09 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_io.h: Use F_FULLFSYNC where available (Mac OS X
          currently).  (ticket#288)

Tue Jul 07 09:31:35 GMT 2009  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: If default_op is OP_NEAR or OP_PHRASE
          then make the default window size (9 + no_of_terms), like it would be
          for an explicit NEAR or PHRASE without an explicit window size.
          (ticket#254)
        * tests/queryparsertest.cc: Add feature tests for this.

Tue Jul 07 07:18:15 GMT 2009  Olly Betts <olly@survex.com>

        * HACKING,api/,backends/chert/,backends/flint/,
          backends/remote/remote-database.cc,common/,languages/steminternal.h,
          net/,queryparser/queryparser.cc,tests/harness/,tests/internaltest.cc,
          tests/perftest/freemem.cc,tests/perftest/perftest_randomidx.cc,
          tests/stemtest.cc,unicode/utf8itor.cc: Update to use C++ forms for
          ISO C standard headers (ticket#330).

Tue Jul 07 05:30:58 GMT 2009  Olly Betts <olly@survex.com>

        * backends/inmemory/inmemory_database.h: Use "omassert.h" not
          <omassert.h>.

Mon Jul 06 04:30:59 GMT 2009  Olly Betts <olly@survex.com>

        * AUTHORS: Add Rolf Köhling for fixes for Omega on MS Windows.

Sun Jul 05 16:28:54 GMT 2009  Olly Betts <olly@survex.com>

        * backends/flint/flint_database.cc,backends/flint/flint_database.h:
          Backport the lazyupdate changes from chert to flint.

Sun Jul 05 13:12:53 GMT 2009  Olly Betts <olly@survex.com>

        * tests/harness/backendmanager.cc,tests/harness/backendmanager.h: Move
          virtual destructor definition out of the header.

Sun Jul 05 04:09:04 GMT 2009  Olly Betts <olly@survex.com>

        * common/documentterm.h: Add const to OmDocumentTerm::get_wdf() method
          (ticket#139).

Sat Jul 04 16:45:43 GMT 2009  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Merge upstream "Check-in Number: 6757" - no
          functional changes in generated code for our parser.

Sat Jul 04 16:39:41 GMT 2009  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Merge upstream "Check-in Number: 6756" - no
          functional changes in generated code for our parser.

Sat Jul 04 16:36:59 GMT 2009  Olly Betts <olly@survex.com>

        * queryparser/lemon.c,queryparser/queryparser.lt: Merge upstream
          "Check-in Number: 6755" - no functional changes in generated code for
          our parser.

Sat Jul 04 16:29:24 GMT 2009  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Merge upstream "Check-in Number: 6754" - no
          changes in generated code for our parser.

Sat Jul 04 16:24:45 GMT 2009  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lt: Merge upstream "Check-in Number: 6749" -
          only changes are in code which isn't compiled due to preprocessor
          conditionals.

Sat Jul 04 16:02:08 GMT 2009  Olly Betts <olly@survex.com>

        * api/editdistance.cc: Add const to is_transposed() method
          (ticket#139).

Sat Jul 04 15:19:55 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_lock.h,backends/flint/flint_lock.h: Make
          ChertLock::operator bool() and FlintLock::operator bool() const
          (ticket#139).

Sat Jul 04 14:56:42 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_database.cc,backends/chert/chert_database.h,
          backends/flint/flint_database.cc,backends/flint/flint_database.h:
          Make ChertDatabase::get_changeset_revisions() and
          FlintDatabase::get_changeset_revisions() const (ticket#139).

Sat Jul 04 14:10:55 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_changesetapplier.h,
          backends/flint/flint_changesetapplier.h: "the the" -> "the" in
          comments.

Sat Jul 04 14:06:39 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_btreebase.cc,backends/chert/chert_btreebase.h:
          Make ChertTable_base::do_unpack_uint() just a static non-class
          function.  Use string::+= to build up the error string in it, and
          mark the error case as rare.

Wed Jul 01 04:12:22 GMT 2009  Olly Betts <olly@survex.com>

        * docs/spelling.rst: Omega now supports spelling correction.

Mon Jun 29 08:16:13 GMT 2009  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Reset the begin and end strings
          before trying the next ValueRangeProcessor in case they've been
          modified.
        * tests/queryparsertest.cc: Add regression tests and general coverage
          for this area.

Mon Jun 29 06:33:45 GMT 2009  Olly Betts <olly@survex.com>

        * backends/remote/net_postlist.cc: Remove unused '#include
          "serialise-double.h"'.

Mon Jun 29 06:32:52 GMT 2009  Olly Betts <olly@survex.com>

        * backends/remote/net_postlist.cc: Build up description string using
          +=.

Sun Jun 28 14:50:56 GMT 2009  Olly Betts <olly@survex.com>

        * backends/remote/net_postlist.h: Fix internal doc comment.

Sat Jun 27 13:35:45 GMT 2009  Olly Betts <olly@survex.com>

        * configure.ac: -Wshadow produces false positives with GCC 4.0, so
          only enable  it for >= 4.1 since we enable -Werror for
          maintainer-mode builds for GCC >= 4.0.

Sat Jun 27 13:30:22 GMT 2009  Olly Betts <olly@survex.com>

        * backends/multi/multi_termlist.cc,backends/multi/multi_termlist.h:
          Fix return type of MultiTermList::positionlist_count() to be
          Xapian::termcount rather than Xapian::termpos.

Sat Jun 27 12:50:17 GMT 2009  Olly Betts <olly@survex.com>

        * backends/flint/flint_alltermslist.h,backends/flint/flint_postlist.cc,
          backends/flint/flint_postlist.h: Fix to use Xapian::doccount for
          termfreq in flint too.

Sat Jun 27 12:28:47 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_alltermslist.cc: Prefer 'str.resize(0)' to
          'str = ""'.

Sat Jun 27 12:16:17 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_alltermslist.h,backends/chert/chert_postlist.h:
          Fix to use Xapian::doccount for termfreq in more places.

Sat Jun 27 11:51:25 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_table.cc: Change so add_item_to_block() can
          always assume there is another contiguous space in the block
          (previously it could assume that there was enough space, but not
          that it was necessarily contiguous).

Sat Jun 27 09:55:19 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/postingsource.h,include/xapian/weight.h: Add note
          that PostingSource and Weight objects returned by clone() and
          unserialise() methods will be deallocated with "delete".

Sat Jun 27 07:26:41 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_postlist.cc: Adjust use of Xapian::doccount vs
          Xapian::termcount for consistency so things work better when these
          types aren't identical.

Sat Jun 27 01:48:39 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * api/matchspy.cc: Remove unused matchspy.cc - there is an updated
          version of this on the matchspy branch; having an old copy here
          is just likely to lead to confusion.

Fri Jun 26 05:42:26 GMT 2009  Olly Betts <olly@survex.com>

        * api/documentvaluelist.cc,api/documentvaluelist.h: Change
          DocumentValueList::skip_to()'s parameter type from Xapian::valueno
          to Xapian::docid to agree with the type in ValueList::skip_to().
          This is a latent bug - it doesn't matter provided the types are
          actually the same (ticket#385).

Thu Jun 25 11:20:07 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/phrasepostlist.cc: Use Xapian::termcount(1) instead of 1u
          so that the code doesn't assume Xapian::termcount is unsigned int.

Sun Jun 21 12:09:55 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_check.cc,backends/chert/chert_table.cc,
          backends/chert/chert_table.h: Replace duplicated macros with
          a single version in chert_table.h, and use DIR_START instead of
          a literal 11 in that header.
        * backends/chert/chert_table.h: Add more assertions.  Use
          BYTES_PER_BLOCK_NUMBER instead of a literal 4 in more places.

Sat Jun 20 07:38:56 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_table.cc,backends/flint/flint_table.cc: Fix
          misspelling in comment (neccessary -> necessary).

Sat Jun 20 07:38:06 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_table.cc: Don't reconstruct Item(p, c) when we
          already have it as a local variable.

Wed Jun 17 01:23:16 GMT 2009  Olly Betts <olly@survex.com>

        * common/str.cc: Fix potential warning in signed version of str().

Tue Jun 16 11:20:43 GMT 2009  Olly Betts <olly@survex.com>

        * tests/harness/testsuite.cc,tests/harness/testsuite.h: Factor out
          writing out what was sent to tout and clearing it into a new
          method test_driver::write_and_clear_tout().
        * tests/harness/testsuite.cc: Prefer string() to "".  When sending a
          colour change code, do it before the preceding space when that allows
          string literals to be merged.  Always give the full exception message
          (was conditional on --verbose).  Tidy up output for reporting the
          various different exception types and other failures to give more
          consistent output.

Tue Jun 16 11:01:14 GMT 2009  Olly Betts <olly@survex.com>

        * tests/harness/scalability.cc: Increase the number of tests until the
          first sample takes more than 0.001 seconds to avoid trying to base
          calculations on a length of time we probably can't reliably measure
          to start with.

Tue Jun 16 10:58:34 GMT 2009  Olly Betts <olly@survex.com>

        * tests/harness/cputimer.cc: Don't bother trying to count CPU time
          for child processes, as it's hard to ensure that the child processes
          have finished with the current framework, and just counting time in
          the current process checks most things (the local backend tests cover
          much of the work done by the server part of the remote backend).

Tue Jun 16 02:15:31 GMT 2009  Olly Betts <olly@survex.com>

        * tests/harness/cputimer.h: Don't need '#include <ctime>'.

Tue Jun 16 02:10:29 GMT 2009  Olly Betts <olly@survex.com>

        * tests/harness/cputimer.h: Fix naming of header multiple-inclusion
          protection macro.

Sun Jun 14 14:11:51 GMT 2009  Olly Betts <olly@survex.com>

        * tests/internaltest.cc: In testcase serialisequery1, use a helper
          function rather than wasting effort building a std::list with all the
          testcases in just so we can iterate over them.

Sun Jun 14 13:52:22 GMT 2009  Olly Betts <olly@survex.com>

        * tests/harness/testsuite.cc: <iomanip> isn't used so remove it.

Sun Jun 14 13:30:34 GMT 2009  Olly Betts <olly@survex.com>

        * tests/harness/testsuite.h: Fix comment typo.

Sat Jun 13 06:30:57 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_anydb.cc: Fix reversed conditional in last but one change.

Sat Jun 13 04:42:27 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_anydb.cc: Use TEST_EQUAL_DOUBLE() when comparing
          get_max_attained() to allow for rounding differences.

Sat Jun 13 04:39:49 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_anydb.cc: Use "startswith()" rather than comparing an
          extracted substring.

Fri Jun 12 12:45:37 GMT 2009  Olly Betts <olly@survex.com>

        * tests/harness/backendmanager_remotetcp.cc: Fix the mechanism for
          closing the file descriptors used by child xapian-tcpsrv processes
          once they exit, which has been broken ever since it was added nearly
          two years ago (sigh).  Fixes fd leaking which caused "apitest
          -bremotetcp" to fail on OpenBSD (ticket#382).

Fri Jun 12 03:37:13 GMT 2009  Olly Betts <olly@survex.com>

        * tests/harness/backendmanager_remotetcp.cc: Fix comment typo.

Wed Jun 10 04:29:43 GMT 2009  Olly Betts <olly@survex.com>

        * common/serialise-double.cc,common/serialise-double.h: Relicense as
          MIT/X rather than GPLv2+ as these are low level routines which other
          projects may find useful.

Tue Jun 09 14:34:20 GMT 2009  Olly Betts <olly@survex.com>

        * NEWS: Update for 1.1.1.

Tue May 26 14:55:05 GMT 2009  Olly Betts <olly@survex.com>

        * configure.ac: Update version to 1.1.1.

Tue May 26 14:49:23 GMT 2009  Olly Betts <olly@survex.com>

        * NEWS: Lick into shape.

Mon May 25 11:55:59 GMT 2009  Olly Betts <olly@survex.com>

        * PLATFORMS: Sync with changes in 1.0 version.

Mon May 25 10:57:59 GMT 2009  Olly Betts <olly@survex.com>

        * common/weightinternal.h: Remove declarations of unimplemented
          constructors (ticket#379).

Sat May 23 16:06:05 GMT 2009  Olly Betts <olly@survex.com>

        * NEWS: Update from 1.0.13 and ChangeLog.

Sat May 23 15:35:39 GMT 2009  Olly Betts <olly@survex.com>

        * HACKING: ValueIterator is now a PIMPL class like TermIterator, etc.

Sat May 23 05:24:33 GMT 2009  Olly Betts <olly@survex.com>

        * docs/postingsource.rst: Since we are sticking with an recursive
          maxweight recalculation for now, add back a warning about the
          potential overhead from calling set_maxweight() very frequently,
          with an informed estimate for the worst case overhead.

Fri May 22 11:44:04 GMT 2009  Olly Betts <olly@survex.com>

        * backends/inmemory/inmemory_database.cc: We can trivially make
          Database::metadata_keys_begin() work for inmemory in the special
          case when there are no keys, so do so.
        * tests/api_metadata.cc: Add test coverage for this case.

Fri May 22 09:31:07 GMT 2009  Olly Betts <olly@survex.com>

        * configure.ac: Only bother passing -Winit-self for GCC >= 4.3, as it
          doesn't do anything for GCC <= 4.4 anyway.

Fri May 22 07:00:29 GMT 2009  Olly Betts <olly@survex.com>

        * backends/flint/flint_version.h: Initialise filename using + not +=.
          Fix odd whitespace in recent change.

Fri May 22 05:27:56 GMT 2009  Olly Betts <olly@survex.com>

        * AUTHORS: Update.

Fri May 22 05:24:19 GMT 2009  Olly Betts <olly@survex.com>

        * api/postingsource.cc,common/multimatch.h,matcher/multimatch.cc:
          Replace MultiMatch::reduce_maxweight_by() with a call to
          MultiMatch::recalc_maxweight() and inline the later from the header.

Fri May 22 05:16:03 GMT 2009  Olly Betts <olly@survex.com>

        * configure.ac: Enable more GCC warnings - "-Woverloaded-virtual" for
          all versions, "-Wstrict-null-sentinel" for 4.0+, "-Wlogical-op
          -Wmissing-declarations" for 4.3+.  Notably "-Wmissing-declarations"
          caught that consistency2 wasn't being run.

Fri May 22 05:15:08 GMT 2009  Olly Betts <olly@survex.com>

        * languages/steminternal.cc,languages/steminternal.h: Inline simple
          Stem::Internal::Internal() constructor from header.

Thu May 21 16:23:26 GMT 2009  Olly Betts <olly@survex.com>

        * tests/harness/backendmanager_remotetcp.cc: Make on_SIGCHLD() static.

Thu May 21 16:22:56 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_wrdb.cc: Fix testcase consistency2 to actually be run.

Thu May 21 16:22:30 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_transdb.cc: Add missing '#include "api_transdb.h"'.

Thu May 21 12:58:22 GMT 2009  Olly Betts <olly@survex.com>

        * backends/databasereplicator.cc: Don't bother to check if the
          database path works in stat() and is a directory - the case we want
          to be fast is when the database does exist, and if path +
          "/iamflint" (or "iamchert") exists, then the check for path being a
          directory is redundant.  If the path isn't a flint or chert database
          then a generic message including the path seems sufficient.

Thu May 21 09:17:15 GMT 2009  Olly Betts <olly@survex.com>

        * backends/databasereplicator.cc,common/databasereplicator.h: Inline
          empty DatabaseReplicator default ctor.

Thu May 21 08:25:24 GMT 2009  Olly Betts <olly@survex.com>

        * api/replication.cc: Cache the result of get_replica_path() when we
          are going to need it again.

Thu May 21 08:09:51 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_databasereplicator.h,
          backends/flint/flint_databasereplicator.h: Correct parent class name
          in doxygen comments.

Thu May 21 08:08:06 GMT 2009  Olly Betts <olly@survex.com>

        * HACKING: Update list of Debian/Ubuntu packages needed to for a
          development environment.

Thu May 21 06:28:00 GMT 2009  Olly Betts <olly@survex.com>

        * backends/databasereplicator.cc: Fix nested comment start introduced
          by the previous commit.

Thu May 21 06:21:39 GMT 2009  Olly Betts <olly@survex.com>

        * api/replication.cc,backends/databasereplicator.cc,
          common/databasereplicator.h: We only keep one pointer to a
          DatabaseReplicator, so use AutoPtr not RefCntPtr.

Thu May 21 05:00:17 GMT 2009  Olly Betts <olly@survex.com>

        * api/replication.cc: Fix SEGV when calling get_description() on a
          default constructed DatabaseReplica.
        * tests/generate-api_generated: Test DatabaseReplica (regression test
          for the above bug) and SerialisationContext.   Fix @file in the
          generated api_generated.cc.  Update (C) dates in generated
          api_generated.cc.

Thu May 21 03:58:59 GMT 2009  Olly Betts <olly@survex.com>

        * tests/generate-api_generated: Call get_description() on the default
          constructed object to make sure that works (and doesn't try to
          dereference NULL, or fail some assertion, etc).  All currently
          checked classes are fine - this is to avoid future regressions or
          such problems with new classes.

Wed May 20 14:19:54 GMT 2009  Olly Betts <olly@survex.com>

        * net/tcpclient.cc,net/tcpserver.cc: Fix xapian-tcpsrv --interface
          option to work on MacOS X (ticket#373).

Wed May 20 13:58:09 GMT 2009  Olly Betts <olly@survex.com>

        * api/omdatabase.cc,api/sortable-serialise.cc,backends/chert/,
          backends/flint/,backends/remote/remote-database.cc,
          common/serialise-double.cc,common/str.cc,
          matcher/exactphrasepostlist.cc,net/remoteconnection.cc,
          net/remoteserver.cc: Replace C-style casts.  Add a few missing casts.
          Tweak types used in a few places.

Wed May 20 13:55:41 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_databasereplicator.cc,
          backends/flint/flint_databasereplicator.cc: Need <cstdio> for
          rename().  Replace C-style cast to off_t.

Wed May 20 13:53:25 GMT 2009  Olly Betts <olly@survex.com>

        * api/editdistance.cc: Make edist_state class uncopyable and
          unassignable.  Initialise maxdist in the initialiser list.

Wed May 20 11:19:53 GMT 2009  Olly Betts <olly@survex.com>

        * languages/steminternal.cc,languages/steminternal.h: Change C-style
          casts to C++-style ones.

Wed May 20 10:40:03 GMT 2009  Olly Betts <olly@survex.com>

        * common/str.h: Add static_cast<char>() to suppress bogus MSVC
          warning (ticket#377).

Tue May 19 15:26:39 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/,backends/flint/,common/rset.h,tests/api_anydb.cc:
          Pass std::string by const reference rather than value (except in
          a few cases where we need a modifiable copy anyway) as benchmarking
          shows this is better even with GCC's reference counted std::string
          implementation (ticket#140).
        * tests/api_anydb.cc: Use string() instead of "" for an empty string.

Tue May 19 08:47:55 GMT 2009  Olly Betts <olly@survex.com>

        * api/omquery.cc,include/xapian/query.h: Make Xapian::Query::MatchAll
          and Xapian::Query::MatchNothing const since they're immutable.  All
          the public methods are const, so this should be completely API
          compatible.

Tue May 19 06:25:26 GMT 2009  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Document what passing maxitems=0 to
          get_mset() does.

Mon May 18 13:32:49 GMT 2009  Olly Betts <olly@survex.com>

        * include/xapian/database.h: Correct doxygen comments for user
          metadata functions: get_metadata() can't throw UnimplementedError
          but set_metadata() can.
        * include/xapian/database.h,tests/api_metadata.cc: Document that
          metadata_keys_begin() returns an end iterator if the backend doesn't
          support metadata, and add test coverage for this case.
        * backends/inmemory/inmemory_database.cc,
          backends/inmemory/inmemory_database.h,include/xapian/database.h,
          tests/api_metadata.cc,tests/harness/testrunner.cc: The test harness
          didn't have the inmemory backend flagged as supporting
          user-specified metadata, and so it's perhaps not a great surprise to
          discover that inmemory doesn't support it fully - you can't iterate
          over metadata keys, but instead get an empty iteration.  Fix this
          to at least throw UnimplementedError and document that this is the
          situation.

Mon May 18 11:29:10 GMT 2009  Olly Betts <olly@survex.com>

        * tests/Makefile.am,tests/api_metadata.cc,tests/api_wrdb.cc: Split out
          tests of user metadata into their own file.

Sun May 17 12:52:41 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/: Add a new constructor to MultiAndPostList for the "decay
          from OrPostList or AndMaybePostList" case which takes the already
          know max weights to avoid having to refetch them.  Also, we know
          that the subpostlists of OrPostList are ordered a particular way
          so can avoid needing to check the order in that case.

Sat May 16 05:02:35 GMT 2009  Olly Betts <olly@survex.com>

        * backends/flint/flint_version.cc: Fix comment - this file doesn't
          use memcpy() now.

Thu May 14 04:38:47 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_percentages.cc: Remove superfluous explicit std::
          qualifiers.

Thu May 14 04:36:29 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_percentages.cc: Update for the PostingSource
          get_maxweight() API changes.

Tue May 12 14:50:57 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Rename "max_weight" variable to "max_possible"
          since that is what it is referred to via the MSet API.

Tue May 12 12:38:11 GMT 2009  Olly Betts <olly@survex.com>

        * common/safeuuid.h: Fix length of buffer to lower case - it's
          36, not sizeof(uuid_t).

Tue May 12 02:49:34 GMT 2009  Olly Betts <olly@survex.com>

        * common/safeuuid.h,configure.ac: Older versions of libuuid don't have
          uuid_unparse_lower() so probe for it in configure, and if it isn't
          present provide an inline version in safeuuid.h (ticket#368).

Mon May 11 13:07:47 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_postingsource.cc: In changemaxweightsource1, set
          descending docid order so that the matcher isn't able to terminate
          early after 4 documents just because weight == maxweight.

Mon May 11 12:00:04 GMT 2009  Olly Betts <olly@survex.com>

        * net/serialise.cc: Build up string using +=.

Mon May 11 11:39:49 GMT 2009  Olly Betts <olly@survex.com>

        * docs/postingsource.rst: Improve documentation for get_maxweight().

Mon May 11 11:26:02 GMT 2009  Olly Betts <olly@survex.com>

        * include/xapian/postingsource.h: Initialise max_weight_ to 0 in the
          PostingSource constructor in case nobody else sets a value for it.

Mon May 11 10:54:47 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_postingsource.cc: Fix class name in FAIL_TEST message.

Mon May 11 10:41:31 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_postingsource.cc: Fix get_termfreq_min(), etc for
          ChangeMaxweightPostingSource to return 4 not 5.

Mon May 11 09:03:14 GMT 2009  Olly Betts <olly@survex.com>

        * api/postingsource.cc: Remove assertion checking that set_maxweight()
          doesn't set a lower weight - it legitimately can when we call init()
          on a non-clone-able PostingSource for reuse.

Mon May 11 03:12:00 GMT 2009  Olly Betts <olly@survex.com>

        * api/postingsource.cc,common/multimatch.h,docs/postingsource.rst,
          include/xapian/postingsource.h,matcher/externalpostlist.cc,
          matcher/externalpostlist.h,matcher/msetpostlist.cc,
          tests/api_postingsource.cc: Replace PostingSource's
          notify_new_maxweight() and virtual get_maxweight() mechanism with a
          non-virtual set_maxweight() and get_maxweight().  Currently the
          plumbing at the matcher end is much as before, but this API seems
          more obvious to the user and will allow the matcher to simply reduce
          its maximum weight value rather than having to recursively call
          recalc_maxweight() in response to this situation (ticket#340).

Mon May 11 02:38:26 GMT 2009  Olly Betts <olly@survex.com>

        * docs/postingsource.rst: Fix a typo and reword to avoid "namespaced".

Mon May 11 02:30:59 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/msetpostlist.cc: Fix typo - MSetPostList::get_maxweight()
          with a sort ordered primarily by decreasing relevance was returning
          the docid for the maxweight!  This could have led to wrong results
          when searching multiple databases with the remote backend, but
          probably usually didn't matter as with BM25 the weights are usually
          small (often all < 1) while docids are inevitably >= 1.  No
          regression test for this (currently anyway).

Sun May 10 07:49:11 GMT 2009  Olly Betts <olly@survex.com>

        * backends/dbfactory.cc: Fix comment typo.

Sat May 09 14:15:38 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_collapse.cc,tests/perftest/runprocess.cc: Remove unused
          include of <iostream>.

Sat May 09 14:03:34 GMT 2009  Olly Betts <olly@survex.com>

        * api/omquery.cc,matcher/andnotpostlist.cc,
          queryparser/termgenerator_internal.cc,tests/api_wrdb.cc: Remove
          unused inclusions of <algorithm>.

Sat May 09 13:47:54 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Remove unused inclusion of <queue>.

Sat May 09 13:38:02 GMT 2009  Olly Betts <olly@survex.com>

        * api/omquery.cc,api/omqueryinternal.cc,api/replication.cc,
          backends/alltermslist.cc,backends/chert/chert_table.cc,
          backends/flint/flint_table.cc,bin/xapian-compact.cc,
          common/bitstream.cc,common/inmemory_positionlist.h,
          common/positionlist.h,matcher/localmatch.h,matcher/queryoptimiser.cc,
          matcher/queryoptimiser.h,tests/api_wrdb.cc: Remove unused inclusions
          of <list>, <map>, <string>, and <vector>.

Sat May 09 12:48:18 GMT 2009  Olly Betts <olly@survex.com>

        * api/documentvaluelist.cc,matcher/queryoptimiser.cc: Remove unused
          '#include "autoptr.h"'.

Sat May 09 09:41:03 GMT 2009  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony,queryparser/termgenerator.cc,
          weight/bm25weight.cc,weight/boolweight.cc,weight/tradweight.cc:
          Remove unneeded explicit "std::" qualifiers.

Sat May 09 09:35:32 GMT 2009  Olly Betts <olly@survex.com>

        * weight/weight.cc: Doesn't use '#include "autoptr.h"'.

Fri May 08 19:59:00 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * configure.ac: Change source file which autoconf looks for, since
          I've just removed the old one that it looked for!

Fri May 08 19:28:31 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * matcher/andmaybepostlist.cc,matcher/branchpostlist.h: Call
          check() instead of skip_to() on the optional branch of AND_MAYBE.
          This can be much faster if that branch is a posting source.

Fri May 08 18:31:01 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * matcher/: Remove AndPostList, in favour of MultiAndPostList.
          AndPostList was only used as a decay product (by AndMaybePostList
          and OrPostList); for most queries, MultiAnd has pretty much
          indistinguishable performance as far as I can test; however, it
          uses check() when possible, which makes performance much better
          with searches involving external posting sources.  Removal also
          reduces the amount of code cluttering up the caches during a
          search, so may help speed things up in some other situations.

Fri May 08 16:00:42 GMT 2009  Olly Betts <olly@survex.com>

        * api/postingsource.cc,backends/inmemory/inmemory_database.cc,
          examples/delve.cc,include/xapian/postingsource.h: Don't store an
          end iterator in a variable just to compare against it - it's now
          definitely more efficient to compare against the return value of
          the relevant _end() method.

Fri May 08 15:44:07 GMT 2009  Olly Betts <olly@survex.com>

        * api/valueiterator.cc,include/xapian/database.h,
          include/xapian/document.h,include/xapian/valueiterator.h: Create a
          new proxy object class ValueIteratorEnd_ which is returned instead
          of ValueIterator(NULL) for end iterators.  This class will be
          converted to ValueIterator(NULL) if assigned to or passed as
          ValueIterator, but operator== and operator!= are overloaded to
          handle it directly which means that the compiler no longer calls
          ~ValueIterator for each call which returns ValueIterator(NULL).

Fri May 08 15:42:12 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_values.cc: Swap two statements for cosmetic
          reasons.

Fri May 08 14:42:49 GMT 2009  Olly Betts <olly@survex.com>

        * api/postingsource.cc,include/xapian/postingsource.h: It is actually
          better not to store the end iterator in a member variable - if we
          explicitly call db.postlist_end(string()) then that just gets
          optimised to PostingSource(NULL).

Fri May 08 14:02:21 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_postingsource.cc: We've decided that "going back" with
          skip_to() or check() should have unspecified behaviour, so stop
          testing how this case behaves!

Fri May 08 12:37:33 GMT 2009  Olly Betts <olly@survex.com>

        * common/Makefile.mk: Ship common/win32_uuid.cc and common/win32_uuid.h
          (ticket#367).

Fri May 08 12:30:45 GMT 2009  Olly Betts <olly@survex.com>

        * tests/harness/cputimer.cc: Fix typo in the "ftime" case.

Fri May 08 10:25:37 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * matcher/andpostlist.cc: Fix a swap which was the wrong way round,
          so that we call next() on the subpostlist with the lower
          frequency, rather than the one with the higher frequency.  This
          should improve performance in many situations, and I don't think
          it's likely to slow anything down.  It also fixes some cases
          where optimisation of an AND_MAYBE to an AND results in a slower
          search, such that search times went down when more hits were
          requested.

Fri May 08 08:48:14 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/externalpostlist.cc: ExternalPostList::get_doclength()
          should never get called, so make it "Assert(false)".

Fri May 08 05:16:50 GMT 2009  Olly Betts <olly@survex.com>

        * api/postingsource.cc: Another string concatention.

Fri May 08 05:04:55 GMT 2009  Olly Betts <olly@survex.com>

        * api/postingsource.cc: Use str() instead of om_tostring() and build
          up strings using +=.

Fri May 08 04:37:05 GMT 2009  Olly Betts <olly@survex.com>

        * api/postingsource.cc: "using namespace std;".

Thu May 07 16:46:14 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/: Check for collection_size == 0 up front so we don't need
          to repeatedly special case it when implementing
          get_termfreq_est_using_stats().

Thu May 07 16:28:07 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/xorpostlist.cc: Fix typo bug - collection_size should be
          rset_size.  This would have lead to a floating point division by
          zero when XOR was used under a synonym without an RSet, but that
          would just give infinity, and so just give a bogus value for the
          rel_termfreq rather than aborting instantly.

Thu May 07 16:19:52 GMT 2009  Olly Betts <olly@survex.com>

        * HACKING: Update auto_ptr information.  Mention constructor syntax as
          an alternative replacement for some C-style casts.

Thu May 07 15:25:00 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/localmatch.cc,matcher/localmatch.h: Don't rebuild the
          termname -> termfreq and weight map for every subdatabase - just do
          it once for the first one.  Also eliminate a copy of this map.
          This should speed up searches a little, especially those over
          multiple databases.

Thu May 07 15:01:24 GMT 2009  Olly Betts <olly@survex.com>

        * api/omdatabase.cc,api/omqueryinternal.cc,
          backends/remote/remote-database.cc,common/autoptr.h,
          expand/esetinternal.cc,matcher/localmatch.cc: Make our AutoPtr just
          a macro wrapper for std::auto_ptr.  Since std::auto_ptr doesn't
          allow assignment from a raw pointer, this requires changing such
          assignments into calls to auto_ptr::reset().

Thu May 07 14:19:22 GMT 2009  Olly Betts <olly@survex.com>

        * api/leafpostlist.cc: Add an assertion that the term in the stats.
          Add "using namespace std;" so we can avoid explicit std:: qualifiers.

Thu May 07 13:26:21 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/: Eliminate EmptySubMatch - we can just store NULL for a
          submatch which has failed but which ErrorHandler told us to continue
          without.

Thu May 07 12:52:24 GMT 2009  Olly Betts <olly@survex.com>

        * common/database.h: Update internal documentation comment -
          Database::Internal::open_post_list() can no longer return
          EmptyPostList as it is no longer a subclass of LeafPostList.

Thu May 07 12:13:50 GMT 2009  Olly Betts <olly@survex.com>

        * api/leafpostlist.cc,backends/chert/chert_postlist.cc,
          backends/chert/chert_postlist.h,
          backends/flint/flint_alldocspostlist.h,
          backends/flint/flint_postlist.cc,backends/flint/flint_postlist.h,
          backends/inmemory/inmemory_database.cc,
          backends/inmemory/inmemory_database.h,backends/remote/net_postlist.h,
          common/contiguousalldocspostlist.h,common/leafpostlist.h: Squash
          TermBasedLeafPostList into LeafPostList since there are no longer
          any other subclasses.

Thu May 07 11:49:06 GMT 2009  Olly Betts <olly@survex.com>

        * api/Makefile.mk,api/emptypostlist.cc,common/emptypostlist.h:
          Reimplement EmptyPostList from scratch, and inherit from PostList
          not LeafPostList.

Thu May 07 11:19:34 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/mergepostlist.cc: Add explicit '#include "omassert.h"'.

Thu May 07 10:28:33 GMT 2009  Olly Betts <olly@survex.com>

        * backends/multi/multi_postlist.cc,backends/multi/multi_postlist.h:
          Subclass MultiPostList directly from PostList instead of from
          LeafPostList.  This gets rid of two unused data members per
          MultiPostList in exchange for having to define 5 extra "never
          called" methods, but 4 of these just tailcall.

Thu May 07 10:26:39 GMT 2009  Olly Betts <olly@survex.com>

        * backends/inmemory/inmemory_alltermslist.cc,
          backends/inmemory/inmemory_database.cc: Fix assertion failures and
          a SEGV in an assertion test.

Thu May 07 09:27:35 GMT 2009  Olly Betts <olly@survex.com>

        * backends/inmemory/inmemory_alltermslist.cc,
          backends/inmemory/inmemory_alltermslist.h,
          backends/inmemory/inmemory_database.cc:
          Keep a dummy entry in InMemoryDatabase::postlists so that the
          implementation of InMemoryAllTermsList doesn't need a "started"
          flag, and we can use an InMemoryPostList on the dummy item for
          the "term not in database" case.

Thu May 07 05:45:48 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_backend.cc: Add tset coverage for alldocs iterator on an
          empty database.
        * backends/inmemory/inmemory_database.cc: No need to special case an
          empty database as InMemoryAllDocsPostList handles this case
          correctly.

Thu May 07 05:08:07 GMT 2009  Olly Betts <olly@survex.com>

        * weight/weightinternal.cc: Use str() instead of om_tostring(), += to
          build up strings, and fix a cut-and-paste comment error.

Wed May 06 13:03:40 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * net/serialise.cc: Better serialisation - don't include the
          reltermfreqs if the rset_size is 0, since they'll all be 0 too.

Wed May 06 12:13:52 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * common/remoteprotocol.h,net/serialise.cc: When serialising stats,
          serialise the termfreq and reltermfreq together, rather than in
          separate lists.  Results in a smaller serialised form, and
          matches the in-memory structure now used better. Fixes ticket
          #362.  This is an incompatible remote protocol change, however,
          so bump the major version to 32.

Wed May 06 04:02:43 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Check termfreqandwts for MatchAll queries
          before we check terms from the document so that the "terminate
          early once we've seen all the query terms" test when checking the
          document terms can fire in this case.

Wed May 06 03:26:05 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Remove incorrect comment accidentally
          committed in r12623.

Wed May 06 03:18:42 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_opsynonym.cc: Fix comment typo.

Wed May 06 01:35:14 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * tests/api_postingsource.cc: changemaxweightsource1 uses
          ChangeMaxweightPostingSource, which doesn't work with multi or
          remote, so mark the test accordingly.

Wed May 06 01:11:25 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/postingsource.h,api/postingsource.cc: Add
          notify_new_maxweight() method to be called by subclasses when they
          want to notify the matcher that their maxweight has changed
          significantly.  Add ExternalPostList as a friend and add
          register_externalpl() to be used to associate the ExternalPostList
          with the PostingSource.
        * matcher/externalpostlist.cc,matcher/externalpostlist.h,
          matcher/queryoptimiser.cc: Register the externalpostlist with the
          PostingSource it's iterating through.  Add
          ExternalPostList::notify_new_maxweight() method for
          PostingSource::notify_new_maxweight() to call.
        * docs/postingsource.rst: Document notify_new_maxweight() and the
          reasons for calling it.
        * tests/api_postingsource.cc: Test the handling of maxweight.

Tue May 05 19:37:56 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * tests/Makefile.am,tests/api_db.cc,tests/api_postingsource.cc:
          Split the tests of PostingSource subclasses out of api_db.cc; I'm
          about to add some more, and bloating api_db.cc further is
          unworkable.

Tue May 05 18:23:02 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * docs/postingsource.rst,include/xapian/postingsource.h:
          Documentation updates to describe way that init() is called
          again if a PostingSource is reused.  Fixes #352.

Tue May 05 16:05:48 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * tests/api_opsynonym.cc: Test that the top document has a weight
          of 100%, which is should do for all the current examples here.

Tue May 05 16:03:29 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * matcher/multimatch.cc: Add logging to keep track of the weights
          being added to percent_scale.  If the percent_scale total is 0.0,
          which can happen if the top document only matches synonym terms,
          force percent_scale to 1.0, to avoid an assertion failure.

Tue May 05 13:41:57 GMT 2009  Olly Betts <olly@survex.com>

        * common/str.h: Fix swapped parameters in string ctor in code for
          str(bool) overload which lead to us returning 48 or 49 \x01
          characters instead of "0" or "1".
        * tests/internaltest.cc: Add regression test strbool1.
        * AUTHORS: Thank Peter Kelm for helping us spot this.

Tue May 05 12:54:36 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        Merge from opsynonym branch:
        * queryparser/queryparser.lemony: Use OP_SYNONYM instead of OP_OR
          for synonyms, wildcards, and partial queries.
        * tests/queryparsertest.cc: Test use of OP_SYNONYM by query parser.

Tue May 05 12:18:06 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        Merge from opsynonym branch:
        * api/omqueryinternal.cc,include/xapian/query.h,matcher/,
          weight/weight.cc: Implement a new OP_SYNONYM query operator,
          which behaves similarly to OP_OR, but produces weights for the
          combined set of terms as if they were a single term (by merging
          their wdfs).
        * tests/Makefile.am,tests/api_opsynonym.cc: Add tests for the
          OP_SYNONYM operator.
        * include/xapian/weight.h: Add a Weight::init_() method for
          synonym, since there isn't a single term involved.  Also,
          requires a method get_sumpart_needs_wdf_() to check if wdfs are
          needed, since the synonym weight calculation requires fetching
          the doclength, which is potentially expensive, in order that the
          wdf returned can be clamped to a sane range.  Mark the weighting
          methods which require WDF with need_stat(WDF).

Tue May 05 12:04:33 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * common/remoteprotocol.h: Add comment to remind use to do the
          FIXME in serialise_stats() when next breaking remote protocol
          compatibility.

Tue May 05 10:53:11 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * common/output.h: Add output function for TermFreqs.

Tue May 05 08:23:28 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * api/leafpostlist.cc,api/postlist.cc,common/emptypostlist.h,
          common/leafpostlist.h,common/postlist.h,matcher/: Add
          PostList::get_termfreq_est_using_stats() method, with default
          implementation which raises an InvalidOperationError.  Implement
          this for those postlists which it makes sense for.  Also,
          implement get_wdf() for postlists used by the matcher for
          implementing various query operators.  This isn't currently used
          or tested on trunk, but is used for the opsynonym branch.

Tue May 05 07:37:04 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * common/rset.h,common/weightinternal.h,matcher/rset.cc,
          net/serialise.cc,weight/weightinternal.cc: Store termfreqs and
          reltermfreqs in a Weight::Internal in a single map; introduce a
          new struct (TermFreqs) for the values stored here.
          Remove now unused Xapian::TermFreqMap typedef.

Tue May 05 07:19:19 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * backends/chert/chert_postlist.cc,backends/chert/chert_postlist.h,
          backends/flint/flint_alldocspostlist.h,
          backends/flint/flint_postlist.cc,backends/flint/flint_postlist.h,
          backends/inmemory/inmemory_database.cc,
          backends/inmemory/inmemory_database.h,backends/remote/net_postlist.h,
          common/contiguousalldocspostlist.h,common/leafpostlist.h:
          Introduce TermBasedLeafPostList, as a new common base class for
          postlists which are derived from a term in the query (including
          alldocs postlists which are derived from the empty term).

Tue May 05 06:47:11 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/,backends/flint/flint_modifiedpostlist.cc,
          backends/flint/flint_postlist.cc,backends/flint/flint_postlist.h:
          Rename "tname" parameters to LeafPostList subclasses to "term".
        * backends/inmemory/inmemory_database.cc,
          backends/inmemory/inmemory_database.h: Rename term parameter of
          type InMemoryTerm to imterm ready for opsynonym branch changes.

Tue May 05 04:51:28 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_alldocspostlist.h,matcher/multimatch.cc:
          Remove unused '#include "leafpostlist.h"'.

Tue May 05 02:15:35 GMT 2009  Olly Betts <olly@survex.com>

        * common/contiguousalldocspostlist.h: Wrap comment.

Tue May 05 02:04:02 GMT 2009  Olly Betts <olly@survex.com>

        * common/Makefile.mk: Move str.h into alphabetical order.

Mon May 04 12:04:16 GMT 2009  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Rename qp_stem_scale1 to qp_scale1 as it
          has no connection with stemming.  Factor out a helper function to
          do the timing comparison, and update time_query_parse() to use
          CPUTimer rather than OmTime.  Tweak the "fudge factor" up from
          2 to 2.15 to allow for non-equal ticks due to rounding of an
          interval which isn't an exact multiple of 1/CLK_TCK (ticket#308).

Mon May 04 12:02:32 GMT 2009  Olly Betts <olly@survex.com>

        * tests/harness/cputimer.cc: If we don't have rusage() or times(), but
          do have ftime(), use that instead of time() so we at least get
          subsecond resolution (as we do currently with OmTime).

Mon May 04 03:31:51 GMT 2009  Olly Betts <olly@survex.com>

        * docs/queryparser.html: Add examples of using a prefix on a phrase
          or subexpression.

Sun May 03 14:58:42 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_valuestats.cc: Testcase valuestats4 requires transactions,
          so indicate that and remove the explicit SKIP for inmemory.

Sun May 03 12:34:30 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * common/rset.h,common/weightinternal.h,matcher/rset.cc,
          weight/weightinternal.cc: Typedef std::map<string, Xapian::doccount>
          as TermFreqMap; tidies up code a little here, but mainly useful
          for keeping code tidy on branches/opsynonym.

Sun May 03 11:49:08 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * common/multimatch.h: Remove unused include of <map>

Sun May 03 05:23:32 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_db.cc: Protect tests which assume Flint is enabled with
          #ifdef XAPIAN_HAS_FLINT_BACKEND.

Sat May 02 15:49:46 GMT 2009  Olly Betts <olly@survex.com>

        * configure.ac,tests/Makefile.am,tests/api_scalability.cc,
          tests/api_wrdb.cc,tests/harness/: Add new "test_scalability()" helper
          function which checks that an operation scales in CPU time used in
          the desired way.  Use this to reimplement bigoaddvalue (and rename
          to bigoaddvalue1 for consistency).

Fri May 01 04:58:41 GMT 2009  Olly Betts <olly@survex.com>

        * bin/xapian-check.cc: For chert, check value stats are the correct
          format and that the streamed values are consistent with their stats
          (ticket#277).

Fri May 01 04:53:22 GMT 2009  Olly Betts <olly@survex.com>

        * api/omdocument.cc: Don't ever store empty values explicitly, which
          eliminates an inconsistently handled corner case which was causing
          the "value frequency" to be wrong from at least one point of view.
          This is consistent with how user metadata works too.
        * include/xapian/document.h: Explicitly document this behaviour.
        * tests/api_valuestats.cc: Add regression test for the above change.

Fri May 01 03:11:25 GMT 2009  Olly Betts <olly@survex.com>

        * bin/xapian-check.cc: Chert doesn't store termlist entries for
          documents without terms, which resulted in us reporting an error when
          we found document ids in the doclength "postlist" which were greater
          than any with an entry in the termlist.  Instead compare these
          entries against db.get_last_docid() if we are checking a whole db
          and able to call it.  If not, suppress this check.

Thu Apr 30 15:02:41 GMT 2009  Olly Betts <olly@survex.com>

        * common/valuestats.h: Fix comment typo.

Tue Apr 28 14:01:41 GMT 2009  Olly Betts <olly@survex.com>

        * api/omdatabase.cc: Use <cstdlib> rather than <stdlib.h> which means
          that there's an overload for abs(long).

Tue Apr 28 13:17:48 GMT 2009  Olly Betts <olly@survex.com>

        * HACKING,INSTALL,configure.ac,include/xapian/deprecated.h,
          include/xapian/version_h.cc,tests/harness/testsuite.cc: Actually,
          let's require GCC 3.1 as doing so eliminates some preprocessor
          conditionals which we aren't able to test regularly as we don't
          have easy access to such old GCC versions.  GCC 3.1 is nearly 7
          years old now, and GCC3 didn't get widespread use until later
          versions anyway.

Tue Apr 28 12:47:11 GMT 2009  Olly Betts <olly@survex.com>

        * common/debuglog.h: Add missing initialisation of uncaught_exception
          in a couple of places.

Tue Apr 28 11:24:02 GMT 2009  Olly Betts <olly@survex.com>

        * INSTALL: Note that Xapian 1.0.x should build with GCC 2.95.3.

Tue Apr 28 11:20:51 GMT 2009  Olly Betts <olly@survex.com>

        * HACKING,INSTALL,backends/chert/chert_database.h,
          backends/flint/flint_database.h,
          backends/inmemory/inmemory_database.h,configure.ac,
          include/xapian/version_h.cc,tests/harness/testsuite.cc: Drop support
          for GCC 2.95.3 - we now require at least 3.0.

Mon Apr 27 12:20:25 GMT 2009  Olly Betts <olly@survex.com>

        * include/xapian/weight.h: Add "need_stat(WDF);" for Weight subclasses
          which use wdf.  Currently this is never actually checked by trunk
          (so a regression test for this omission isn't really feasible), but
          the opsynonym branch uses it.

Sun Apr 26 14:47:57 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * weight/bm25weight.cc: Add call debugging.

Sun Apr 26 10:57:48 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_db.cc: stubdb6 is "inmemory" not "flint || chert || multi".

Sun Apr 26 10:51:50 GMT 2009  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Fix to build with the inmemory backend
          disabled.

Sun Apr 26 07:28:47 GMT 2009  Olly Betts <olly@survex.com>

        * tests/generate-api_generated: Fix so generated api_generated.cc
          builds with the inmemory backend disabled.

Sun Apr 26 06:30:57 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_anydb.cc: Fix to build with the inmemory backend disabled.

Sat Apr 25 01:10:49 GMT 2009  Olly Betts <olly@survex.com>

        * bin/xapian-check.cc: Fix to build with the flint and/or chert
          backends disabled.

Sat Apr 25 01:06:00 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Fix to build with the remote backend
          disabled.

Sat Apr 25 00:57:41 GMT 2009  Olly Betts <olly@survex.com>

        * backends/dbfactory.cc: Fix to build with the inmemory backend
          disabled.

Fri Apr 24 22:59:34 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * weight/weight.cc: Add debug logging to Weight::init_() methods.
        * net/remoteserver.cc: Fix bounds returned by Weight::Internal
          object in get_mset() in remote submatches, by setting the
          database used to read the bounds.

Fri Apr 24 13:14:50 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/branchpostlist.cc,matcher/branchpostlist.h: Remove
          BranchPostList::get_wdf() which isn't currently used, and isn't
          wanted on branches/opsynonym.

Fri Apr 24 12:46:18 GMT 2009  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Apply doxygen comment improvement
          from branches/opsynonym.

Fri Apr 24 12:31:15 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/localmatch.cc: Apply assertion and debug logging
          improvements from branches/opsynonym.

Thu Apr 23 06:16:05 GMT 2009  Olly Betts <olly@survex.com>

        * Makefile.am,configure.ac,docs/Makefile.am,tests/Makefile.am: Fix
          things up so that in a bootstrapped SVN tree, automatic regeneration
          of autotools-generated files uses the in-tree versions of the
          autotools.

Thu Apr 23 04:37:31 GMT 2009  Olly Betts <olly@survex.com>

        * AUTHORS: Add another bug reporter.

Thu Apr 23 04:26:25 GMT 2009  Olly Betts <olly@survex.com>

        * Makefile.am,languages/Makefile.mk,queryparser/Makefile.mk,
          tests/Makefile.am,tests/perftest/Makefile.mk: Don't remove any
          built sources in "make clean" even under --make-maintainer-mode
          as that breaks switching a tree away from maintainer-mode with:
          make distclean;./configure

Thu Apr 23 03:51:03 GMT 2009  Olly Betts <olly@survex.com>

        * Makefile.am: Use "--coverage" instead of "-fprofile-arcs
          -ftest-coverage" in the test coverage build.

Wed Apr 22 14:32:56 GMT 2009  Olly Betts <olly@survex.com>

        * PLATFORMS: Sync with 1.0.12; add entry for atreus for 1.1.0.

Wed Apr 22 14:27:36 GMT 2009  Olly Betts <olly@survex.com>

        * AUTHORS: Add more bug reporters and patch contributors.  Remove a
          duplicate entry.

Wed Apr 22 13:58:31 GMT 2009  Olly Betts <olly@survex.com>

        * NEWS: Set release date.

Wed Apr 22 13:36:04 GMT 2009  Olly Betts <olly@survex.com>

        * NEWS: Update, perhaps even ready for release now.

Wed Apr 22 11:00:50 GMT 2009  Olly Betts <olly@survex.com>

        * NEWS: More work.

Tue Apr 21 17:59:13 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * docs/queryparser.html: Add closing <code> tag.

Tue Apr 21 11:05:17 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * NEWS: A few minor corrections and adjustments.

Tue Apr 21 07:49:49 GMT 2009  Olly Betts <olly@survex.com>

        * include/xapian/weight.h: Don't use the term "term" to talk about the
          extra weight component as it already has a strong meaning in Xapian.

Tue Apr 21 07:16:18 GMT 2009  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Merge upstream "Check-in Number: 6451".

Tue Apr 21 06:54:00 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/queryoptimiser.h: '#include <map>' isn't required.

Tue Apr 21 06:45:14 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/queryoptimiser.cc,matcher/queryoptimiser.h: Eliminate
          QueryOptimiser::do_leaf() as it is only called from one place
          and if only two lines of code.

Mon Apr 20 14:10:08 GMT 2009  Olly Betts <olly@survex.com>

        * NEWS: Update from ChangeLog and start to lick into shape for a
          release.

Mon Apr 20 13:06:17 GMT 2009  Olly Betts <olly@survex.com>

        * HACKING: XAPIAN_DEBUG_LOG=- send output to stderr, not stdout.

Mon Apr 20 11:53:07 GMT 2009  Olly Betts <olly@survex.com>

        * common/output.h: Add new macro XAPIAN_OUTPUT_FUNCTION_PTR and use it
          so that debug logging of Xapian::Query::Internal* doesn't just
          report the pointer value.

Mon Apr 20 06:39:42 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Apply debug logging change lifted from
          branches/opsynonym.

Mon Apr 20 05:22:24 GMT 2009  Olly Betts <olly@survex.com>

        * tests/harness/testutils.cc: Add FIXME comments about use of internal
          macro from a different header.

Mon Apr 20 05:08:34 GMT 2009  Olly Betts <olly@survex.com>

        * HACKING: Update release checklist.

Sun Apr 19 14:50:08 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * tests/api_nodb.cc: Stick the reciprocal of "factor" into a
          volatile double temporary variable to stop compiler using
          extended precision calculation on x86, and coming up an answer of
          exactly 1.0 when multiplying by "factor" again.

Sun Apr 19 14:26:09 GMT 2009  Olly Betts <olly@survex.com>

        * NEWS: Sync with 1.0.12 and update from ChangeLog.

Sun Apr 19 12:12:19 GMT 2009  Olly Betts <olly@survex.com>

        * AUTHORS: Update for 1.0 branch.

Thu Apr 16 12:08:24 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_values.cc: When copying the tail of a value
          chunk because did > last_allowed_did, we don't need to check if
          the docids being copied are < did, since they should all be <=
          last_allowed_did, so just assert the latter.

Tue Apr 14 20:32:41 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * tests/api_wrdb.cc: patch from james to move logging in
          modifyvalues1 so it reports the values it's rewriting correctly,
          rather than the empty string.  Also display the expected value in
          tout when checking the value.  Also, pull the setting of the random
          seed out to the start of the function, and set it to 7 (which
          exposed the bug fixed with the previous commit, which that the old
          value of 42 didn't, on my machine, at least).

Tue Apr 14 18:12:08 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * backends/chert/chert_values.cc: When we move the reader to a new
          chunk, write any trailing values left in it to the stream first.

Thu Apr 09 05:01:04 GMT 2009  Olly Betts <olly@survex.com>

        * docs/admin_notes.rst: Document the child process used for locking
          which exec-s "cat" (ticket #258).

Thu Apr 09 03:49:13 GMT 2009  Olly Betts <olly@survex.com>

        * bin/: Use C++ forms of C headers in bin (ticket#330).

Thu Apr 09 03:47:42 GMT 2009  Olly Betts <olly@survex.com>

        * examples/: Use C++ forms of C headers in examples (ticket#330).

Mon Apr 06 06:35:03 GMT 2009  Olly Betts <olly@survex.com>

        * include/xapian/unicode.h: Fix documentation comment typos.

Mon Apr 06 06:03:45 GMT 2009  Olly Betts <olly@survex.com>

        * AUTHORS: Add Muayyad Alsadi for reporting #355.

Mon Apr 06 05:59:38 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_unicode.cc: Note which characters in the new
          unicodepredicate1 testcase are new in Unicode 5.1.0.

Sun Apr 05 14:24:47 GMT 2009  Olly Betts <olly@survex.com>

        * include/xapian/unicode.h: Add NON_SPACING_MARK to is_wordchar() for
          better tokenisation of Arabic, for example.  (ticket#355)
        * tests/queryparsertest.cc: Add test that this has the desired effect.
        * tests/api_unicode.cc: Add feature tests of Unicode::is_wordchar(),
          Unicode::is_currency(), and Unicode::is_whitespace().

Sat Apr 04 05:41:47 GMT 2009  Olly Betts <olly@survex.com>

        * NEWS: Update from ChangeLog.

Wed Apr 01 00:18:02 GMT 2009  Olly Betts <olly@survex.com>

        * bin/xapian-compact.cc: Fix totlen overflow test.  Refactor lightly
          to reduce indenting.

Tue Mar 31 17:01:20 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * bin/xapian-compact.cc: Handle databases which contain no
          documents (and hence have no METAINFO item), but do contain some
          metadata (so the postlist table is not empty).  Fixes ticket
          #356.

Tue Mar 31 13:49:01 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * api/postingsource.cc,include/xapian/postingsource.h: Change
          return types of clone() and unserialise() methods to be of the
          subclass returned; this is a bit more flexible, but the main
          reason is to be consistent: previously, the clone() methods
          returned the subclass, but the unserialise() methods returned
          PostingSource.

Tue Mar 31 12:10:03 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/postingsource.h: Add comment on PostingSource base
          class listing it as an experimental feature.
        * docs/deprecation.rst: Describe what "experimental" features are,
          and why replication and posting sources are currently
          experimental.

Tue Mar 31 11:34:25 GMT 2009  Olly Betts <olly@survex.com>

        * include/xapian/matchspy.h: Removed currently unused header to stop
          doxygen from generating documentation for it.

Tue Mar 31 11:27:54 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * docs/replication.rst,include/xapian/replication.h: Note that
          replication is currently "experimental".

Fri Mar 27 14:29:05 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_spelling.cc,backends/chert/chert_spelling.h,
          backends/flint/flint_spelling.cc,backends/flint/flint_spelling.h:
          Fix WritableDatabase::remove_spelling() to not be very broken in
          several ways.
        * tests/api_spelling.cc: Add test coverage for it.

Fri Mar 27 10:43:34 GMT 2009  Olly Betts <olly@survex.com>

        * xapian-config.in: Add @LIBRARY_VERSION_SUFFIX@ to -lxapian too.

Fri Mar 27 08:22:39 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/postingsource.h: Update documentation comments to
          refer to init() instead of the old name of reset().

Fri Mar 27 08:10:48 GMT 2009  Olly Betts <olly@survex.com>

        * HACKING: Document the lcov make targets.

Fri Mar 27 07:44:59 GMT 2009  Olly Betts <olly@survex.com>

        * Makefile.am: Add two new targets to assist generating test coverage
          reports with lcov: coverage-reconfigure which reruns configure in
          the source tree and coverage-check which runs "make check" and
          generates an HTML report in a directory called "lcov".

Thu Mar 26 23:59:36 GMT 2009  Olly Betts <olly@survex.com>

        * Makefile.am,m4-macros/xapian.m4,xapian-core.spec.in: Rename
          xapian.m4 to xapian-1.1.m4 to avoid clash with Xapian 1.0.x.  Both
          xapian.m4 and xapian-1.1.m4 will contain XO_LIB_XAPIAN, but aclocal
          copes and only copies one of them.  We need to avoid incompatible
          changes to XO_LIB_XAPIAN though.

Thu Mar 26 14:29:54 GMT 2009  Olly Betts <olly@survex.com>

        * configure.ac,include/Makefile.mk,xapian-config.in: Install headers
          in $prefix/include/xapian-1.1/ so they don't clash with 1.0.

Thu Mar 26 13:46:06 GMT 2009  Olly Betts <olly@survex.com>

        * configure.ac: Default program suffix to -1.1 if not specified.  If
          you really want no suffix, "./configure --program-suffix=" will
          achieve that.

Thu Mar 26 12:49:10 GMT 2009  Olly Betts <olly@survex.com>

        * Makefile.am,api/Makefile.mk,backends/Makefile.mk,
          backends/chert/Makefile.mk,backends/flint/Makefile.mk,
          backends/inmemory/Makefile.mk,backends/multi/Makefile.mk,
          backends/remote/Makefile.mk,bin/Makefile.mk,common/Makefile.mk,
          configure.ac,examples/Makefile.mk,expand/Makefile.mk,
          languages/Makefile.mk,matcher/Makefile.mk,net/Makefile.mk,
          queryparser/Makefile.mk,tests/Makefile.am,tests/perftest/Makefile.mk,
          unicode/Makefile.mk,weight/Makefile.mk,xapian-config.in,
          xapian-core.spec.in: Change library name to libxapian-1.1 as a first
          step towards allowing parallel installation with 1.0.x.

Thu Mar 26 06:53:27 GMT 2009  Olly Betts <olly@survex.com>

        * NEWS: Update from ChangeLog.

Thu Mar 26 06:50:44 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_values.h: Fix class name in file doc comment.

Thu Mar 26 00:13:48 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_database.cc,backends/flint/flint_database.cc:
          Call ChertDatabase::close() rather than repeating its code.

Wed Mar 25 17:39:01 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * backends/chert/chert_database.cc,backends/flint/flint_database.cc:
          Release the lock when the database is closed (either due to a
          call to close() or due to a serious error during modifications).
          Should fix ticket #354.

Wed Mar 25 16:42:58 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * tests/harness/testutils.cc: Use TEST_EQUAL_DOUBLE_ for comparison
          of weights in mset, to fix test failures due to floating point
          differences.  (Currently only manifests in some tests in the
          matchspy branch, but it's a generally useful fix.)

Wed Mar 25 11:44:36 GMT 2009  Olly Betts <olly@survex.com>

        * configure.ac: Only put ANSI_CXXFLAGS in CXXFLAGS for the duration of
          configure - put it in AM_CXXFLAGS for substituting so that the user
          can safely override CXXFLAGS at make-time: "make CXXFLAGS=-Os"

Wed Mar 25 10:50:44 GMT 2009  Olly Betts <olly@survex.com>

        * configure.ac: Fix comment typo.

Wed Mar 25 04:48:50 GMT 2009  Olly Betts <olly@survex.com>

        * api/omdatabase.cc,backends/chert/chert_database.h,
          backends/flint/flint_database.h,
          backends/inmemory/inmemory_database.h,
          backends/remote/remote-database.cc,common/const_database_wrapper.h,
          common/database.h: Drop the default value of the lazy parameter to
          Database::open_document() - it's better to force us to consider
          whether a new call should be lazy or not.
        * common/database.h: Better description of lazy parameter.
        * backends/remote/remote-database.cc: Update comment about when lazy
          is set to true.

Wed Mar 25 04:20:34 GMT 2009  Olly Betts <olly@survex.com>

        * backends/inmemory/inmemory_database.cc: Don't "return false" when
          the return type is a pointer!

Tue Mar 24 17:42:22 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * backends/database.cc: Open documents lazily in
          collect_document().

Tue Mar 24 11:10:57 GMT 2009  Olly Betts <olly@survex.com>

        * backends/multi/multi_postlist.cc,backends/multi/multi_postlist.h:
          MultiPostList::read_position_list() is never used, so remove it.

Tue Mar 24 10:04:03 GMT 2009  Olly Betts <olly@survex.com>

        * backends/multi/multi_postlist.cc: Remove "[" and "]" from the output
          of MultiPostList::get_description().  Remove excess "," from output
          of MultiPostList::get_description().
        * tests/api_db.cc: Add some test coverage of
          PostingIterator::get_wdf() and PostingIterator::get_description().

Tue Mar 24 10:00:23 GMT 2009  Olly Betts <olly@survex.com>

        * api/ompostlistiterator.cc: Remove "[" and "]" from
          Xapian::PostingIterator::get_description() as they don't add
          anything useful.

Tue Mar 24 09:57:39 GMT 2009  Olly Betts <olly@survex.com>

        * backends/inmemory/inmemory_database.cc: Add a space in the output
          of InMemoryPostList::get_description() and
          InMemoryAllDocsPostList::get_description().

Tue Mar 24 08:52:46 GMT 2009  Olly Betts <olly@survex.com>

        * api/leafpostlist.cc,include/xapian/weight.h,tests/api_db.cc,weight/:
          Get rid of the virtual Weight::get_sumpart_needs_doclength() method
          - subclasses can call need_stat(DOC_LENGTH) in their constructor if
          they need doc lengths.

Tue Mar 24 07:55:06 GMT 2009  Olly Betts <olly@survex.com>

        * weight/weight.cc: Check stats_needed for stats which aren't just a
          simple member variable lookup.

Tue Mar 24 06:46:24 GMT 2009  Olly Betts <olly@survex.com>

        * backends/multi/multi_postlist.cc,backends/multi/multi_postlist.h:
          MultiPostList::get_termfreq() is never used, so remove it.

Mon Mar 23 14:09:33 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_unicode.cc: Add test coverage for
          Xapian::Unicode::append_utf8().

Mon Mar 23 11:40:09 GMT 2009  Olly Betts <olly@survex.com>

        * api/postingsource.cc,docs/postingsource.rst,
          include/xapian/postingsource.h,matcher/externalpostlist.cc,
          tests/api_db.cc,tests/api_percentages.cc,tests/api_valuestream.cc:
          Rename PostingSource::reset() to PostingSource::init().

Mon Mar 23 11:01:02 GMT 2009  Olly Betts <olly@survex.com>

        * tests/harness/testsuite.h: Fix documentation comment in line with
          the corrected --help output from "Sat Feb 21 08:18:21 GMT 2009".

Mon Mar 23 02:24:44 GMT 2009  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc: Fix handling of empty and single subquery
          OP_NEAR and OP_PHRASE (was breaking queryparsertest).

Sun Mar 22 10:23:37 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_database.cc,backends/flint/flint_database.cc,
          backends/inmemory/inmemory_database.cc,
          backends/inmemory/inmemory_positionlist.cc,
          common/inmemory_positionlist.h,docs/deprecation.rst,
          tests/api_posdb.cc: Change Database::positionlist_begin() not to
          throw exceptions if the term or document doesn't exist.

Sun Mar 22 09:02:46 GMT 2009  Olly Betts <olly@survex.com>

        * docs/deprecation.rst: Fix typo.

Sun Mar 22 07:54:30 GMT 2009  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc,include/xapian/query.h,tests/api_nodb.cc,
          tests/api_query.cc: Fix valgrind errors on nearsubqueries1
          (ticket#349) and enhance distribution of OP_NEAR/OP_PHRASE over
          non-leaf subqueries to work when there are multiple non-leaf
          subqueries (ticket#201).  Extend nearsubqueries1 to test that
          trying to distribute OP_NEAR/OP_PHRASE over OP_NEAR/OP_PHRASE
          throws UnimplementedError.

Fri Mar 20 08:43:20 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_query.cc: Add coverage for OP_AND with MatchNothing
          subquery (new testcase matchnothing1).

Fri Mar 20 05:16:18 GMT 2009  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc: Fix assertions in previous check-in to
          verify the right condition.  And return the simplified query in
          the case the assertion would have failed, as that means a small
          memory leak rather than unpredictable behaviour in a non-assertion
          build.

Fri Mar 20 04:26:29 GMT 2009  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc: Check that end_construction() returns NULL
          when unserialising queries.

Fri Mar 20 02:51:32 GMT 2009  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc: Fix return type of
          Xapian::Query::Internal::simplify_query() in a debug build.  Since
          RETURN() isn't used by this function, this is only a cosmetic issue
          in the log file.

Wed Mar 18 09:26:02 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_database.cc,backends/flint/flint_database.cc,
          docs/deprecation.rst: Move just returning an empty PositionIterator
          from Database::positionlist_begin() when the docs or term isn't
          present from 1.2.0 to 1.1.0 (has to be 1.1.0 or 1.3.0 really).

Wed Mar 18 09:24:27 GMT 2009  Olly Betts <olly@survex.com>

        * docs/glossary.rst: Chert as the default backend in 1.2.0 is pretty
          much definite.

Wed Mar 18 06:42:09 GMT 2009  Olly Betts <olly@survex.com>

        * NEWS: Update from ChangeLog.

Wed Mar 18 04:36:59 GMT 2009  Olly Betts <olly@survex.com>

        * xapian-core.spec.in: Tweak reference to "1.1.0 branch" to make more
          sense.

Wed Mar 18 04:30:18 GMT 2009  Olly Betts <olly@survex.com>

        * api/postingsource.cc,include/xapian/postingsource.h: Remove the
          optional "max_weight_" parameter to ValuePostingSource's ctor.
        * include/xapian/postingsource.h: Correct a few errors in
          documentation comments.

Wed Mar 18 04:29:22 GMT 2009  Olly Betts <olly@survex.com>

        * docs/postingsource.rst: "ctx" -> "context" in example code.

Tue Mar 17 23:45:52 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_lock.cc,backends/flint/flint_lock.cc: If the
          locking attempt fails after we spawn the child process, call
          waitpid() in the parent process to avoid creating a zombie process.
        * AUTHORS: Add Jim Spath for reporting this.

Tue Mar 17 23:34:16 GMT 2009  Olly Betts <olly@survex.com>

        * common/Makefile.mk,common/str.cc,common/str.h: New family of
          overloaded str() functions for converting types to std::string.
          The integer conversion are much faster than the existing
          om_tostring().
        * common/omassert.h,common/omdebug.h: Use str() instead of
          om_tostring().
        * common/utils.cc,common/utils.h: Make om_tostring() a macro wrapping
          str() for now to avoid introducing a lot of conflicts with other
          branches and unapplied patches.

Tue Mar 17 21:28:54 GMT 2009  Olly Betts <olly@survex.com>

        * configure.ac: Fix comment typo.

Tue Mar 17 00:47:26 GMT 2009  Olly Betts <olly@survex.com>

        * common/utils.cc: Fix previous change to actually compile...

Mon Mar 16 20:10:01 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * common/utils.cc,common/utils.h: Add om_tostring() version of
          unsigned long long int, to fix debug build on i686.

Mon Mar 16 14:01:02 GMT 2009  Olly Betts <olly@survex.com>

        * NEWS: Sync with 1.0.11.

Fri Mar 13 06:59:29 GMT 2009  Olly Betts <olly@survex.com>

        * weight/weightinternal.cc: Need "utils.h" for om_tostring().

Fri Mar 13 05:47:24 GMT 2009  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: Note that QueryParser::FLAG_DEFAULT
          was new in 1.0.11.

Fri Mar 13 04:36:19 GMT 2009  Olly Betts <olly@survex.com>

        * weight/weightinternal.cc: Implement
          Weight::Internal::get_description().

Thu Mar 12 11:57:02 GMT 2009  Olly Betts <olly@survex.com>

        * common/output.h: Fix last commit.

Thu Mar 12 11:29:58 GMT 2009  Olly Betts <olly@survex.com>

        * common/output.h: Define operator<< for Xapian::Weight::Internal.

Thu Mar 12 11:21:09 GMT 2009  Olly Betts <olly@survex.com>

        * net/remoteserver.cc: Fix overlooked case which was still sending
          REPLY_DOCLENGTH as a double.

Wed Mar 11 22:56:59 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_valuelist.cc: Fix comment typo.

Wed Mar 11 22:50:49 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * tests/api_valuestream.cc: Enable valuestream3 for chert.
        * backends/chert/chert_valuelist.cc: Fix return value of
          ChertValueList::check() when it needs to move to a new chunk.
          Fixes valuestream3 test.

Wed Mar 11 13:17:58 GMT 2009  Olly Betts <olly@survex.com>

        * include/xapian/weight.h: Mark Weight::init_() methods as "@private
          @internal" for doxygen API docs.

Wed Mar 11 13:13:32 GMT 2009  Olly Betts <olly@survex.com>

        * include/xapian/weight.h,tests/api_db.cc,tests/api_nodb.cc,
          weight/bm25weight.cc,weight/boolweight.cc,weight/tradweight.cc:
          Make Weight::name() return std::string to allow sane wrapping
          with SWIG directors.

Wed Mar 11 05:46:40 GMT 2009  Olly Betts <olly@survex.com>

        * api/,backends/chert/,backends/contiguousalldocspostlist.cc,
          backends/flint/,backends/inmemory/inmemory_database.cc,
          backends/inmemory/inmemory_database.h,
          backends/multi/multi_postlist.cc,backends/multi/multi_postlist.h,
          backends/remote/,common/,docs/remote_protocol.html,
          include/xapian/database.h,include/xapian/postingiterator.h,matcher/,
          net/remoteserver.cc: Internally, pass around non-normalised document
          lengths as Xapian::termcount (unsigned integer) not Xapian::doclength
          (double).

Wed Mar 11 05:25:40 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_anydb.cc: Use TEST_REL; wrap long comment.

Wed Mar 11 04:52:41 GMT 2009  Olly Betts <olly@survex.com>

        * Makefile.am,api/,backends/chert/,backends/database.cc,
          backends/flint/flint_database.cc,backends/flint/flint_database.h,
          backends/inmemory/inmemory_database.cc,
          backends/inmemory/inmemory_database.h,
          backends/remote/remote-database.cc,common/,docs/remote_protocol.html,
          examples/delve.cc,include/Makefile.mk,include/xapian.h,
          include/xapian/database.h,include/xapian/enquire.h,
          include/xapian/weight.h,matcher/,net/remoteserver.cc,
          net/serialise.cc,tests/,weight/: Reimplementation of weighting
          schemes which allows user subclasses to access the same stats which
          built in schemes can (bug#213) and which also can use lower and
          upper bounds of doclength and upper bounds on wdf to give a tighter
          maxweight, which should allow the matcher weight-based optimisations
          to be more effective.  Chert now tracks doclength bounds and a
          global (rather than per term) bound on wdf.  Other backends
          return much less good bounds, but these still lead to better
          maxweight bounds.

Wed Mar 11 00:13:24 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/query.h: Rename parameter name from "ctx" to the
          more human-friendly "context".

Tue Mar 10 14:03:33 GMT 2009  Olly Betts <olly@survex.com>

        * tests/harness/testutils.cc: If mset_range_is_same_percents() fails
          because the percentages differ, report what they were to tout.

Mon Mar 09 12:27:28 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/localmatch.cc: Remove special case handling for empty string
          being returned from the TermIterator returned by
          Query::Internal::get_terms() as this should no longer happen.

Mon Mar 09 12:09:21 GMT 2009  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc: Don't return "" from a TermIterator from
          Query::get_terms_begin() (happened when Query contained or was
          Query::MatchAll).
        * tests/Makefile.am,tests/api_query.cc: Add regression testcase
          queryterms1.

Sun Mar 08 06:16:24 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_backend.cc: Add check that backends don't truncate total
          document length to 32 bits.

Sun Mar 08 06:02:43 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_backend.cc: Disable lockfileumask1 on Cygwin and on OS/2.

Sun Mar 08 05:36:54 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/extraweightpostlist.h: Add forward declaration of
          Xapian::Weight since we use "Xapian::Weight *".

Sun Mar 08 04:39:22 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_types.h,backends/flint/flint_types.h,
          bin/xapian-check-flint.cc,bin/xapian-check.cc,bin/xapian-compact.cc,
          common/Makefile.mk,common/database.h,common/internaltypes.h:
          Move totlen_t to a new header (internaltypes.h) to avoid needing to
          pull in database.h in when we want to use it.  Also move int4 and
          uint4 there to avoid duplicated definitions and abstract out a
          new uint8 from defining totlen_t.

Sun Mar 08 00:50:38 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_database.h,backends/chert/chert_types.h,
          backends/flint/flint_database.h,backends/flint/flint_types.h,
          bin/xapian-check-flint.cc,bin/xapian-check.cc,bin/xapian-compact.cc,
          common/database.h: Replace flint_totlen_t and chert_totlen_t with
          a common totlen_t.

Sat Mar 07 08:35:27 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_database.cc: Wrap comment.

Sat Mar 07 08:28:17 GMT 2009  Olly Betts <olly@survex.com>

        * backends/inmemory/inmemory_database.h: Fix file description
          ("multiple database" -> "inmemory database").

Sat Mar 07 08:25:11 GMT 2009  Olly Betts <olly@survex.com>

        * backends/inmemory/inmemory_database.cc,
          backends/inmemory/inmemory_database.h: Store non-normalised document
          lengths as Xapian::termcount (unsigned int) rather than
          Xapian::doclength (double).

Sat Mar 07 06:56:26 GMT 2009  Olly Betts <olly@survex.com>

        * common/database.h: Removed unused forward declarations of classes.

Sat Mar 07 06:52:11 GMT 2009  Olly Betts <olly@survex.com>

        * common/database.h: Fix comment typo.

Sat Mar 07 05:44:18 GMT 2009  Olly Betts <olly@survex.com>

        * net/serialise.cc: Fix top of file to actually be a doxygen comment.
          Tweak layout of definition of serialise_stats().

Sat Mar 07 05:40:58 GMT 2009  Olly Betts <olly@survex.com>

        * net/serialise.cc: c_str() -> data() since we don't need the
          nul-termination.

Thu Mar 05 11:49:45 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_db.cc,tests/api_nodb.cc: Back out accidentally committed
          changes 2 commits ago.

Thu Mar 05 10:28:07 GMT 2009  Olly Betts <olly@survex.com>

        * AUTHORS: Add Frank J. Bruzzaniti for omindex patches.

Thu Mar 05 10:20:38 GMT 2009  Olly Betts <olly@survex.com>

        * tests/Makefile.am: If both chert and flint are enabled, run
          remoteprog_chert and remotetcp_flint but not the other two
          combinations as they don't buy us any useful extra test
          coverage, but cost a lot of extra time per testrun.

Thu Mar 05 07:51:52 GMT 2009  Olly Betts <olly@survex.com>

        * docs/deprecation.rst: Update to reflect that odd minor versions are
          now development series.

Thu Mar 05 04:20:43 GMT 2009  Olly Betts <olly@survex.com>

        * common/serialisationcontextinternal.h: Fix forward declarations.

Thu Mar 05 02:11:26 GMT 2009  Olly Betts <olly@survex.com>

        * api/omdatabase.cc: "new_uuid" -> "sub_uuid" - it's not really new.

Wed Mar 04 22:53:13 GMT 2009  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h,include/xapian/termgenerator.h: Make
          default empty std::string parameters use std::string() rather than
          "".

Wed Mar 04 16:06:11 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * api/omdatabase.cc: If a sub-database of a multi-database has no
          uuid, we cannot return a uuid for the database, so return
          string() instead.
        * tests/api_anydb.cc: Test for this.

Wed Mar 04 13:45:41 GMT 2009  Olly Betts <olly@survex.com>

        * HACKING: Conversion to C++ names for ISO C headers will happen in
          1.1.x, not 1.1.0.

Wed Mar 04 13:37:47 GMT 2009  Olly Betts <olly@survex.com>

        * api/omdatabase.cc,backends/database.cc,
          backends/remote/remote-database.cc,common/database.h,
          include/xapian/database.h,net/remoteserver.cc,tests/api_anydb.cc:
          Return an empty string from Database::get_uuid() when then backend
          doesn't support UUIDs for consistency with flint when the database
          has no UUID.  For a multiple database, build a string from the UUIDs
          of each subdatabase and return this as the UUID.  If there are no
          subdatabases return the empty string.

Wed Mar 04 11:34:04 GMT 2009  Olly Betts <olly@survex.com>

        * backends/remote/remote-database.cc,common/remoteprotocol.h,
          common/remoteserver.h,docs/remote_protocol.html,net/remoteserver.cc:
          Change the remote server to always default to opening a Database and
          having the client request write access explicitly.  This allows a
          single server to support multiple readers and one writer
          simultaneously.  (bug#145)
        * net/remoteserver.cc,backends/remote/remote-database.cc: For constant
          empty string parameters, pass string() rather than "".
        * common/remoteserver.h: Remove unused '#include <map>'.  Remove
          'using namespace std;' and explicitly qualify the few bare mentions
          of 'string'.

Wed Mar 04 07:24:39 GMT 2009  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lt: Sync with latest upstream lempar.c
          (only changes were in code which isn't in our version).

Wed Mar 04 04:03:44 GMT 2009  Olly Betts <olly@survex.com>

        * tests/Makefile.am,tests/api_percentages.cc,
          tests/testdata/apitest_sortconsist.txt: Apply regression test patch
          from bug#216.

Wed Mar 04 03:41:49 GMT 2009  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h,matcher/multimatch.cc: Fix inconsistent
          percentage scores when sorting primarily by valuei, except when
          a MatchDecider is also being used; document this remaining problem
          case.  (bug#216)

Wed Mar 04 01:58:07 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_table.cc,backends/flint/flint_table.cc: No need
          to initialise inflate_zstream->next_out and avail_out twice.

Wed Mar 04 01:16:32 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_table.cc,backends/flint/flint_table.cc: If
          deflateReset() or inflateReset() fails, just delete the zstream
          take the initialisation codepath - that should mean we recover
          if the stream does somehow end up in a bad state and is less
          code than throwing an exception.  Annotate tests with rare()
          or usual() if they are for exceptional conditions.  Fix bug
          introduced by the laziness patch which was adding an int error
          code to a const char * message.  If deflateInit2() or inflateInit2()
          fails, delete and zero the stream so there's no risk of ending up
          wedged on a partly initialised stream.

Tue Mar 03 15:32:53 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * backends/chert/chert_table.cc,backends/flint/flint_table.cc:
          Check for errors from deflateReset() and inflateReset() - there
          shouldn't be any if we've given them a valid stream, so just
          raise InternalError if we get one.

Tue Mar 03 09:43:34 GMT 2009  Olly Betts <olly@survex.com>

        * NEWS: Updated from ChangeLog.

Tue Mar 03 05:52:16 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_closedb.cc: Fix testcase closedb2 not to create a test
          database named closedb3.

Tue Mar 03 04:31:48 GMT 2009  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: Add QueryParser::FLAG_DEFAULT to make
          it easier to add flags to those set by default.
        * tests/queryparsertest.cc: Use FLAG_DEFAULT in a few places to serve
          as a feature test.

Tue Mar 03 03:45:53 GMT 2009  Olly Betts <olly@survex.com>

        * docs/index.html: Add link to new serialisation topic document.
        * docs/serialisation.rst: Reword to avoid pluralising class names.
          Add link to postingsource document where we reference it.

Tue Mar 03 03:35:29 GMT 2009  Olly Betts <olly@survex.com>

        * tests/runsrv.in: Use @top_builddir@ rather than relying on it
          coming from the environment.

Tue Mar 03 03:05:47 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_wrdb.cc: Clear tout regularly in modifyvalues1 as
          otherwise the output builds up.  Some string stream implementations
          get very inefficient with large strings, and also this seems to
          interact badly with valgrind's leak detection resulting in the
          test having to be rerun to check if it really leaks.  Prefer
          tout.str(string()) to tout.str("") in existing uses too.

Tue Mar 03 01:41:07 GMT 2009  Olly Betts <olly@survex.com>

        * backends/flint/flint_table.cc: Update handling of shutting down
          the zstream objects in the dtor to match chert.

Mon Mar 02 23:57:26 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * backends/chert/chert_table.h,backends/flint/flint_table.h: Add
          documentation comments for the lazy allocation methods, and
          separate comments for the zstream members.

Mon Mar 02 23:40:20 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * AUTHORS,backends/chert/chert_table.cc,backends/chert/chert_table.h,
          backends/flint/flint_table.cc,backends/flint/flint_table.h:
          Reduce allocation of zstreams by allocating them lazily, keeping
          them in the table objects, and reuse them, rather than allocating
          a new one each time it's wanted.  Heavily based on a patch from
          Todd Lipcon.  Apparently improves performance significantly on
          some systems; on my tests it has no perceptible negative impact,
          but it makes sense that it could help in some situations, so
          let's apply it.  Fixes #325.

Mon Mar 02 21:10:54 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * docs/deprecation.rst: Deprecate Stem_get_available_languages()
          from the python bindings.

Mon Mar 02 19:56:20 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * common/Makefile.mk,common/const_database_wrapper.cc,
          common/const_database_wrapper.h,matcher/queryoptimiser.cc: Avoid
          const_cast() on Database::Internal, and exposing
          compiler-dependent behaviour if non-const methods are called, by
          adding a ConstDatabaseWrapper class, which is a subclass of
          Database::Internal, and also takes a Database::Internal as a
          parameter, to be wrapped.  This class proxies all const methods
          to the wrapped Database::Internal, and raises
          InvalidOperationError on non-const methods.  Fixes #332.

Mon Mar 02 18:27:00 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/postingsource.h: Documentation comment
          improvements.  Be explicit that Xapian will call reset() before
          various methods, and will call next, skip_to or check before
          at_end.
        * include/xapian/query.h: Wrap over-long line.

Mon Mar 02 18:26:37 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * docs/Makefile.am,docs/serialisation.rst: Add topic document about
          serialisation.

Mon Mar 02 17:58:28 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * docs/postingsource.rst: Update documentation with new design.

Mon Mar 02 17:16:54 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * api/omqueryinternal.cc: Change serialisation of queries to use
          encode_length() rather than om_tostring(), for a more compact and
          easier to parse representation.

Mon Mar 02 14:48:08 GMT 2009  Olly Betts <olly@survex.com>

        * backends/multi/multi_alltermslist.cc: Fix memory leak which
          was causing allterms6 to fail.

Mon Mar 02 14:15:11 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * matcher/externalpostlist.cc: Fix memory leak in external source
          postlist (fixes fixedweightsource1).

Mon Mar 02 13:41:29 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * api/postingsource.cc: Don't set max_weight in
          ValueMapPostingSource::set_default_weight() - it's set in
          reset() before being used, and it's not been set here yet, so
          accessing it in std::max() was making valgrind complain.

Mon Mar 02 12:23:01 GMT 2009  Olly Betts <olly@survex.com>

        * HACKING,configure.ac,tests/runtest.in: Don't use valgrind if it's
          < 3.3.0 as that's well over a year old and greatly simplifies the
          configure tests.  Fix options passed to valgrind so that the
          testsuite harness actually reports problems detected by newer
          valgrind versions.

Mon Mar 02 10:08:25 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * api/,bin/xapian-tcpsrv.cc,common/Makefile.mk,common/remoteserver.h,
          common/serialisationcontextinternal.h,include/Makefile.mk,
          include/xapian.h,include/xapian/enquire.h,include/xapian/query.h,
          include/xapian/serialisationcontext.h,net/remoteserver.cc,
          tests/api_serialise.cc,tests/internaltest.cc: Add
          SerialisationContext.  This object is used to register
          PostingSource or Weight subclasses, so that they can be
          serialised and unserialised, and therefore used in remote
          searches.  Add two-argument form for Query::unserialise() which
          takes a serialisation context.  Fixes #206.

Mon Mar 02 07:13:38 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/database.h: Further tweak to wording of
          documentation about close().

Mon Mar 02 07:05:54 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * backends/chert/chert_table.cc,backends/chert/chert_table.h,
          backends/flint/flint_table.cc,backends/flint/flint_table.h:
          Factor out more "throw Xapian::DatabaseError("Database has been
          closed")" bits into separate functions: knocks another 20KB off
          the shared library size.

Mon Mar 02 05:46:15 GMT 2009  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Document how to get all matches from
          Enquire::get_mset().

Mon Mar 02 04:52:17 GMT 2009  Olly Betts <olly@survex.com>

        * backends/inmemory/inmemory_alltermslist.cc,
          backends/inmemory/inmemory_database.cc,
          backends/inmemory/inmemory_database.h: Factor out "throw
          Xapian::DatabaseError("Database has been closed") into a separate
          function which knocks over 100KB off the shared library size (just
          over 0.5%).

Mon Mar 02 03:57:17 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/phrasepostlist.h: Remove blank line from end of file.

Mon Mar 02 03:52:10 GMT 2009  Olly Betts <olly@survex.com>

        * api/replication.cc,common/msvc_posix_wrapper.cc: Cuddle braces for
          "if" and "switch".

Mon Mar 02 03:32:32 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_closedb.cc: Use more conventional uppercase macro parameter
          names.  Wrap long comments.  Remove another unused exception name.

Mon Mar 02 03:21:39 GMT 2009  Olly Betts <olly@survex.com>

        * api/replication.cc,backends/chert/chert_databasereplicator.cc,
          backends/flint/flint_databasereplicator.cc,net/remoteserver.cc,
          tests/api_closedb.cc,tests/perftest/perftest_matchdecider.cc:
          Don't name the exception being caught if we don't look at it.  While
          GCC doesn't currently warn "unused variable" here, I'm fairly sure
          there are compilers which do.

Mon Mar 02 03:20:52 GMT 2009  Olly Betts <olly@survex.com>

        * tests/perftest/perftest.cc: Wrap overlong comment.

Mon Mar 02 03:17:48 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/mergepostlist.cc: Change "do { ... } while (true);" to the
          more usual "while (true) { ... }".

Sun Mar 01 19:41:16 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * tests/api_closedb.cc: Merge closedb1 and closedb2 into a single
          test, and add lots more checking to it.  Rename closedb3 to
          closedb2, to avoid leaving an odd gap.  closedb1 needs more work,
          but is a useful start; committing now, rather than once I've done
          this work, since the old test is failing in buildbot, and I don't
          want to get in the way of snapshot tarballs.

Sun Mar 01 19:27:38 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * backends/chert/chert_table.cc,backends/flint/flint_table.cc:
          Add a few guards to throw DatabaseError when the database has
          been permanently closed, rather than behaving as if the table is
          empty in that situation.  Also, don't delete the resources in the
          table when Database::close() is called, because they may still be
          used to attempt to look up cached content.

Sun Mar 01 18:22:52 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/database.h: Update documentation comments for
          reopen() and close() to document the API we're aiming for (ie,
          that closed databases either return the right result from cache,
          or raise a DatabaseError).

Sun Mar 01 18:20:19 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * backends/inmemory/inmemory_alltermslist.cc,
          backends/inmemory/inmemory_database.cc,
          backends/inmemory/inmemory_database.h: Add a flag to mark whether
          the database is closed, and add guards before all methods which
          access content which goes away when the database is closed, to
          raise an exception if the database is closed.

Sun Mar 01 18:20:03 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * backends/inmemory/inmemory_document.h: Fix a typo in a comment.

Sun Mar 01 17:49:26 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * matcher/mergepostlist.cc: Fix ticket #336 by calling
          recalc_maxweight when a sub-posting list finishes (other than
          after the last one, where there is no point in calling
          recalc_maxweight).

Sun Mar 01 15:34:46 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * tests/api_db.cc: Fix MyDontAskWeightPostingSource to use the
          database passed to reset(), rather than one passed to its
          constructor.  This allows externalsource4 to be enabled for
          multidatabases.

Sun Mar 01 13:07:37 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/postingsource.h: Add comments as discussed in
          ticket #295 to make clear that in a multi-database search,
          PostingSources are passed a single sub-database.  Also mention
          that the returned value of clone() will be deallocated with
          delete.

Sat Feb 28 08:21:33 GMT 2009  Olly Betts <olly@survex.com>

        * api/omdatabase.cc,backends/chert/chert_database.cc,
          backends/chert/chert_database.h,backends/database.cc,
          backends/flint/flint_database.cc,backends/flint/flint_database.h,
          backends/inmemory/inmemory_database.cc,
          backends/inmemory/inmemory_database.h,
          backends/remote/remote-database.cc,common/,docs/remote_protocol.html,
          examples/copydatabase.cc,include/xapian/database.h,
          net/remoteserver.cc,tests/,tests/perftest/perftest_matchdecider.cc,
          tests/perftest/perftest_randomidx.cc,tests/queryparsertest.cc: Add
          WritableDatabase::commit() as a new, preferred alias for
          WritableDatabase::flush().  (bug#266)

Fri Feb 27 01:59:31 GMT 2009  Olly Betts <olly@survex.com>

        * include/xapian/database.h: WritableDatabase::flush() can't throw
          DatabaseLockError.  WritableDatabase's ctor can throw at least
          DatabaseCorruptError or DatabaseLockError.

Thu Feb 26 14:54:28 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_db.cc,tests/api_valuestream.cc: Update comments about why
          certain tests are disabled for certain backends.  Enable
          valueweightsource5 for multi and valuemapsource2 for remote.

Thu Feb 26 14:53:19 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/multiandpostlist.cc: Use AssertRelParanoid() instead
          of AssertParanoid() so the values get reported if the assertion
          fails.

Thu Feb 26 14:18:21 GMT 2009  Olly Betts <olly@survex.com>

        * include/xapian/postingsource.h: Tweak word order.

Thu Feb 26 12:48:16 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_db.cc: Make the PostingSource subclass ctors which are
          only called from clone() private to set a good example for users.

Thu Feb 26 12:28:34 GMT 2009  Olly Betts <olly@survex.com>

        * include/xapian/postingsource.h: Fix doc comment typo.

Thu Feb 26 12:08:40 GMT 2009  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc,include/xapian/query.h: Avoid copying
          Query::Internal objects needlessly when unserialising Query
          objects.

Thu Feb 26 10:07:18 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_db.cc: A couple more uncollapsed tests.

Thu Feb 26 08:28:42 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_anydb.cc,tests/api_wrdb.cc,tests/harness/testsuite.h,
          tests/perftest/perftest_matchdecider.cc,tests/queryparsertest.cc:
          Update to use new TEST_REL() macro.  Remove old TEST_LESSER(),
          etc.

Thu Feb 26 07:51:43 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Fix the new
          Enquire::get_uncollapsed_matches_lower_bound(), etc methods for
          certain cases.
        * tests/api_anydb.cc,tests/api_db.cc: Extend existing tests to also
          check Enquire::get_uncollapsed_matches_lower_bound(), etc.

Thu Feb 26 07:49:23 GMT 2009  Olly Betts <olly@survex.com>

        * tests/harness/Makefile.mk,tests/harness/testmacros.h,
          tests/harness/testsuite.h: Add new "TEST_REL" macro which can test
          for a condition using any relational operator and report a failure
          clearly yet concisely.

Wed Feb 25 13:43:41 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Fix adjustment of the uncollapse bounds and
          estimate.

Wed Feb 25 12:32:13 GMT 2009  Olly Betts <olly@survex.com>

        * configure.ac: GCC --version keeps changing format, and as a result
          we were currently getting "g++" as the version.  So change to the
          (hopefully) more robust technique of using g++ -E to pull out
          __GNUC__ and __GNUC_MINOR__.

Wed Feb 25 03:14:08 GMT 2009  Olly Betts <olly@survex.com>

        * api/omdatabase.cc: Fix for compiling with Sun's compiler
          (untested as I no longer have access to it).

Mon Feb 23 14:11:12 GMT 2009  Olly Betts <olly@survex.com>

        * docs/sorting.rst: Clarify meaning.

Mon Feb 23 14:04:50 GMT 2009  Olly Betts <olly@survex.com>

        * docs/deprecation.rst,include/xapian/enquire.h,tests/: Rename the
          wrongly named "ascending" parameter of the set_sort_by*() methods
          of Enquire to "reverse" and deprecate the default value since
          defaulting to "reverse=true" is confusing.  (bug#311)

Mon Feb 23 01:24:23 GMT 2009  Olly Betts <olly@survex.com>

        * api/omenquire.cc,backends/remote/remote-database.cc,
          common/multimatch.h,common/omenquireinternal.h,
          common/remote-database.h,docs/collapsing.rst,
          docs/remote_protocol.html,include/xapian/enquire.h,matcher/,
          net/remoteserver.cc,net/serialise.cc,tests/Makefile.am,
          tests/api_collapse.cc: Replace the collapsing code in the matcher
          with a separate Collapser class.  This new class can keep more than
          one document with each collapse key.  Also track bounds and an
          estimate of the total number of matches if collapsing wasn't in use.

Mon Feb 23 00:52:16 GMT 2009  Olly Betts <olly@survex.com>

        * api/omdatabase.cc: Fix AssertionError from apitest testcases
          fixedweightsource2 and valueweightsource1.

Sun Feb 22 11:02:24 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_lock.cc,backends/flint/flint_lock.cc: Check for
          fork failing *after* we check if we're now the child process.

Sun Feb 22 10:06:13 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_lock.cc,backends/flint/flint_lock.cc: Note
          explicitly why we now have the strange empty if (not) checking the
          return value of chdir("/") (it's actually newer glibc and
          _FORTIFY_SOURCE rather than newer GCC).  Retry closing filehandle if
          it returns EINTR.  Whitespace tweaks.

Sat Feb 21 11:04:08 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * backends/chert/chert_lock.cc,backends/flint/flint_lock.cc: Fix
          warning about ignoring result of chdir (with GCC 4.2)

Sat Feb 21 08:18:21 GMT 2009  Olly Betts <olly@survex.com>

        * tests/harness/testsuite.cc: Fix option usage in --help - "-x=foo"
          doesn't work - "-x foo" does.

Sat Feb 21 07:37:01 GMT 2009  Olly Betts <olly@survex.com>

        * tests/perftest/perftest_randomidx.cc: Use two argument version of
          rand_int() where applicable.  Reserve length of result string in
          gen_word().  Fix truncated comment.

Sat Feb 21 04:27:45 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_lock.cc,backends/flint/flint_lock.cc: In the
          locking child process, before we exec /bin/cat change directory to
          / so that we don't block unmounting of any partitions and close
          any open file descriptors (apart from those we're using) so that if
          the files are closed by our parent and deleted the disk space gets
          released right away.

Sat Feb 21 02:06:56 GMT 2009  Olly Betts <olly@survex.com>

        * api/postingsource.cc,include/xapian/postingsource.h: Pass string as
          const string &; drop trailing "_" from parameters which don't clash
          with member variables; fix brace formatting on a couple of for
          loops.

Fri Feb 20 14:32:46 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_closedb.cc: Fix testcase closedb3 not to create a test
          database named closedb2.

Fri Feb 20 01:38:32 GMT 2009  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Documentation comment improvements.

Wed Feb 18 06:48:43 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Use AssertRel rather than Assert with an
          inequality so that we see the arguments if the assertion fails.

Wed Feb 18 06:39:33 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: "items" -> "rsetitems" to distinguish from
          items used elsewhere for the MSet items.

Wed Feb 18 06:20:38 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Drop superfluous "std::".

Wed Feb 18 05:46:59 GMT 2009  Olly Betts <olly@survex.com>

        * NEWS: Update from ChangeLog.

Tue Feb 17 23:53:54 GMT 2009  Olly Betts <olly@survex.com>

        * include/xapian/document.h,include/xapian/query.h: "xapian" ->
          "Xapian".

Tue Feb 17 15:02:49 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/document.h,include/xapian/query.h: Soften comment
          warning about changes in serialised format between xapian
          versions; note that the format won't change unless the remote
          database protocol has changed.

Tue Feb 17 14:59:29 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * api/omquery.cc: Return std::string() rather than "" to encourage
          compilers to use special empty string representation.

Mon Feb 16 14:27:28 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * api/postingsource.cc: Change the name() methods of the built-in
          posting sources to return a full name (starting with Xapian:: and
          ending with PostingSource), as documented in the API
          documentation comments.

Mon Feb 16 13:32:39 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * api/omqueryinternal.cc,common/remoteserver.h,
          matcher/externalpostlist.cc,matcher/externalpostlist.h,
          matcher/queryoptimiser.cc,net/remoteserver.cc,
          tests/api_percentages.cc,tests/api_valuestream.cc: Add some
          copyright lines missed in changeset [11838].

Mon Feb 16 11:56:46 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * matcher/queryoptimiser.cc: Add another reference from a FIXME to
          a ticket number.

Mon Feb 16 11:47:21 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * api/omqueryinternal.cc: Update two FIXMEs to reference the
          appropriate ticket.

Mon Feb 16 10:11:39 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * Add support for multi and remote backends with posting sources,
          from ticket #295:
        * include/xapian/postingsource.h: Add some clarifying comments
          about the interface of PostingSources, and add clone(), name(),
          serialise() and unserialise() methods to PostingSources, for
          remote and multidatabase support.
        * include/xapian/query.h: Add internal member to track ownership of
          external posting sources, and update some comments.
        * api/postingsource.cc: Add implementations of the new methods, so
          that all standard PostingSources support remote and multi
          database searches.
        * api/omquery.cc: Clone external PostingSources if possible.
        * api/omqueryinternal.cc: Add serialisation and unserialisation
          support for posting sources, and support for keeping track of
          whether an external posting source is owned by the query object
          or not (ie, whether it needs to be deleted by the destructor).
        * matcher/externalpostlist.cc,matcher/externalpostlist.h: (Attempt
          to) clone external posting sources at start, and call the reset()
          method with the database in use.  Delete the posting source
          afterwards, if the clone was successful.
        * matcher/queryoptimiser.cc: Pass the database to ExternalPostList.
          Sadly, this currently requires a const_cast.
        * tests/: Update tests of PostingSources to take the db parameter
          on the reset() method, and to test behaviour with multi and
          remote backends where appropriate.  Also, add regression test for
          segfault in FixedWeightPostingSource::skip_to() when database is
          empty.
        * net/remoteserver.cc,common/remoteserver.h: Add the built-in
          posting sources to the remote server, and add
          register_posting_source() to the remoteserver, for use in
          xapian-tcpsrv.cc for user posting sources, analogously to
          register_weighting_scheme().

Fri Feb 13 20:09:10 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * api/postingsource.cc: Fix segfaults which occur if an empty
          ValuePostingSource subclass has the skip_to() or check() methods
          called on it first.
        * tests/api_db.cc tests/api_valuestream.cc: Move valuemapsource1 to
          api_valuestream.cc, since that seems like a better place (and
          api_db.cc is already rather over-large).  Add regression test
          "valuemapsource2" to check the behaviour of ValuePostingSource
          subclasses on empty lists.

Fri Feb 13 19:29:38 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * api/postingsource.cc,include/xapian/postingsource.h: Add
          ValuePostingSource, which is a base class for implementing
          posting sources based on reading from a value slot.  Convert
          ValueWeightPostingSource to be a subclass of this, and add
          ValueMapPostingSource, which is a posting source which uses a map
          to convert values to weights.
        * tests/api_db.cc: Add valuemapsource1, testing the
          ValueMapPostingSource.

Fri Feb 13 15:14:53 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * tests/harness/index_utils.cc: Add value 13, containing the first
          3 letters of the paragraph - needed for some tests I'm going to
          commit shortly.

Fri Feb 13 14:05:44 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * tests/api_sorting.cc: Change slot number used to get an empty
          slot from 13 to 100 - we're getting close to using slot 13 now!

Sat Feb 07 00:31:12 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * backends/chert/chert_cursor.cc,backends/flint/flint_cursor.cc:
          Return accidentally changed "XAPIAN_ASSERTIONS_VERBOSE" ifdefs to
          "XAPIAN_DEBUG_VERBOSE".

Sat Feb 07 00:16:43 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * api/omdocument.cc,api/omquery.cc,include/xapian/document.h,
          include/xapian/query.h: Add methods for serialising documents and
          queries into strings, and unserialising back from strings.  Fixes
          most of ticket #206 - missing part is that serialising queries
          containing PostingSources doesn't work.
        * tests/Makefile.am,tests/api_serialise.cc: Add tests of document
          and query serialisation.

Fri Feb 06 16:06:50 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

        * configure.ac: Set HAVE_PREAD and HAVE_PWRITE if pread and pwrite
          are found; turns use of pread and pwrite back on.  This improves
          the speed of a test case of 10,000 (fully cached) searches from
          1.84 seconds to 1.78 seconds for me (on ubuntu hardy) - ie, about
          3% speed increase.

Tue Jan 20 06:22:20 GMT 2009  Olly Betts <olly@survex.com>

        * tests/api_db.cc: Prefer value.empty() to value == "".

Mon Jan 19 05:08:48 GMT 2009  Olly Betts <olly@survex.com>

        * AUTHORS,queryparser/Makefile.mk: Fix "#line" directives in generated
          file queryparser/queryparser_internal.cc to give a relative path -
          previously they had a full path when generated by a VPATH build, and
          this confused GCC 2.95 and depcomp.

Sun Jan 18 23:34:22 GMT 2009  Olly Betts <olly@survex.com>

        * api/omenquire.cc: Throw UnimplementedError from Enquire::get_mset()
          if we're asked for a percentage cutoff and to sort primarily by
          value - this has never been correctly supported and it's better to
          warn people than give incorrect results.
        * tests/api_percentages.cc: Add test that this error gets thrown.

Tue Jan 13 08:20:36 GMT 2009  Olly Betts <olly@survex.com>

        * common/omenquireinternal.h: Swap the items vector into the
          MSet::Internal object rather than copying it to avoid the overhead
          of the copy.

Thu Jan 08 05:14:47 GMT 2009  Olly Betts <olly@survex.com>

        * backends/chert/chert_cursor.cc,backends/chert/chert_postlist.cc,
          backends/flint/flint_cursor.cc,backends/flint/flint_postlist.cc,
          backends/multi/multi_postlist.cc,common/omassert.h,configure.ac,
          matcher/multimatch.cc: Change preprocessor defines controlling
          assertions from XAPIAN_DEBUG->XAPIAN_ASSERTIONS and
          XAPIAN_DEBUG_PARANOID->XAPIAN_ASSERTIONS_PARANOID so their purpose
          is clearer.

Thu Jan 08 02:23:21 GMT 2009  Olly Betts <olly@survex.com>

        * NEWS: Update from ChangeLog.

Wed Jan 07 03:43:07 GMT 2009  Olly Betts <olly@survex.com>

        * api/matchspy.cc: Fix FP rounding bug (bug#321).
        * AUTHORS: Add Shane Evans for bug report.

Tue Jan 06 22:08:12 GMT 2009  Olly Betts <olly@survex.com>

        * backends/inmemory/inmemory_database.cc: Fix comment typo.

Tue Jan 06 21:39:30 GMT 2009  Olly Betts <olly@survex.com>

        * api/matchspy.cc: Add assertions to try to track down what's causing
          bug#321.

Tue Jan 06 03:20:27 GMT 2009  Olly Betts <olly@survex.com>

        * matcher/exactphrasepostlist.cc,matcher/phrasepostlist.cc: Fix
          comment typos.

Mon Jan 05 04:42:04 GMT 2009  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lt: Merge upstream "Check-in Number: 6016" -
          only change is to comment noting the synced version as the changed
          code has been deleted in our version.

Fri Dec 26 15:05:05 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/database.h: Add Database.close() method, used to
          close the resources (in particular, the filehandles) held by a
          database before the destructor is called.  Particularly useful
          for the bindings from other languages.
        * api/omdatabase.cc,backends/chert/chert_database.cc,
          backends/chert/chert_database.h,backends/flint/flint_database.cc,
          backends/flint/flint_database.h,
          backends/inmemory/inmemory_database.cc,
          backends/inmemory/inmemory_database.h,
          backends/remote/remote-database.cc,common/database.h,
          common/remote-database.h,net/remoteconnection.cc: Implementation
          of close() methods.
        * tests/Makefile.am,tests/api_closedb.cc: New test file, for
          testing the close method.  Could do with being expanded to test
          many more methods of databases in the closed state, and to test
          the behaviour after the close of objects created from databases
          before the database was closed.

Fri Dec 26 13:42:14 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * backends/chert/chert_table.cc,backends/flint/flint_table.cc:
          Raise error if database has been closed permanently when
          cursor_get() is called - a NULL return type isn't checked in
          various places (for tables which are never closed temporarily),
          so this is the easiest place to add a check to avoid a segfault
          without incurring extra overhead.

Tue Dec 23 13:42:21 GMT 2008  Olly Betts <olly@survex.com>

        * languages/compiler/analyser.c: Fix GCC 4.3 warning.

Tue Dec 23 06:35:11 GMT 2008  Olly Betts <olly@survex.com>

        * PLATFORMS: Sync with 1.0 branch.
        * PLATFORMS: Remove 0.9.x build reports; move 1.0.x build reports
          to the "old version" section.
        * INSTALL: Adapt old footnotes from PLATFORMS about HP's aCC and IRIX
          into new paragraphs here.

Tue Dec 23 05:19:52 GMT 2008  Olly Betts <olly@survex.com>

        * HACKING,configure.ac: Make automake 1.10.2 a hard minimum
          requirement.

Tue Dec 23 04:36:27 GMT 2008  Olly Betts <olly@survex.com>

        * NEWS: Update from ChangeLog.

Mon Dec 22 16:02:58 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * backends/chert/chert_databasereplicator.cc,
          backends/databasereplicator.cc,
          backends/flint/flint_databasereplicator.cc: Fix some missing bits
          for debug compilation.

Mon Dec 22 13:30:53 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * api/replication.cc,backends/Makefile.mk,backends/chert/,
          backends/database.cc,backends/databasereplicator.cc,backends/flint/,
          common/Makefile.mk,common/database.h,common/databasereplicator.h:
          Add DatabaseReplicator base class, and subclasses for flint and
          chert, to hold parts of database replication code which need to
          be applied to a partially replicated database which may not be a
          valid database.  Move the code for applying changesets and
          comparing revision numbers into here, and add code for getting
          uuids which simply returns "" if the database is too broken to
          have a uuid associated with it.  Update the replication code to
          use DatabaseReplicator subclasses instead of Database classes
          where necessary, to avoid failing if a partial database is
          transmitted.  Add additional checks to ensure that the UUID of a
          replicated databse is equal to that sent in the replication
          protocol message introducing a full database copy; if they
          differ, a retry of the copy is needed, so ensure that the next
          message sent is a new copy of the database.

Mon Dec 22 11:24:43 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * docs/replication.rst: Warning about a possible way to confuse the
          replication process.

Sat Dec 20 14:00:34 GMT 2008  Olly Betts <olly@survex.com>

        * tests/api_percentages.cc: Update (C) too.

Sat Dec 20 13:51:35 GMT 2008  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: If we're using values for sorting and for
          another purpose, cache the Document::Internal object from getting
          the value for sorting like we do between other uses.

Sat Dec 20 13:09:13 GMT 2008  Olly Betts <olly@survex.com>

        * tests/api_percentages.cc: Make formatting of MyPostingSource code
          more self-consistent.  Remove a superfluous block scope.  Wrap a
          long comment.

Sat Dec 20 12:25:40 GMT 2008  Olly Betts <olly@survex.com>

        * exception_data.pm: Build a hash mapping a class to a list of its
          subclasses and export this as %subclasses.

Sat Dec 20 05:51:50 GMT 2008  Olly Betts <olly@survex.com>

        * HACKING: Wrap a long line.

Sat Dec 20 05:28:57 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Merge upstream "Check-in Number: 6016".

Fri Dec 19 14:25:10 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lt: Merge upstream "Check-in Number: 6015".

Fri Dec 19 14:07:52 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lt: Merge upstream "Check-in Number: 6006".

Fri Dec 19 13:51:33 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lt: Merge upstream "Check-in Number: 5919"
          - code changes are in deleted code, so no actual code changes for
          us.

Fri Dec 19 13:46:22 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Merge upstream "Check-in Number: 6008".

Fri Dec 19 11:15:04 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * tests/api_replicate.cc: Fix comment describing test.

Thu Dec 18 23:38:50 GMT 2008  Olly Betts <olly@survex.com>

        * backends/chert/chert_table.cc,backends/flint/flint_table.cc: Tidy up
          comment wrapping and indenting of code wrapped in try blocks by the
          previous commit.

Thu Dec 18 14:26:30 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * backends/chert/chert_database.cc,backends/chert/chert_table.cc,
          backends/chert/chert_table.h,backends/flint/flint_database.cc,
          backends/flint/flint_table.cc,backends/flint/flint_table.h:
          Improve resilience to unexpected errors during commit.  Firstly,
          fix FlintTable and ChertTable to close the table if an error
          occurs during commit - this avoids the table being left in an
          inconsistent state (instead, the table is reopened in a
          consistent state the next time it is used).  Secondly, add a
          "permanent" close state for tables (indicated by handle being set
          to -2), which will raise an error if anything tries to do an
          action which needs the table to be opened, and set the tables to
          this state if we fail to recover the database after error in
          commit().  This prevents further actions on the database if we
          couldn't recover the state (eg, because we're out of disk space),
          avoiding risk of corruption.

Thu Dec 18 01:28:06 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * backends/chert/chert_database.cc,backends/chert/chert_database.h,
          backends/flint/flint_database.cc,backends/flint/flint_database.h:
          Improve the error reporting when modifications fail and we cannot
          set the revision numbers in the table to consistent values, to
          report the original error too.

Wed Dec 17 17:27:24 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * backends/chert/chert_table.cc,backends/flint/flint_table.cc:
          Fix construction of the error message when a base can't be
          re-read: used to do pointer arithmetic by mistake - now does the
          correct string concatenation.

Wed Dec 17 15:18:10 GMT 2008  Olly Betts <olly@survex.com>

        * tests/api_valuestream.cc: Skip valuestream3 on chert for now so that
          snapshots and the tinderbox work again.

Wed Dec 17 15:17:07 GMT 2008  Olly Betts <olly@survex.com>

        * tests/api_wrdb.cc: Need omassert.h for STATIC_ASSERT.

Wed Dec 17 10:45:45 GMT 2008  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc,tests/api_nodb.cc: A NEAR of 2 OR subqueries
          shouldn't throw AssertionError - instead throw UnimplementedError.
          Addresses the worst aspect of bug#201, but this should really be
          implemented.

Wed Dec 17 04:44:10 GMT 2008  Olly Betts <olly@survex.com>

        * backends/chert/chert_database.cc,backends/chert/chert_database.h:
          Implement ChertWritableDatabase::open_value_list().
        * tests/api_valuestream.cc: Add valueweightsource5 testcase which is a
          regression test for bug#299 and also exercises the above method.

Tue Dec 16 13:30:47 GMT 2008  Olly Betts <olly@survex.com>

        * common/expandweight.h,expand/expandweight.cc: Overhaul ExpandWeight
          - now we use the "official" formula and don't return terms which it
          would give a negative weight to (since that means they are expected
          to be harmful not helfpul).
        * tests/api_anydb.cc,tests/api_db.cc: Fix unwarranted assumptions in
          existing testcases broken by this change.

Thu Dec 11 01:02:41 GMT 2008  Olly Betts <olly@survex.com>

        * examples/delve.cc: Add missing "and" to --help output.  Report
          termfreq and collection freq for each term we're asked about.

Mon Dec 08 00:52:51 GMT 2008  Olly Betts <olly@survex.com>

        * AUTHORS: Add Daniel Andersson for reporting the flintlock
          permissions issue.

Sun Dec 07 22:50:32 GMT 2008  Olly Betts <olly@survex.com>

        * api/sorter.cc,tests/api_sorting.cc: Fix an empty MultiValueSorter
          not to SEGV/hang.

Fri Dec 05 21:08:08 GMT 2008  Olly Betts <olly@survex.com>

        * backends/chert/chert_database.cc,tests/api_backend.cc: Use
          "flintlock" rather than "chertlock" for the lockfile in chert.
          The locking is compatible and this avoids the possibility of
          creating a chert and flint database in the same directory (which
          will result in one being corrupt since the Btree filenames overlap).

Thu Dec 04 09:00:04 GMT 2008  Olly Betts <olly@survex.com>

        * backends/chert/chert_lock.cc,backends/flint/flint_lock.cc: Create
          the lockfile with permissions 0666 so that the umask is honoured
          just like we do for the other files (previously we used 0600).
        * tests/Makefile.am,tests/api_backend.cc: Add regression test
          lockfileumask1.

Thu Dec 04 08:56:54 GMT 2008  Olly Betts <olly@survex.com>

        * tests/stemtest.cc: Use str.resize(0) instead of str = "".

Thu Dec 04 04:56:55 GMT 2008  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: No need to explicitly initialise a
          std::string to "".

Thu Dec 04 04:55:47 GMT 2008  Olly Betts <olly@survex.com>

        * tests/api_db.cc: Prefer str.empty() to str == "".

Thu Dec 04 01:50:10 GMT 2008  Olly Betts <olly@survex.com>

        * tests/api_wrdb.cc: Make helper function static.  Use STATIC_ASSERT
          to ensure a constant is coprime with 13.

Wed Dec 03 22:56:19 GMT 2008  Olly Betts <olly@survex.com>

        * api/omdatabase.cc: Fix API logging.

Wed Dec 03 03:11:45 GMT 2008  Olly Betts <olly@survex.com>

        * INSTALL: Note that libuuid is required for Xapian 1.1.0 and higher.

Wed Dec 03 03:10:59 GMT 2008  Olly Betts <olly@survex.com>

        * INSTALL: Remove ':' from the end of headings.

Mon Dec 01 08:59:04 GMT 2008  Olly Betts <olly@survex.com>

        * HACKING: Explicitly give the commands to install the required
          packages for developing on recent Debian or Ubuntu for added
          convenience.  Update the Debian/Ubuntu packages needed for
          documentation to reflect the change from tetex to texlive.  Fix
          unfinished paragraph about requiring a newline at the end of a
          source file and note that this is actually undefined behaviour in
          C++.

Sun Nov 30 21:46:59 GMT 2008  Olly Betts <olly@survex.com>

        * bin/,examples/quest.cc,tests/harness/testsuite.cc: Pull out lists of
          short options next to list of long options to help make sure they
          are kept in step.  xapian-tcpsrv and xapian-progsrv now accept -w
          as a short form of --writable, as their long option table had, but
          their short option string didn't.

Sun Nov 30 20:44:48 GMT 2008  Olly Betts <olly@survex.com>

        * docs/postingsource.rst: Wrap a long line.  Note that the remote
          backend isn't supported yet.

Wed Nov 19 11:36:00 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * docs/postingsource.rst: Make it clear that PostingSources must
          always return documents in increasing document ID order.

Wed Nov 19 08:43:04 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * bin/,examples/delve.cc,examples/quest.cc,tests/harness/testsuite.cc:
          Test return type of gnu_getopt_long for being != -1, rather than
          == 0, since there are a wide variety of return types other than 0
          which may be returned in the successful case (with the builtin
          implementation in common/getopt.cc, at least).

Tue Nov 18 23:22:09 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * api/omdatabase.cc: Change unknown "DATABASE" debug type to "DB".

Mon Nov 17 13:00:12 GMT 2008  Olly Betts <olly@survex.com>

        * docs/queryparser.html: Add link to valueranges.html.

Fri Nov 14 22:23:10 GMT 2008  Olly Betts <olly@survex.com>

        * NEWS: Update revision we're current to.

Fri Nov 14 17:43:15 GMT 2008  Olly Betts <olly@survex.com>

        * backends/chert/chert_alldocsmodifiedpostlist.cc,
          backends/chert/chert_modifiedpostlist.cc,
          backends/flint/flint_modifiedpostlist.cc: Correct comments.

Fri Nov 14 17:38:33 GMT 2008  Olly Betts <olly@survex.com>

        * tests/harness/testsuite.cc: Update comment about valgrind and C++
          STL allocators.

Fri Nov 14 17:36:47 GMT 2008  Olly Betts <olly@survex.com>

        * bin/,examples/delve.cc,examples/quest.cc,tests/harness/testsuite.cc:
          Don't compare return value of gnu_getopt_long() with EOF - it's
          documented to simply return -1 or 0, and EOF requires inclusion of
          stdio.h.

Fri Nov 14 17:30:39 GMT 2008  Olly Betts <olly@survex.com>

        * common/serialise-double.cc: Fix "#elif" with no argument to
          "#else" - the former surprisingly compiles with most compilers, but
          GCC 4.4 snapshots reject it.

Fri Nov 14 16:54:15 GMT 2008  Olly Betts <olly@survex.com>

        * common/win32_uuid.cc: A few code clean-ups.

Fri Nov 14 13:09:16 GMT 2008  Olly Betts <olly@survex.com>

        * common/Makefile.mk: Ship common/safeuuid.h to unbreak tarball
          snapshot building.

Sun Nov 09 13:31:19 GMT 2008  Olly Betts <olly@survex.com>

        * api/omquery.cc,api/omqueryinternal.cc,bin/xapian-tcpsrv.cc,
          common/omenquireinternal.h,matcher/,net/remoteserver.cc:
          Prefer "" to <> for including Xapian API headers from within the
          library.  Remove so unused xapian/enquire.h inclusions.

Fri Nov 07 12:50:22 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * backends/chert/chert_version.cc,backends/chert/chert_version.h,
          backends/flint/flint_version.cc,backends/flint/flint_version.h,
          common/safeuuid.h,common/win32_uuid.cc,common/win32_uuid.h: Add
          implementation of UUID functions for windows (using the built-in
          UUID methods in the windows API). Fixes bug #303.

Sat Nov 01 01:47:44 GMT 2008  Olly Betts <olly@survex.com>

        * NEWS: Sync with 1.0.9 release.

Fri Oct 31 18:55:03 GMT 2008  Olly Betts <olly@survex.com>

        * include/xapian/database.h: Document XAPIAN_FLUSH_THRESHOLD
          (bug#306).

Fri Oct 31 18:30:11 GMT 2008  Olly Betts <olly@survex.com>

        * configure.ac: Fix whitespace inconsistency with omega's
          configure.ac.

Fri Oct 31 10:51:06 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * api/postingsource.cc,include/xapian/postingsource.h: Add a new
          built-in posting source, FixedWeightSource, which returns every
          document in the database, but with a fixed weight.  In
          particular, this is useful to add a constant weight to every item
          in a subquery.  Also, in ValueWeightPostingSource, refactor the
          "last_docid" member to a bool "started", since this is all it's
          used for.
        * tests/api_db.cc: Add fixedweightsource1, to test FixedWeightSource.

Mon Oct 27 17:05:39 GMT 2008  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Skip test if the timer granularity is too
          coarse in all cases.

Mon Oct 27 08:12:16 GMT 2008  Olly Betts <olly@survex.com>

        * tests/api_valuestream.cc: Disable valuestream1 for multi backends.

Sun Oct 26 00:30:54 GMT 2008  Olly Betts <olly@survex.com>

        * backends/chert/chert_valuelist.cc: Remove incorrect assertions.

Sat Oct 25 06:18:37 GMT 2008  Olly Betts <olly@survex.com>

        * api/Makefile.mk: Fix typo so we once again ship editdistance.h and
          maptermlist.h.

Thu Oct 23 17:34:13 GMT 2008  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Skip test if the timer granularity is too
          coarse.

Tue Oct 21 05:00:59 GMT 2008  Olly Betts <olly@survex.com>

        * NEWS: Sync with branches/1.0.

Tue Oct 21 02:09:18 GMT 2008  Olly Betts <olly@survex.com>

        * tests/api_valuestream.cc: Add feature test of ValueIterator::check().

Tue Oct 21 01:36:45 GMT 2008  Olly Betts <olly@survex.com>

        * backends/inmemory/inmemory_database.cc,
          backends/inmemory/inmemory_database.h: Prefer string() to "", slot
          to valno, and not using else after return.

Tue Oct 21 01:32:37 GMT 2008  Olly Betts <olly@survex.com>

        * tests/api_anydb.cc,tests/api_db.cc: Remove '#include <iomanip>'
          which aren't used.

Mon Oct 20 13:30:37 GMT 2008  Olly Betts <olly@survex.com>

        * api/postingsource.cc,api/valueiterator.cc,
          include/xapian/postingsource.h,include/xapian/valueiterator.h: Add
          new API method ValueIterator::check() and use it in PostingIterator.

Mon Oct 20 12:28:16 GMT 2008  Olly Betts <olly@survex.com>

        * tests/api_valuestream.cc: Add test for skip_to() on valuestream
          iterator.

Mon Oct 20 11:19:12 GMT 2008  Olly Betts <olly@survex.com>

        * tests/Makefile.am,tests/api_valuestream.cc: Add a simple test of
          valuestream iteration.

Mon Oct 20 11:01:26 GMT 2008  Olly Betts <olly@survex.com>

        * tests/Makefile.am,tests/collate-test,tests/perftest/Makefile.mk:
          Generate the header listing the collated tests so that we can avoid
          updating its timestamp when the contents are unchanged, such as in
          the common case where you modify tests but don't add, remove, or
          change the conditions on any tests.

Mon Oct 20 10:01:56 GMT 2008  Olly Betts <olly@survex.com>

        * examples/delve.cc: Use valuestream iterator to implement "-V<slot>".

Mon Oct 20 02:19:09 GMT 2008  Olly Betts <olly@survex.com>

        * backends/multi/multi_postlist.cc,backends/multi/multi_postlist.h:
          Remove unused members of MultiPostList: tname, collfreq_initialised,
          collfreq, and termweight.

Sun Oct 19 14:01:15 GMT 2008  Olly Betts <olly@survex.com>

        * api/postingsource.cc,include/xapian/postingsource.h: Update
          ValueWeightPostingSource to use a value stream iterator.

Sun Oct 19 13:53:51 GMT 2008  Olly Betts <olly@survex.com>

        * backends/database.cc: Make use of SlowValueList by default.

Sun Oct 19 13:47:10 GMT 2008  Olly Betts <olly@survex.com>

        * api/documentvaluelist.cc,api/documentvaluelist.h: Fix so that a
          DocumentValueList starts before the first value.

Sun Oct 19 13:09:39 GMT 2008  Olly Betts <olly@survex.com>

        * api/omdatabase.cc,api/omdocument.cc: Use ValueIterator() instead of
          ValueIterator(NULL).

Sun Oct 19 11:15:15 GMT 2008  Olly Betts <olly@survex.com>

        * NEWS: Update from ChangeLog.

Sat Oct 18 01:31:25 GMT 2008  Olly Betts <olly@survex.com>

        * NEWS: Update from ChangeLog.

Fri Oct 17 15:54:57 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * bin/xapian-compact.cc: Check that pq is not empty before calling
          top() on it - if it's empty, we only have one database, so we can
          use the code path which doesn't worry about merging tags.  Fixes
          bug #305.

Fri Oct 17 14:22:18 GMT 2008  Olly Betts <olly@survex.com>

        * backends/chert/chert_valuelist.cc: Fix ChertValueList to start on
          the right key.

Fri Oct 17 14:14:14 GMT 2008  Olly Betts <olly@survex.com>

        * include/xapian/database.h,include/xapian/document.h: Inline
          ValueIterator end iterator as ValueIterator() rather than
          ValueIterator(NULL).
        * api/valueiterator.cc: Need to call next() on a ValueList to get it
          to the first position, so do this in ValueIterator's constructor.
        * api/valueiterator.cc,include/xapian/valueiterator.h: Add
          ValueIterator::get_docid() method.

Fri Oct 17 13:53:26 GMT 2008  Olly Betts <olly@survex.com>

        * backends/slowvaluelist.cc,backends/slowvaluelist.h: Add missing
          SlowValueList::get_valueno() method.

Fri Oct 17 13:16:01 GMT 2008  Olly Betts <olly@survex.com>

        * api/omdatabase.cc,include/xapian/database.h: Add
          Database::valuestream_begin() and Database::valuestream_end() to
          allow iterating over the values in a given slot for each document
          in the database (untested so far).

Thu Oct 16 13:20:26 GMT 2008  Olly Betts <olly@survex.com>

        * backends/multi/multi_postlist.cc: Remove unused '#include <list>'
          and uninformative comment.

Thu Oct 16 12:47:00 GMT 2008  Olly Betts <olly@survex.com>

        * api/omdocument.cc,include/xapian/document.h: Inline
          Xapian::Document::values_end() into user code.

Thu Oct 16 12:26:29 GMT 2008  Olly Betts <olly@survex.com>

        * api/,backends/chert/chert_valuelist.cc,
          backends/chert/chert_valuelist.h,common/document.h,
          common/valuelist.h,include/Makefile.mk,include/xapian/derefwrapper.h,
          include/xapian/termiterator.h,include/xapian/valueiterator.h:
          Reimplement ValueIterator to have reference counted internals.  One
          benefit is that Document::Internal no longer need its value_nos map
          member.

Thu Oct 16 11:22:13 GMT 2008  Olly Betts <olly@survex.com>

        * backends/inmemory/inmemory_database.cc: Fix incorrect method name in
          debug messages.

Thu Oct 16 01:34:07 GMT 2008  Olly Betts <olly@survex.com>

        * HACKING: Note preference for @ rather than \ to introduce doxygen
          commands.

Thu Oct 16 01:21:19 GMT 2008  Olly Betts <olly@survex.com>

        * HACKING: Expand section on public/protected/private a little.

Wed Oct 15 11:34:15 GMT 2008  Olly Betts <olly@survex.com>

        * include/xapian/database.h: Use std::string() instead of "" as the
          default value for std::string method parameters.

Wed Oct 15 03:20:01 GMT 2008  Olly Betts <olly@survex.com>

        * backends/Makefile.mk,backends/slowvaluelist.cc,
          backends/slowvaluelist.h: Support for (slowly) iterating along a
          value stream for backends which don't support streamed values
          internally (currently unused).

Tue Oct 14 11:43:42 GMT 2008  Olly Betts <olly@survex.com>

        * api/postingsource.cc,backends/inmemory/inmemory_database.cc,
          matcher/multimatch.cc: Database::get_document_lazily() now returns
          NULL if the document isn't found for an inmemory database.
        * include/xapian/database.h: Document the return value better.

Tue Oct 14 03:20:38 GMT 2008  Olly Betts <olly@survex.com>

        * api/omdatabase.cc,api/postingsource.cc,include/xapian/database.h,
          matcher/multimatch.cc: Add internal
          Xapian::Database::get_document_lazily() method and use it in the
          matcher and Xapian::PostingSource classes to avoid repeating the
          same code lots of times.

Mon Oct 13 23:38:34 GMT 2008  Olly Betts <olly@survex.com>

        * HACKING: Rename "Miscellaneous Portability Issues" to "C++
          Portability Issues", and add a subsection of that for "Miscellaneous
          Portability Issues" with a new note about needing to terminate the
          last line of a source file, and a new subsection heading "Header
          Portability Issues" for all the header-related stuff.

Sat Oct 11 12:19:38 GMT 2008  Olly Betts <olly@survex.com>

        * tests/api_wrdb.cc: If the timer for the first test for bigoaddvalue
          reports 0.0 seconds, skip the test as the timer doesn't have fine
          enough granularity for this test to be useful (bug#300).

Fri Oct 10 20:40:14 GMT 2008  Olly Betts <olly@survex.com>

        * tests/api_wrdb.cc: Reuse XAPIAN_BIN_PATH to avoid hardcoding more
          paths, and so this works in a debug build too.

Fri Oct 10 17:52:53 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * tests/api_wrdb.cc: Patch to use a different path in win32 build
          to match the different place that the compiled xapian-check is
          placed in.  Should fix bug #301.

Thu Oct 09 05:20:32 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * configure.ac: Change -Wstrict-overflow level to 1 - even level 2
          causes a few warnings (notably in chert_table.cc) to appear with
          GCC 4.3 which are unreasonably difficult to avoid.

Thu Oct 09 05:04:49 GMT 2008  Olly Betts <olly@survex.com>

        * HACKING,configure.ac: Raise autoconf requirement to 2.63.

Wed Oct 08 14:52:03 GMT 2008  Olly Betts <olly@survex.com>

        * docs/valueranges.rst: Fix typos in example code.
        * docs/valueranges.rst,tests/queryparsertest.cc: Drop superfluous
          empty destructor from ValueRangeProcessor subclass.

Wed Oct 08 14:00:04 GMT 2008  Olly Betts <olly@survex.com>

        * common/valuelist.h: Add missing get_docid() method.

Wed Oct 08 12:11:57 GMT 2008  Olly Betts <olly@survex.com>

        * NEWS: Update from ChangeLog.

Wed Oct 08 12:00:39 GMT 2008  Olly Betts <olly@survex.com>

        * backends/Makefile.mk,backends/chert/,backends/database.cc,
          backends/valuelist.cc,common/Makefile.mk,common/database.h,
          common/valuelist.h,include/xapian/valueiterator.h: The start of
          support for iterating along a value stream (currently unused).

Tue Oct 07 10:19:48 GMT 2008  Olly Betts <olly@survex.com>

        * configure.ac: Disable -Wconversion for now - it's not useful for
          older GCC and is buggy in GCC 4.3.

Tue Oct 07 04:53:41 GMT 2008  Olly Betts <olly@survex.com>

        * matcher/queryoptimiser.h: Query::MatchAll no longer gives match
          results ranked by increasing document length.
        * tests/api_db.cc: Extend matchall1 to be a regression test for this.

Tue Oct 07 01:04:51 GMT 2008  Olly Betts <olly@survex.com>

        * matcher/queryoptimiser.cc: Rewrite comment explaining the excess
          precision fix.  Drop unnecessary brackets from return to minimise
          the diff.

Mon Oct 06 07:24:40 GMT 2008  Olly Betts <olly@survex.com>

        * matcher/queryoptimiser.cc: Change the excess precision fix to pass
          both values through "volatile double" rather than "float" on
          platforms where this matters since the former gives better generated
          code as well as more consistent results with other platforms.

Mon Oct 06 07:24:07 GMT 2008  Olly Betts <olly@survex.com>

        * tests/internaltest.cc: Fix comment typo.

Mon Oct 06 02:46:39 GMT 2008  Olly Betts <olly@survex.com>

        * api/editdistance.cc,api/editdistance.h,api/omdatabase.cc: Pass the
          largest edit distance we currently care about into the edit distance
          algorithm so it can terminate early once it knows the edit distance
          exceeds this.  This shortcut is used quite a lot, but there's no
          measurable speed-up in tests on the real world data I have to hand.

Sun Oct 05 12:34:09 GMT 2008  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Adjust percent_factor instead of min_weight
          so that we don't miss some cases, and make the adjustment actually
          correspond with the adjustment in omenquire.cc.

Wed Oct 01 14:11:49 GMT 2008  Olly Betts <olly@survex.com>

        * backends/alltermslist.cc,common/alltermslist.h: We don't need an
          explicit virtual dtor for AllTermsList as it is empty and
          AllTermsList inherits from TermList which has one.

Wed Oct 01 13:21:22 GMT 2008  Olly Betts <olly@survex.com>

        * common/postlist.h,common/termlist.h: Fix comment typo.

Wed Oct 01 00:12:02 GMT 2008  Olly Betts <olly@survex.com>

        * bin/xapian-compact.cc: Add a comment for the previous fix.

Tue Sep 30 22:41:39 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * bin/xapian-compact.cc: Fix bug: if there are both valuestats and
          metadata, don't overwrite the last metadata value with the first
          valuestats tag.

Tue Sep 30 20:31:34 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * configure.ac: Set -Wstrict-overflow to 2 instead of 5, to avoid
          unreasonable warnings under GCC 4.3.

Tue Sep 30 09:45:22 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * api/omdatabase.cc: Add missing include, to compile on GCC 4.3.0.

Mon Sep 29 13:06:42 GMT 2008  Olly Betts <olly@survex.com>

        * NEWS: Update from ChangeLog.

Mon Sep 29 05:04:57 GMT 2008  Olly Betts <olly@survex.com>

        * backends/chert/chert_version.cc: Add VERSIONFILE_SIZE_LITERAL and
          use CompileTimeAssert() to ensure it matches the expression in
          VERSIONFILE_SIZE.  It's very rare for the size to change (it's
          happened once ever) and allows us to build the error string
          literally at compile time.

Sun Sep 28 15:13:11 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * backends/chert/chert_values.cc: Fix bug in lazy update - ensure
          that the document has loaded its values before deleting the old
          one (previously, there was an assertion to this effect, but it
          didn't actually compile, and was also incorrect).
        * tests/api_wrdb.cc: Check that replacing a document with itself
          doesn't lose the values - regression test for the bug fixed by
          this commit.

Sun Sep 28 14:04:01 GMT 2008  Olly Betts <olly@survex.com>

        * backends/chert/chert_values.cc: Fix bug in value updating -
          modifyvalues1 now passes for chert.

Sun Sep 28 12:15:14 GMT 2008  Olly Betts <olly@survex.com>

        * tests/collate-test: Avoid perl warning when generating files which
          don't already exist.

Sat Sep 27 10:36:09 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * tests/api_wrdb.cc: Add test "modifyvalues1" - regression test for
          a bug in the streaming values implementation, and also a fairly
          thorough test of adding and modifying values in databases.

Fri Sep 26 19:12:23 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * api/omdatabase.cc: Fix warning with gcc 4.2 about possible signed
          overflow, by using an unsigned type for the total.

Fri Sep 26 15:48:39 GMT 2008  Olly Betts <olly@survex.com>

        * api/omdatabase.cc: Fixed version of: Avoid the relatively expensive
          edit distance computation for a candidate spelling correction when
          we can reject the candidate as less good than one we've already seen
          by looking at the character frequency histograms.  In a test on
          real-world data, this gave an 15% speed-up in queryparsing time
          with FLAG_SPELLING_CORRECTION set.  The cheap check rejects 90%
          of the words it handles (without the cheap check, the edit distance
          check rejects 92%).

Fri Sep 26 14:40:50 GMT 2008  Olly Betts <olly@survex.com>

        * bin/xapian-check.cc: Check the structure of the value stream chunks.

Fri Sep 26 12:21:32 GMT 2008  Olly Betts <olly@survex.com>

        * tests/api_spelling.cc: Add a regression test for the bug my recently
          added and reverted spelling optimisation introduced.

Fri Sep 26 11:55:18 GMT 2008  Olly Betts <olly@survex.com>

        * tests/Makefile.am,tests/api_spelling.cc,tests/api_wrdb.cc: Split the
          spelling tests out into a separate file.

Fri Sep 26 11:53:45 GMT 2008  Olly Betts <olly@survex.com>

        * tests/api_unicode.cc: Capitalise brief file description.

Fri Sep 26 11:31:46 GMT 2008  Olly Betts <olly@survex.com>

        * backends/inmemory/inmemory_document.cc,
          backends/inmemory/inmemory_document.h: New simpler InMemoryDocument
          class with slightly reduced memory footprint, based on
          RemoteDocument class.

Fri Sep 26 10:36:02 GMT 2008  Olly Betts <olly@survex.com>

        * backends/remote/remote-document.cc,backends/remote/remote-document.h,
          common/document.h: Add new files for RemoteDocument class missed
          from recent commit.  Pass parameter to set_all_values() by non-const
          reference so we can just efficiently swap() the value maps rather
          than copying.

Fri Sep 26 10:31:21 GMT 2008  Olly Betts <olly@survex.com>

        * api/omdocument.cc,common/document.h: Remove unused method
          Xapian::Document::Index::get_all_values().

Fri Sep 26 10:03:17 GMT 2008  Olly Betts <olly@survex.com>

        * backends/remote/,common/document.h: Replace NetDocument with a new
          simpler RemoteDocument class which just sets the values and data in
          its Document::Internal base class.

Fri Sep 26 06:21:08 GMT 2008  Olly Betts <olly@survex.com>

        * backends/chert/chert_database.cc,backends/chert/chert_document.cc,
          backends/chert/chert_document.h,common/document.h: Overhaul
          ChertDocument:  Avoid having a reference-counted pointer to the
          database in the subclass as well as the one now in the base class.
          Also check the lazy flag before we create a ChertDocument object to
          avoid a memory allocation in that code path.  And make the
          now-simple constructor inline-able.

Thu Sep 25 17:38:37 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * Merge lazyupdate branch:
        * api/omdocument.cc,backends/chert/chert_database.cc,
          backends/chert/chert_database.h,backends/chert/chert_values.cc,
          backends/database.cc,common/database.h,common/document.h: Add a
          shortcut for calling replace_document() with a document which was
          just read from the database.  If the document terms were never
          accessed, don't bother updating the termlist, postings and
          position lists.  If the data was never accessed, don't bother
          updating the data.  If the values were never accessed, don't
          bother updating them.  Only fires if we know that the document
          hasn't been modified (or deleted) since it was read from the
          database, to ensure that the lazy access of the data doesn't have
          a visible effect - we enforce this by keeping track of the last
          document read with open_document(), and only using the shortcut
          if this is the document passed to replace_document, and that
          document ID hasn't been passed to replace_document or
          delete_document since.

          Add a method Database::Internal::invalidate_doc_object() which is
          called from the destructor of a document, so that we can reset
          the pointer to modify_shortcut_document in ChertWritableDatabase
          when this happens.

          Document::Internal now keeps a ref-count pointer to the database,
          to ensure that the database is valid when invalidate_doc_object()
          is called on it.

Thu Sep 25 17:35:07 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * Forward-port from branches/lazyupdate:
        * tests/api_wrdb.cc: Extend deldoc5 slightly, to check that the
          DocNotFoundError for a deleted document is raised before the
          flush, as well as after.  Also, test a few more cases which are
          relevant in the lazyupdate scenario.

Thu Sep 25 17:33:21 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * Forward-port from branches/lazyupdate:
        * backends/chert/chert_document.cc,backends/chert/chert_document.h:
          Check for existence of a document when opening it by searching
          for the document length entry, rather than by reading the record
          for the document.  Probably slightly slower if the record is
          going to be accessed anyway, but much faster if it isn't (though
          benchmarking of this is needed).

Thu Sep 25 14:27:07 GMT 2008  Olly Betts <olly@survex.com>

        * Merge valuestreams branch:
        * backends/chert/,bin/xapian-check.cc,bin/xapian-compact.cc,
          docs/admin_notes.rst: Change the chert backend to store values in a
          chunked stream for each value slot to make access more efficient.
          The chunked streams and value stats are now stored in the postlist
          table while the list of used value slots for each document is stored
          in the termlist table, so we no longer need a special table for
          values.
        * bin/xapian-check.cc,bin/xapian-check-flint.cc:  Don't stop checking
          a table after an error in certain cases - instead increment the
          error counter and try to continue checking from the next item.

Thu Sep 25 13:50:15 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * matcher/queryoptimiser.cc,tests/api_anydb.cc: Apply fix for
          platforms with excess precision - this fixes a potential segfault
          on x86 architecture when doing OP_ELITE_SET queries.  Also, add a
          regression test.

Thu Sep 25 03:38:24 GMT 2008  Olly Betts <olly@survex.com>

        * examples/copydatabase.cc: Also copy user metadata.

Wed Sep 24 17:27:33 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * api/omdatabase.cc: Back out, for now, Olly's change from
          yesterday to avoid some edit distance checks; counting the
          frequency of letters doesn't take into account the number of
          substitutions, so spelling corrections which involve
          substitutions are missed.

Wed Sep 24 12:48:39 GMT 2008  Olly Betts <olly@survex.com>

        * unicode/tclUniData.cc: Update to Unicode 5.1 (bug#265).
        * tests/api_unicode.cc: Add tests for some of the changes
          in Unicode 5.1.

Tue Sep 23 14:58:54 GMT 2008  Olly Betts <olly@survex.com>

        * api/omdatabase.cc: Avoid the relatively expensive edit distance
          computation for a candidate spelling correction when we can reject
          the candidate as less good than one we've already seen by looking
          at the character frequency histograms.

Mon Sep 22 09:21:55 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * Forward-port from branches/lazyupdate:
        * backends/chert/chert_postlist.cc: Fix return value of jump_to()
          to be true only if the exact item specified was found in the
          doclen list (previously also returned true if an item following
          the item being searched for was found in the chunk).  Note that
          there is no test for this fix included in this forward-port, but
          an implicit test is included in the lazyupdate branch, and will
          be here when that branch is merged to trunk.

Mon Sep 22 07:58:06 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * HACKING: Mention that setting XAPIAN_DEBUG_LOG to '-' has a
          special effect.

Mon Sep 22 06:27:23 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * docs/remote_protocol.html: Update documentation of remote
          protocol to mention UUID being passed in REPLY_GREETING and
          REPLY_UPDATE (added in revision [11369]).

Thu Sep 18 11:52:05 GMT 2008  Olly Betts <olly@survex.com>

        * tests/api_wrdb.cc: Fix cursordelbug1 to hopefully work on Microsoft
          Windows.

Thu Sep 18 11:50:04 GMT 2008  Olly Betts <olly@survex.com>

        * backends/chert/chert_cursor.cc,backends/chert/chert_table.cc,
          backends/chert/chert_table.h: More assertions and improved debug
          logging coverage.  Use rare() to mark a couple of checks which
          almost always have the same result.  Make an assertion about the
          level of a Btree block into an always-compiled-in check which throws
          an exception, as this isn't a sanity check of internal state.

Thu Sep 18 05:26:27 GMT 2008  Olly Betts <olly@survex.com>

        * backends/chert/chert_postlist.cc,backends/flint/flint_postlist.cc:
          Fix comment describing format of postlist chunk (collection freq
          was missing).

Wed Sep 17 12:38:51 GMT 2008  Olly Betts <olly@survex.com>

        * HACKING: Fix typos in XAPIAN_DEBUG_FLAGS documentation.

Sat Sep 13 11:14:02 GMT 2008  Olly Betts <olly@survex.com>

        * HACKING,configure.ac: Upgrade libtool requirement to 2.2.6a.

Fri Sep 05 11:40:55 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * tests/api_replicate.cc: Test that the UUID of a replica is equal
          to the UUID of the original database.

Fri Sep 05 09:38:35 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/database.h,api/omdatabase.cc: Add
          Database.get_uuid() which returns a unique identifier for the
          database.
        * tests/api_anydb.cc: Add test uuid1 to test basic get_uuid()
          behaviour.
        * common/database.h: Extend documentation comment for get_uuid() a
          bit.
        * backends/remote/remote-database.cc,common/remote-database.h,
          net/remoteserver.cc: Add support for get_uuid() to remote
          databases.

Thu Sep 04 11:37:54 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * tests/Makefile.am: Remove accidentally committed reference to
          apitest_sortconsist.txt, which only exists in my local checkout
          and in a patch in ticket #216.

Thu Sep 04 04:39:32 GMT 2008  Olly Betts <olly@survex.com>

        * HACKING,configure.ac: We now hard require autoconf 2.62, so it's
          safe to use AC_TYPE_SSIZE_T.  (bug#135)

Thu Sep 04 04:26:59 GMT 2008  Olly Betts <olly@survex.com>

        * configure.ac: Set version to 1.1.0.

Thu Sep 04 03:32:06 GMT 2008  Olly Betts <olly@survex.com>

        * AUTHORS,NEWS,configure.ac: Sync with 1.0.8.

Wed Sep 03 15:23:54 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * tests/Makefile.am,tests/api_percentages.cc: Add new test file for
          tests related to percentage weights (there are a few around which
          could be moved here, and there's another one in the patch in
          ticket #216).  Add test in this file which uses a PostingSource
          with carefully constructed weights to check the rounding
          behaviour for percentage cutoffs.

Wed Sep 03 07:58:29 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * matcher/multimatch.cc: Adjust min_weight values calculated for
          percent_cutoff in the same manner as in omenquire.cc, to allow
          for excess precision in the same way.

Wed Sep 03 07:15:49 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * backends/chert/chert_version.cc: Display numerical value of
          correct size of chert version file in error message if size is
          incorrect, rather than a complicated expression giving the
          correct size.

Tue Sep 02 10:41:46 GMT 2008  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Remove FIXME for pushing check_at_least
          handling into the remote backend, which was done for 1.0.2.

Tue Sep 02 06:48:50 GMT 2008  Olly Betts <olly@survex.com>

        * bin/xapian-inspect.cc: Show the help message on start-up.  Correct
          the alias for next from ' ' to ''.  Avoid reading outside of input
          string when it is empty.  Bug#286.

Tue Sep 02 04:19:34 GMT 2008  Olly Betts <olly@survex.com>

        * tests/stemtest.cc: Handle the new supplemental stemming data.

Tue Sep 02 03:05:10 GMT 2008  Olly Betts <olly@survex.com>

        * tests/stemtest.cc: Update for new xapian-data directory structure.

Tue Aug 26 09:26:49 GMT 2008  Olly Betts <olly@survex.com>

        * common/debuglog.h: Handle logging from ctor, dtor, and
          void-returning functions/methods with a separate class
          (DebugLogFuncVoid).  Fix outdent handling for non-logged message
          types.  Fix detection of active exceptions to check if the exception
          was already active when we entered the current function.  This
          probably means that "RETURN_VOID" is no longer needed, so comment
          it out.

Tue Aug 26 07:34:16 GMT 2008  Olly Betts <olly@survex.com>

        * HACKING: Document explicitly that XAPIAN_DEBUG_FLAGS=- gives you all
          debug messages.

Tue Aug 26 00:57:32 GMT 2008  Olly Betts <olly@survex.com>

        * bin/xapian-check.cc: Fix reversed check for whether a table is in a
          flint or chert database.

Mon Aug 25 12:03:36 GMT 2008  Olly Betts <olly@survex.com>

        * backends/flint/flint_termlisttable.cc: Remove FIXME about dropping
          something if we make an incompatible database version bump - that's
          not going to happen now for flint.  Avoid packing doclen for an
          empty termlist.  Add explicit cast for char for prev_term.size().

Sun Aug 24 11:42:21 GMT 2008  Olly Betts <olly@survex.com>

        * common/Makefile.mk: Fix build with --enable-log=profile.

Sun Aug 24 12:41:22 BST 2008  Olly Betts <olly@survex.com>

        * HACKING: Add a bit of discussion of --enable-log=profile.  Tweak
          formatting in one place and wording in another.

Sat Aug 23 00:48:40 GMT 2008  Olly Betts <olly@survex.com>

        * tests/collate-test: Only update files which have changed to avoid
          rebuilding all apitest's source files when only one has changed.

Fri Aug 22 01:02:57 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lt: Merge upstream "Check-in Number: 5571"
          (no code changes in our modified version).

Fri Aug 22 01:00:15 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Fix comment typo.

Fri Aug 22 00:55:26 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Merge upstream "Check-in Number: 5564".

Fri Aug 22 00:44:14 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/lemon.c,queryparser/queryparser.lt: Merge upstream
          "Check-in Number: 5488" and "5563".
        * queryparser/queryparser.lt: Fix compilation for previous merge
          (I fixed it in the generated file before!)

Fri Aug 22 00:07:22 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lt: Merge upstream "Check-in Number: 5472".

Thu Aug 21 04:15:41 GMT 2008  Olly Betts <olly@survex.com>

        * configure.ac: Remove code which checks for --enable-debug and
          --enable-debug-verbose (deprecated since 1.0.0) and gives an error
          pointing to the replacements.
        * docs/deprecation.rst: Document the replacements here.

Thu Aug 21 00:57:52 GMT 2008  Olly Betts <olly@survex.com>

        * common/omdebug.h: Remove DEBUGLINE completely.
        * backends/flint/flint_table.cc,backends/inmemory/inmemory_database.cc,
          queryparser/queryparser.lt: Replace remaining DEBUGLINE uses.
        * backends/inmemory/inmemory_database.cc: Don't need <list>.

Thu Aug 21 00:37:08 GMT 2008  Olly Betts <olly@survex.com>

        * common/debuglog.h,common/omdebug.h: Define LOGLINE, etc to no-op
          versions when XAPIAN_DEBUG_VERBOSE isn't defined.
        * api/,backends/chert/,backends/flint/,
          backends/inmemory/inmemory_database.cc,
          backends/multi/multi_postlist.cc,backends/multi/multi_termlist.cc,
          expand/esetinternal.cc,expand/expandweight.cc,matcher/,
          net/remoteconnection.cc: Use LOGLINE or LOGVALUE instead of
          DEBUGLINE.

Wed Aug 20 13:33:56 GMT 2008  Olly Betts <olly@survex.com>

        * common/debuglog.h: Don't need omtime.h.

Wed Aug 20 06:11:31 GMT 2008  Olly Betts <olly@survex.com>

        * examples/quest.cc: Fix to catch QueryParserError instead of const
          char * which Xapian < 1.0.0 threw instead.

Wed Aug 20 05:50:26 GMT 2008  Olly Betts <olly@survex.com>

        * docs/valueranges.rst: Expand on some sections.

Wed Aug 20 04:43:07 GMT 2008  Olly Betts <olly@survex.com>

        * tests/api_nodb.cc: Clarify in comments that this affected 1.0.7.

Wed Aug 20 04:33:22 GMT 2008  Olly Betts <olly@survex.com>

        * api/omenquire.cc: Simplify RSet::remove_document() and
          RSet::contains() a little.  Fix output of RSet::get_description().
        * tests/api_nodb.cc: Add regression test rset4 for
          RSet::get_description() fix.

Wed Aug 20 02:45:04 GMT 2008  Olly Betts <olly@survex.com>

        * common/omdebug.h: Remove DebugMsg() macro which is no longer used.

Tue Aug 12 05:03:34 GMT 2008  Olly Betts <olly@survex.com>

        * backends/flint/flint_table.cc,backends/flint/flint_table.h:
          Backport elimination of find_tag() to flint.

Tue Aug 12 04:10:41 GMT 2008  Olly Betts <olly@survex.com>

        * backends/chert/chert_table.cc,backends/chert/chert_table.h:
          ChertTable::find_tag() is only used by ChertTable::get_exact_entry()
          so remove the former folding its code into the latter.

Mon Aug 11 03:06:10 GMT 2008  Olly Betts <olly@survex.com>

        * backends/chert/chert_spelling.h,backends/chert/chert_synonym.h:
          Remove random closing bracket from a couple of comments.

Mon Aug 11 03:03:19 GMT 2008  Olly Betts <olly@survex.com>

        * api/postingsource.cc: Always initialise max_value in the constructor
          body for consistency.

Sat Aug 09 09:56:06 GMT 2008  Olly Betts <olly@survex.com>

        * tests/api_valuestats.cc: Add valuestats4 as a regression test for
          the previous fix.

Sat Aug 09 06:10:49 GMT 2008  Olly Betts <olly@survex.com>

        * backends/chert/chert_database.cc,backends/chert/chert_database.h:
          Write cached valuestats changes to disk when we automatically flush
          changes due to the number of documents indexed.

Wed Aug 06 11:27:29 GMT 2008  Olly Betts <olly@survex.com>

        * api/omdocument.cc,backends/chert/chert_document.cc,
          backends/chert/chert_document.h,backends/flint/flint_document.cc,
          backends/flint/flint_document.h,
          backends/inmemory/inmemory_document.cc,
          backends/inmemory/inmemory_document.h,
          backends/remote/net_document.cc,backends/remote/net_document.h,
          common/document.h: Change do_get_all_values() to pass a reference
          to the std::map to return the result in rather than returning the
          std::map.

Wed Aug 06 07:39:08 GMT 2008  Olly Betts <olly@survex.com>

        * docs/replication.rst: Adding missing (C) for new section addded
          recently.

Wed Aug 06 06:27:59 GMT 2008  Olly Betts <olly@survex.com>

        * backends/alltermslist.cc,backends/chert/,backends/flint/,
          backends/inmemory/inmemory_alltermslist.cc,
          backends/inmemory/inmemory_alltermslist.h,
          backends/multi/multi_alltermslist.cc,common/alltermslist.h,
          common/multialltermslist.h: Add a default "not implemented"
          implementation of AllTermsList::get_approx_size() and remove the
          "not implemented" versions in all the subclasses.  Remove empty
          destructors for ChertSpellingTermList, and FlintSpellingTermList.
        * api/maptermlist.h,api/omdocument.cc: MapTermList::get_approx_size()
          should never be used, so make it "Assert(false); return 0;".

Wed Aug 06 02:24:48 GMT 2008  Olly Betts <olly@survex.com>

        * api/omdatabase.cc,backends/multi/multi_alltermslist.cc,
          common/multialltermslist.h: Reimplement MultiAllTermsList to use a
          heap rather than linearly scanning - operations during iteration
          should now be O(log(n)) rather than O(n) where n is the number of
          databases.

Tue Aug 05 23:50:19 GMT 2008  Olly Betts <olly@survex.com>

        * tests/Makefile.am: Fix "make clean" to remove cached databases again
          and "make check" to remove cached databases like the previous change
          aimed to do.

Tue Aug 05 23:48:52 GMT 2008  Olly Betts <olly@survex.com>

        * tests/api_db.cc: Use TEST_EQUAL(a, b) rather than TEST(a == b).

Tue Aug 05 12:44:58 GMT 2008  Olly Betts <olly@survex.com>

        * common/alltermslist.h: Fix parameter name in doxygen comment.

Tue Aug 05 06:28:15 GMT 2008  Olly Betts <olly@survex.com>

        * backends/chert/chert_database.cc,backends/flint/flint_database.cc:
          Don't generate a changeset file for the first revision of a database
          (since we might as well just send the whole database) - addresses
          part of bug#278.  Clean up exceptions to pass errno in the errno
          parameter rather than incorporating strerror(errno) in the message
          parameter.

Tue Aug 05 06:00:11 GMT 2008  Olly Betts <olly@survex.com>

        * tests/api_replicate.cc: Remove "sleep(1);" from testcase replicate1
          which is no longer required now we generate proper UUIDs.

Tue Aug 05 03:07:11 GMT 2008  Olly Betts <olly@survex.com>

        * api/replication.cc,include/xapian/replication.h: Remove
          DatabaseReplica::get_parameter() and set_parameter() as they're no
          longer used for storing the database UUID, and Richard said the
          thinking behind wanting them was "flawed".

Tue Aug 05 02:03:24 GMT 2008  Olly Betts <olly@survex.com>

        * backends/chert/chert_version.cc: Comment tweak.

Tue Aug 05 02:02:29 GMT 2008  Olly Betts <olly@survex.com>

        * api/replication.cc,backends/flint/flint_database.cc,common/utils.cc,
          common/utils.h: Use the UUID stored by the backend rather than
          storing it ourselves as a database replica parameter.

Mon Aug 04 14:58:21 GMT 2008  Olly Betts <olly@survex.com>

        * backends/flint/flint_database.cc,backends/flint/flint_version.cc,
          backends/flint/flint_version.h: Generate a UUID when a new flint
          database is created, and lazily generate one for existing flint
          databases which don't have one.  Store the UUID in a new "uuid"
          file in the database directory to avoid having to change the
          flint database format incompatibly.

Mon Aug 04 14:13:53 GMT 2008  Olly Betts <olly@survex.com>

        * backends/chert/chert_database.cc,backends/chert/chert_version.cc,
          backends/chert/chert_version.h,configure.ac: Generate a UUID when
          a chert database is created, and store it in the version file.

Mon Aug 04 12:16:54 GMT 2008  Olly Betts <olly@survex.com>

        * backends/chert/chert_version.cc: Make exception messages more
          consistent.

Mon Aug 04 12:15:14 GMT 2008  Olly Betts <olly@survex.com>

        * backends/chert/chert_database.cc,backends/chert/chert_version.cc,
          backends/chert/chert_version.h: Remove the code to handle upgrading
          flint versions >= 200704230 and < 200709120 as it's just dead code
          for chert.

Sun Aug 03 14:34:31 GMT 2008  Olly Betts <olly@survex.com>

        * api/replication.cc: Track the replica numbers using an int rather
          than two strings.  Eliminate two racey uses of file_exists().

Sun Aug 03 11:37:06 GMT 2008  Olly Betts <olly@survex.com>

        * docs/replication.rst: Add section on backend support.  Make FIXME a
          comment.  Fix erroneous reference to '"-h" parameter'.

Sun Aug 03 11:28:27 GMT 2008  Olly Betts <olly@survex.com>

        * api/replication.cc,tests/harness/testrunner.cc: Make replication
          work for the chert backend.

Sat Aug 02 16:47:04 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/enquire.h: Correct documentation comment (iterator
          doesn't return terms, it returns mset items).

Sat Aug 02 14:16:24 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * docs/admin_notes.rst: Fix a typo.

Sat Aug 02 14:06:37 GMT 2008  Olly Betts <olly@survex.com>

        * backends/chert/chert_cursor.cc,backends/flint/flint_cursor.cc:
          Fix comment typo in previous commit.

Sat Aug 02 13:04:05 GMT 2008  Olly Betts <olly@survex.com>

        * backends/chert/chert_cursor.cc,backends/flint/flint_cursor.cc: Fix
          FlintCursor::del() and ChertCursor::del() to leave the cursor on the
          next key when iterating over the unflushed revision (previously the
          cursor would end up an extra key along in this case).  (Bug#287)
        * tests/api_wrdb.cc: Add regression test cursordelbug1.

Sat Aug 02 05:09:38 GMT 2008  Olly Betts <olly@survex.com>

        * api/replication.cc,common/utils.cc,common/utils.h: Change
          removedir() to just return if passed a non-existent path and
          document this.  Make use of this to avoid having to call
          dir_exists() before remove_dir().

Sat Aug 02 04:43:45 GMT 2008  Olly Betts <olly@survex.com>

        * tests/api_db.cc,tests/apitest.cc: Make use of new
          BackendManager::get_database_path() to eliminate knowledge of
          BackendManagerFlint's implementation from test stubdb1.  Put the
          stubdb files in a .stub subdirectory and don't remove them after
          each test to aid debugging failing tests.  Also now run stubdb tests
          under chert and multi backends.  Add more stubdb tests for the
          recently added features.

Sat Aug 02 04:39:08 GMT 2008  Olly Betts <olly@survex.com>

        * tests/harness/: Adjust the BackendManager interface to reduce code
          duplication in subclasses - for backends where the concept of a
          path to the database makes sense, we now support a
          get_database_path() method and use this in the default
          implementation of get_database() in the base class.

Sat Aug 02 04:36:48 GMT 2008  Olly Betts <olly@survex.com>

        * tests/apitest.h: Use std::string() in preference to "".

Sat Aug 02 04:35:13 GMT 2008  Olly Betts <olly@survex.com>

        * backends/dbfactory.cc: Fix handling of new "inmemory" type in stub
          databases.

Sat Aug 02 01:49:35 GMT 2008  Olly Betts <olly@survex.com>

        * tests/Makefile.am: Remove the cached test databases in before
          running the testsuite by making check-local do the same as
          clean-local.

Sat Aug 02 01:42:36 GMT 2008  Olly Betts <olly@survex.com>

        * backends/dbfactory.cc: Add support for "inmemory" to stub database
          files (it's useful now they can be writable).  Don't just ignore
          lines with no spaces in in stub database files.

Thu Jul 31 13:13:30 GMT 2008  Olly Betts <olly@survex.com>

        * backends/Makefile.mk,backends/database.cc,backends/dbfactory.cc,
          common/database.h,include/xapian/dbfactory.h: Add new
          Auto::open_stub() overload which opens a stub database file
          containing a single entry as a WritableDatabase.  Move the
          non-remote database factory API functions from backends/database.cc
          to new file backends/dbfactory.cc, leaving the former solely for
          methods of Database::Internal.  A stub database file is now allowed
          to contain no database entries, which results in an empty Database
          object (this avoids user code having to special case to handle "0 or
          more" databases).
        * tests/api_nodb.cc: Tidy up #include directives.  Enhance nosuchdb1
          to check that we get a reasonable error message - previously we
          got "Couldn't detect type of database".
        * include/xapian/dbfactory.h: Improve doxygen comment for
          InMemory::open().

Thu Jul 31 09:36:41 GMT 2008  Olly Betts <olly@survex.com>

        * tests/api_replicate.cc: This is a new file, so use <cstdlib> rather
          than <stdlib.h>.

Wed Jul 30 23:10:19 GMT 2008  Olly Betts <olly@survex.com>

        * backends/database.cc: Bad lines in a stub file were being ignored
          after we'd seen a good entry.
        * tests/api_db.cc: Add regression test.

Wed Jul 30 14:42:04 GMT 2008  Olly Betts <olly@survex.com>

        * generate-exceptions.in: Use std::string() in preference to "".

Tue Jul 29 23:55:21 GMT 2008  Olly Betts <olly@survex.com>

        * AUTHORS: Add Henrik Brix Andersen.

Tue Jul 22 06:01:44 GMT 2008  Olly Betts <olly@survex.com>

        * backends/flint/flint_table.cc,backends/flint/flint_table.h:
          Eliminate other_base_letter member of FlintTable - its value can
          always be easily determined from base_letter.

Mon Jul 21 12:33:54 GMT 2008  Olly Betts <olly@survex.com>

        * xapian-config.in: Add bug report URL to xapian-config --help output.

Mon Jul 21 11:55:18 GMT 2008  Olly Betts <olly@survex.com>

        * configure.ac: Put the bug report URL as the third parameter to
          AC_INIT.  Add proper m4 quoting in a few places (nowhere that
          should actually change behaviour).

Mon Jul 21 01:03:12 GMT 2008  Olly Betts <olly@survex.com>

        * tests/apitest.cc,tests/harness/testsuite.cc,
          tests/harness/testsuite.h: Report subtotals per backend, rather than
          per testgroup per backend to make the output much clearer to scan.

Mon Jul 21 00:36:07 GMT 2008  Olly Betts <olly@survex.com>

        * tests/apitest.cc: Use startswith().

Sun Jul 20 14:16:18 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * tests/harness/testsuite.h: Add missing "iomanip" header needed
          for setprecision calls.

Sun Jul 20 11:35:35 GMT 2008  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h,include/xapian/matchspy.h,
          include/xapian/valueiterator.h: Remove explicit empty non-virtual
          destructors since the compiler will create them by default anyway.

Sun Jul 20 10:18:52 GMT 2008  Olly Betts <olly@survex.com>

        * NEWS: Update from ChangeLog.

Sun Jul 20 10:09:36 GMT 2008  Olly Betts <olly@survex.com>

        * Forward-port change from branches/1.0:
        * api/omenquire.cc: Fix percentage calculation to cope with excess
          precision on x86.  Fix method name for convert_to_percent_internal
          in debug logging.

Sun Jul 20 09:13:32 GMT 2008  Olly Betts <olly@survex.com>

        * backends/flint/,bin/xapian-check-flint.cc,bin/xapian-check-flint.h,
          bin/xapian-compact.cc: Store the tablename in FlintTable as a const
          char * - it's a constant string and std::string adds a needless
          space overhead.

Sun Jul 20 09:10:49 GMT 2008  Olly Betts <olly@survex.com>

        * bin/xapian-check.cc: Follow-on fix for last change - we need to use
          strcmp() to compare C strings.

Sun Jul 20 07:09:38 GMT 2008  Olly Betts <olly@survex.com>

        * backends/chert/,bin/xapian-check.cc: Store the tablename in
          ChertTable as a const char * - it's a constant string and
          std::string adds a needless space overhead.

Sat Jul 19 14:19:58 GMT 2008  Olly Betts <olly@survex.com>

        * backends/chert/chert_database.cc,backends/chert/chert_values.cc,
          backends/chert/chert_values.h: Fix WritableDatabase::add_document()
          and replace_document() not to be O(n*n) in the number of values in
          the new document.
        * backends/flint/flint_database.cc,backends/flint/flint_values.cc,
          backends/flint/flint_values.h: Backport fix to flint.
        * tests/api_wrdb.cc: Add testcase bigoaddvalue to make sure we don't
          regress to O(n*n) (or worse!)

Fri Jul 18 13:24:43 GMT 2008  Olly Betts <olly@survex.com>

        * tests/api_wrdb.cc: Rewrite lazytablebug1 testcase to avoid having
          to run xapian-compact.

Fri Jul 18 11:59:42 GMT 2008  Olly Betts <olly@survex.com>

        * backends/chert/chert_table.cc: Fix handling of a table created
          lazily after the database has had commits, and which is then
          cursored while still in sequential mode.
        * backends/flint/flint_table.cc: Backport fix to flint.
        * tests/api_wrdb.cc: Add testcase lazytablebug1.

Fri Jul 18 02:52:55 GMT 2008  Olly Betts <olly@survex.com>

        * tests/api_wrdb.cc: Enable test crashrecovery1 for chert.  Finish off
          unfinished comment.

Fri Jul 18 02:38:22 GMT 2008  Olly Betts <olly@survex.com>

        * tests/api_wrdb.cc,tests/harness/testrunner.cc,
          tests/harness/testrunner.h: Add "synonyms" test backend property
          and use it to decide where to run synonym tests so they get run on
          chert too.  Move virtual TestRunner destructor out of the header.
          Don't skip all the spelling tests on chert.

Fri Jul 18 00:56:17 GMT 2008  Olly Betts <olly@survex.com>

        * tests/api_wrdb.cc: Eliminate literal top-bit-set characters.

Fri Jul 18 00:40:06 GMT 2008  Olly Betts <olly@survex.com>

        * backends/chert/chert_values.cc: Kill superfluous else tokens.

Thu Jul 17 13:00:55 GMT 2008  Olly Betts <olly@survex.com>

        * backends/chert/chert_table.cc,backends/chert/chert_table.h:
          Eliminate other_base_letter member of ChertTable - its value can
          always be easily determined from base_letter.

Thu Jul 17 12:24:19 GMT 2008  Olly Betts <olly@survex.com>

        * backends/chert/chert_database.cc: Add space after catch for
          consistency.

Thu Jul 17 11:51:57 GMT 2008  Olly Betts <olly@survex.com>

        * examples/copydatabase.cc: Use C++ forms of C headers.  Only treat
          '\' as a directory separator on platforms where it is.  Update
          counter every 13 counting up to the end so that the digits all
          "rotate" and the counter ends up on the exact total.

Wed Jul 16 10:10:32 GMT 2008  Olly Betts <olly@survex.com>

        * tests/perftest/perftest.cc: Use uname() or gethostname() to get the
          hostname on Unix, rather than piping output from uname -n.  Use
          startswith() where appropriate.  Prefer resize() and erase() to
          assigning a string a substring of itself.  Make internal functions
          static.  Prefer string() to "".  Fold sed | sed and grep | sed into
          single sed invocations.

Wed Jul 16 05:16:00 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/lemon.c,queryparser/queryparser.lt: Merge upstream
          "Check-in Number: 5404" and "5405".

Wed Jul 16 04:48:45 GMT 2008  Olly Betts <olly@survex.com>

        * NEWS: Sync with 1.0.7 release.  Start to clean up ChangeLog entry
          pile.

Mon Jul 14 05:13:55 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Fix a typo, remove "\n" from the end of
          ErrorMsg() calls since it will get stripped anyway, and escape
          literal '%' in ErrorMsg() third arguments.

Sun Jul 13 13:04:58 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Update note of upstream version we're synced
          against.

Sun Jul 13 12:56:58 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Tweak previous merged patch so that we still
          get #line directives for code in %include directives.

Sun Jul 13 12:54:03 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Merge upstream "Check-in Number: 5335".
          Reduces the size of the stripped object file for
          queryparser_internal.cc by about 0.5%.

Sun Jul 13 12:32:06 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Fix typo in comment.

Sun Jul 13 12:30:38 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Merge upstream "Check-in Number: 5334".  No
          change to the generated code in our case.

Sun Jul 13 12:24:13 GMT 2008  Olly Betts <olly@survex.com>

        * configure.ac: Add missing hard requirement for libtool 2.2.4.

Sun Jul 13 12:09:40 GMT 2008  Olly Betts <olly@survex.com>

        * configure.ac,HACKING: Hard require autoconf 2.62 and automake 1.10.1.
          Move all information about particular autoconf and automake versions
          to HACKING.
        * configure.ac: Use LT_INIT in preference to AC_PROG_LIBTOOL.  On
          Linux and k*bsd-gnu, override libtool's link_all_deplibs_CXX to
          "no".  On Linux, override libtool's sys_lib_dlsearch_path_spec to a
          list generated in a more reliable way which includes *all* the
          default directories.  Remove workaround which sets docdir for
          autoconf < 2.60 since we now require 2.62.
        * xapian-core.spec.in: We no longer need to run autoreconf to work
          around libtool's incomplete sys_lib_dlsearch_path_spec or to pick
          up distro-specific patches for link_all_deplibs.

Sun Jul 13 11:33:33 GMT 2008  Olly Betts <olly@survex.com>

        * Makefile.am: No need to explicitly list m4/*.m4 in EXTRA_DIST as
          automake will automatically ship any such files which are needed.

Sun Jul 13 09:15:34 GMT 2008  Olly Betts <olly@survex.com>

        * api/omenquire.cc: Back out the rounding of percentages change (at
          least for now), as it makes percentage cut-offs work inconsistently.
        * tests/api_anydb.cc: Add test pctcutoff3 which demonstrates the issue.

Sun Jul 13 07:01:02 GMT 2008  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Fix documentation comment for
          MSet::get_rank() - the 'document judged "most relevant" will have
          rank of 0' only when ordering primarily by relevance.

Sun Jul 13 06:17:13 GMT 2008  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Tweak layout (makes the backport diff
          much smaller and clearer, and reduces indentation by a level for a
          chunk of code).

Fri Jul 11 13:44:56 GMT 2008  Olly Betts <olly@survex.com>

        * tests/harness/testutils.cc: Fix typos in recent improved output.

Fri Jul 11 13:04:41 GMT 2008  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Collect up all the scaling factors we apply
          to the estimated number of matches and apply them in one go to avoid
          rounding the result more than once.

Fri Jul 11 12:21:11 GMT 2008  Olly Betts <olly@survex.com>

        * tests/api_anydb.cc: Add testcase for percent cutoff plus collapsing
          which most likely would have failed before Richard's recent fix
          for the lower bound with collapsing and a matchdecider.

Fri Jul 11 05:30:02 GMT 2008  Olly Betts <olly@survex.com>

        * backends/database.cc: Add support for XAPIAN_PREFER_CHERT
          environmental variable.

Thu Jul 10 22:21:46 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * api/postingsource.cc: Fix skip_to() so that it doesn't advance if
          it's already in a suitable position.
        * include/xapian/postingsource.h: Specify that skip_to() should
          stay in the same position if the current position is equal to
          the docid argument of skip_to().
        * tests/api_db.cc: Add valueweightsource3 to check that skip_to()
          stays in the same position in this case.

Thu Jul 10 13:14:14 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * api/postingsource.cc: Performance improvement - open documents
          lazily (using the internal interface) so that we don't access
          the record table for each one - we now just access the value
          table.  Leads to considerable speed up for me (of the order of 5
          times faster).

Thu Jul 10 09:49:39 GMT 2008  Olly Betts <olly@survex.com>

        * HACKING: Overhaul the sections on building from SVN.  Remove ':'
          from the end of headings.

Wed Jul 09 10:43:01 GMT 2008  Olly Betts <olly@survex.com>

        * configure.ac: The workaround to avoid probe code for F77, GCJ, and
          RC being added to configure is no longer required now that we're
          using libtool 2.2 so remove it.

Wed Jul 09 09:40:43 GMT 2008  Olly Betts <olly@survex.com>

        * Makefile.am,acinclude.m4,autoconf/dir_contents,
          autoconf/rjb_find_stlport.m4,autoconf/type_socklen_t.m4,
          m4/dir_contents,m4/rjb_find_stlport.m4,m4/type_socklen_t.m4: Move
          the m4 macros which we ship for building configure from into the m4
          subdirectory and remove acinclude.m4 - now aclocal will pull in the
          required macros automatically.

Wed Jul 09 09:14:31 GMT 2008  Olly Betts <olly@survex.com>

        * Makefile.am: Update for m4 -> m4-macros change.

Wed Jul 09 09:11:45 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * matcher/externalpostlist.cc: Fix segfault if get_maxweight() is
          called when the postlist has reached end.  This happens if the
          end is reached during decay of an AND_MAYBE postlist to an AND.
        * common/postlist.h,matcher/: Add comments documenting that
          recalc_maxweight() may be called after the postlist has reached
          the end, and noting why this is safe in various cases.

Wed Jul 09 09:02:08 GMT 2008  Olly Betts <olly@survex.com>

        * m4-macros/dir_contents,m4-macros/xapian.m4,m4/dir_contents,
          m4/xapian.m4: Move xapain.m4 to a new subdirectory (m4-macros) since
          libtoolize now installs m4 files into subdirectory m4 which we don't
          really want picking up by applications building against an
          uninstalled xapian-core.

Wed Jul 09 08:03:11 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * Makefile.am,m4/dir_contents,xapian.m4: Move xapian.m4 back into
          the m4 subdirectory.  For uninstalled builds, we need xapian.m4
          to be in a directory without any other .m4 files, or we'll be
          likely to pull in the wrong versions of other macros.  The top
          level directory contains aclocal.m4 and acinclude.m4, so isn't
          suitable for this.  Also, the xapian-bindings and omega
          compilations hadn't been updated with the new xapian.m4 location,
          so this fixes the build for them.

Wed Jul 09 07:17:38 GMT 2008  Olly Betts <olly@survex.com>

        * Makefile.am,configure.ac: Use AC_CONFIG_MACRO_DIR and
          ACLOCAL_AMFLAGS as libtoolize 2.2.4 recommends.

Wed Jul 09 06:37:21 GMT 2008  Olly Betts <olly@survex.com>

        * acinclude.m4: Remove reference to definedir.m4.

Wed Jul 09 05:32:24 GMT 2008  Olly Betts <olly@survex.com>

        * Makefile.am,m4/dir_contents,m4/xapian.m4,xapian.m4: Move xapian.m4
          to the top level rather than devoting a whole directory to a single
          file.

Wed Jul 09 05:23:02 GMT 2008  Olly Betts <olly@survex.com>

        * Makefile.am,autoconf/definedir.m4,configure.ac: AC_DEFINE_DIR()
          hasn't been used for years so remove it.

Wed Jul 09 02:32:38 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * api/postingsource.cc,include/xapian/postingsource.h: Add an
          alternative constructor for ValueWeightPostingSource which allows
          the upper bound on the weights stored to be specified manually.
          This is useful for database formats like flint which don't have
          an upper bound available.  It could conceivably also be useful if
          you know that a query will only be accessing a subset of
          documents for which you know a more precise upper bound than the
          database-wide upper bound.

Wed Jul 09 01:59:56 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * matcher/externalpostlist.cc: Add DEBUGCALL macros to enable
          easier debugging.

Mon Jul 07 12:40:20 GMT 2008  Olly Betts <olly@survex.com>

        * HACKING,NEWS: Update to reflect the autotools now being in the SVN
          tree, and the versions we are now bootstrapping with.
        * NEWS: Update from ChangeLog.

Sun Jul 06 22:59:04 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * matcher/multimatch.cc,matcher/remotesubmatch.cc,
          matcher/remotesubmatch.h: Apply patch from ticker #279 to improve
          performance of matches with multiple remote databases.  This adds
          a special case for the top match being from a remote database, to
          avoid accessing the termlist to calculate the percentage scaling
          factor.

Sun Jul 06 22:55:17 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * api/omenquire.cc: When calculating percentages, round to the
          nearest integer, rather than rounding down.  There was a FIXME
          about this, but no explanation of why it hadn't already been
          done, and I can see no bad side effects so far.  The most obvious
          positive effect is that queries which should get precisely 100%
          will no longer be assigned 99% due to rounding errors.

Sun Jul 06 22:48:30 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * tests/api_anydb.cc: Add new test, topercent2, checking the
          percentage values returned by standard searches, both against
          known current values for some of the hits, and against a search
          with a "local" backend.  Also, in rsetmultidb1, test the return
          value of mset_range_is_same_weights().
        * tests/api_db.cc: In rsetmultidb2, test the return value of
          mset_range_is_same_weights().

Sun Jul 06 22:46:23 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * tests/harness/testutils.cc,tests/harness/testutils.h: Add
          function to test if two mset ranges have the same percentages,
          and slightly improve the messages on failure of the mset range
          comparison tests.

Fri Jul 04 23:31:14 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * NEWS: Swap two words to make a sentence make sense.

Fri Jul 04 11:40:13 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * matcher/multimatch.cc: Fix calculation of lower bound when
          collapsing and match deciders are used.  (Only tended to manifest
          when the collapsing threw away a lot of documents, and when also
          using a custom sort order, but I don't think that was required.)
          Also, perform the adjustments due to percentage cutoffs after the
          other adjustments, to avoid the lower bound setting for
          collapsing overriding the lower bound from the percentage cutoff.
        * tests/harness/index_utils.cc: Add a value to value slot 12, which
          only has 5 different values, for testing this bug.
        * tests/api_db.cc: Add regression test for calculation of the lower
          bound.

Fri Jul 04 10:24:16 GMT 2008  Olly Betts <olly@survex.com>

        * Makefile.am,bin/Makefile.mk,examples/Makefile.mk: Remove
          extra_cleandirs as automake 1.10.1 fixes the bug which it was working
          around.

Fri Jul 04 04:36:59 GMT 2008  Olly Betts <olly@survex.com>

        * HACKING: Synchronise tiny change from branches/1.0 which isn't
          on trunk for some reason.

Fri Jul 04 04:35:19 GMT 2008  Olly Betts <olly@survex.com>

        * HACKING: Bootstrap with newer versions of the autotools:
          + autoconf 2.61 -> 2.62: faster
          + automake 1.10 -> 1.10.1: "make clean" cleans all .libs
            directories.
          + libtool 1.5.24 -> 2.2.4: many improvements; faster.

Thu Jul 03 03:17:42 GMT 2008  Olly Betts <olly@survex.com>

        * docs/glossary.rst,docs/intro_ir.html: Improve intro_ir a bit, and
          link to the definition of RSet in the glossary.

Thu Jul 03 01:30:56 GMT 2008  Olly Betts <olly@survex.com>

        * examples/quest.cc: Output get_description() of the parsed query.

Sun Jun 29 18:56:06 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * matcher/multimatch.cc: Rename percent_factor variable, used here
          as part of the percent_cutoff mechanism, to make its purpose
          clearer, and to avoid confusing it with percent_scale in this
          file, and percent_factor used elsewhere in matcher/.

Sat Jun 28 21:51:42 GMT 2008  Olly Betts <olly@survex.com>

        * docs/doxygen_api_conf.in,docs/doxygen_full_conf.in: Disable
          "JAVADOC_AUTOBRIEF" since we always try to write a brief
          description explicitly, and it causes problems in some cases.

Sat Jun 28 21:32:21 GMT 2008  Olly Betts <olly@survex.com>

        * common/: Fix typos in doxygen comments.

Sat Jun 28 10:33:06 GMT 2008  Olly Betts <olly@survex.com>

        * languages/stem.cc: Add "nl" for selecting the Dutch stemmer, which
          was accidentally missing from the list of language codes recognised.
          Reported by Joey Hess in Debian bug #484458.
        * tests/api_nodb.cc: Extend stemlangs1 to check that all the language
          codes work, and so does Stem("").

Fri Jun 27 00:27:31 GMT 2008  Olly Betts <olly@survex.com>

        * NEWS: Update from ChangeLog and against 1.0 branch.

Thu Jun 26 17:17:41 GMT 2008  Olly Betts <olly@survex.com>

        * net/remoteconnection.cc: The "already done" check in do_close() is
          no longer useful, so remove it.  Shrink the try block to only cover
          the call to send_message().

Thu Jun 26 08:19:41 GMT 2008  Olly Betts <olly@survex.com>

        * net/remoteconnection.cc: Don't bother to send MSG_SHUTDOWN for a
          read-only Database - just closing the connection is enough.

Thu Jun 26 04:49:06 GMT 2008  Olly Betts <olly@survex.com>

        * backends/chert/chert_btreebase.cc: Don't need <string.h> as well as
          <cstring>.
        * backends/flint/flint_btreebase.cc,bin/xapian-replicate-server.cc:
          Prefer <cXXX> to <XXX.h>.

Tue Jun 24 04:31:10 GMT 2008  Olly Betts <olly@survex.com>

        * tests/harness/testsuite.cc: Use resize() to truncate a string.

Tue Jun 24 04:23:59 GMT 2008  Olly Betts <olly@survex.com>

        * net/remoteconnection.cc: Fill in a guess at the __WIN32__ version of
          the code needed in RemoteConnection::do_close().

Tue Jun 24 04:06:02 GMT 2008  Olly Betts <olly@survex.com>

        * net/progclient.cc: Fix debug logging for __WIN32__.

Tue Jun 24 03:11:09 GMT 2008  Olly Betts <olly@survex.com>

        * net/remoteserver.cc: Just delete the Database * pointer db.  The
          Database dtor is virtual, so it's fine to delete a WritableDatabase
          via a Database * pointer.

Tue Jun 24 01:29:12 GMT 2008  Olly Betts <olly@survex.com>

        * backends/remote/remote-database.cc,common/remoteconnection.h,
          net/remoteconnection.cc,net/replicatetcpclient.cc: Wait for the
          connection to close rather than using a different shutdown message
          which requires a reply.  Mostly this is more backport-friendly, but
          it also avoids a message reply (albeit it not in a performance
          sensitive situation).  Needs implementing for __WIN32__.

Tue Jun 24 01:07:16 GMT 2008  Olly Betts <olly@survex.com>

        * net/remoteserver.cc: Unwrap comment.

Tue Jun 24 00:52:02 GMT 2008  Olly Betts <olly@survex.com>

        * net/remoteserver.cc: Kill a blank line.

Tue Jun 24 00:49:50 GMT 2008  Olly Betts <olly@survex.com>

        * backends/remote/remote-database.cc,common/remoteconnection.h,
          common/remoteprotocol.h,docs/remote_protocol.html,
          net/remoteconnection.cc,net/remoteserver.cc,
          net/replicatetcpclient.cc: Revert r10713 in preparation for applying
          an alternative fix.

Mon Jun 23 21:51:42 GMT 2008  Olly Betts <olly@survex.com>

        * HACKING: Expand list of keywords for brace cuddling.  Add rationale.

Mon Jun 23 01:53:03 GMT 2008  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Cuddle braces after for loops for
          consistency with the rest of the code.  Use string::resize() to
          shrink a string rather than assigning the result of substr(0, x).
        * HACKING: Explicitly document that braces should be cuddled after
          control flow structures.

Mon Jun 23 01:34:39 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * tests/perftest/perftest_matchdecider.cc: Reworked performance
          test to include a test of an alldocspostingiterator, and to only
          rebuild the database involved if it's not up-to-date.

Mon Jun 23 01:20:25 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * common/valuestats.h: Add missing #include.

Mon Jun 23 01:10:19 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * bin/xapian-compact.cc: Add support for the valuestats which are
          now held in the value table for chert.

Sun Jun 22 23:44:46 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * backends/chert/: Change ChertAllDocsPostList to inherit from
          ChertPostList and use the doclen list from the posting table
          rather than using the termlist table.  This helps towards making
          the termlist table optional, reduces the amount of data read in
          the process of iterating through an alldocs postlist, and can
          make a massive difference in performance: I've measured the time
          to iterate through all the documents in a 1000000 document
          database, and the patch speeds this operation up by a factor of
          6.

          Add `keep_reference` parameter to the ChertPostList constructor,
          instead of not keeping a reference if the term is empty.
          ChertAllDocsPostList uses this to keep a reference to the
          database while using an empty term.

          Add ChertAllDocsModifiedPostList class, inspired by
          ChertModifiedPostList, (with corresponding new source files) to
          handle alldocs postlist with modifications: this wasn't needed
          before since the termlist is updated immediately after changes.

Sun Jun 22 21:37:00 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * tests/harness/: Add "name" parameter to
          BackendManager::get_writable_database_as_database(), and
          BackendManager::get_writable_database_again(), (and subclasses)
          so that old databases can be revived.  Useful for the performance
          tests.

Sun Jun 22 09:30:44 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * tests/api_anydb.cc: Expand tests for alldocspostlist, covering
          iteration of modified databases.

Fri Jun 20 08:28:12 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * backends/remote/remote-database.cc,common/remoteconnection.h,
          common/remoteprotocol.h,docs/remote_protocol.html,
          net/remoteconnection.cc,net/remoteserver.cc,
          net/replicatetcpclient.cc: Add new message
          "MSG_SHUTDOWNANDCONFIRM" which causes a reply of
          "REPLY_SHUTDOWNCONFIRMATION" to be sent after the database has
          been closed.  Use this message when closing a writable database,
          to ensure that the destructor doesn't return until the lock on
          the database has been released.

Tue Jun 17 14:28:46 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * tests/perftest/freemem.cc,tests/perftest/perftest.cc: Patches
          from Charlie to allow perftest to compile on windows.

Tue Jun 17 13:23:18 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * backends/chert/chert_btreebase.cc,backends/chert/chert_lock.cc,
          backends/flint/flint_btreebase.cc,backends/flint/flint_lock.cc,
          bin/xapian-replicate-server.cc: Add some missing includes, needed
          for GCC 4.3.

Tue Jun 17 11:00:56 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * tests/perftest/get_machine_info.in: Updates to hopefully get
          useful version information on windows.

Mon Jun 16 12:13:48 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * tests/harness/testsuite.cc: Don't call backendmanager->posttest()
          if no backendmanager is in use.

Sun Jun 15 02:19:03 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * tests/harness/: Wait for subprocesses to finish at end of tests,
          with remotetcp backend, to avoid test failures due to final flush
          of a subprocess writing to the database used for the next test.

Thu Jun 12 09:09:44 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * common/unaligned.h: Add some casts to make GCC 4.3.0 happy.

Thu Jun 12 09:06:21 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * backends/chert/chert_btreebase.cc: Add missing #include (needed
          for compilation with GCC 4.3.0).

Tue Jun 10 17:38:07 GMT 2008  Olly Betts <olly@survex.com>

        * tests/harness/testrunner.cc: Use startswith().  Fix memory leak.

Fri Jun 06 11:02:56 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * Makefile.am,tests/Makefile.am: Fix make check-* targets to match
          the current set of backends.  Add .multichert and .multiflint to
          the clean-local hook in tests/.  Leave .multi there for now, to
          clean up existing .multi directories in the automated build trees.

Fri Jun 06 08:26:49 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * common/Makefile.mk: Add valuestats.h to distribution.

Thu Jun 05 23:37:37 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * backends/chert/chert_values.cc: Fix compile error in assertion in
          recently added code for calculating value statistics.

Thu Jun 05 21:38:01 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Use std::vector<Term *> rather than
          std::list<Term *> so that size() is O(1) with any (sane) compiler
          and because a list of pointers isn't space efficient (and we don't
          need to splice here).  Factor out common code in if branches in
          TermGroup::as_group().

Thu Jun 05 17:04:23 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Use "startswith()" to avoid creating
          a new string object.

Thu Jun 05 09:09:54 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Remove variable which is set but
          never otherwise used.

Thu Jun 05 09:08:22 GMT 2008  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc: Don't call find() twice - reuse the result
          we just got.  Use AssertEq() rather than Assert() on an equality
          test.  Clarify a comment.

Wed Jun 04 21:32:11 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * queryparser/queryparser.lemony: Fix more O(N*N) scaling, this
          time in the way in which auto multiword synonyms are detected.
          Instead of trying all possible sub-sequences of terms for
          synonyms, use synonym_keys and the skip_to() method to check for
          synonyms which actually exist in the synonyms table.
        * tests/queryparsertest.cc: Extend the scaling test to check this
          case.

Wed Jun 04 12:42:32 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * queryparser/queryparser.lemony: Fix various cases where queries
          were constructed pair-wise within a loop, which leads to O(N*N)
          scaling behaviour (because each intermediate query construction
          is O(M) where M is the size of that query, and there are N of
          them).
        * tests/queryparsertest.cc: Add test to check that parsing of a
          query scales roughly linearly with query size.
        * common/omtime.h: Add method to get an OmTime as a double - used
          by the new query parser test.

Wed Jun 04 12:18:35 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * tests/harness/testsuite.h: Fix TEST_LESSER_OR_EQUAL and
          TEST_LESSER macros to compare in the right direction (these
          macros are, so far, unused).

Mon Jun 02 18:19:22 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * api/postingsource.cc: Make ValueWeightPostingSource use value
          statistics, if they're available, to return accurate term
          frequency statistics, and a better maxweight.
        * tests/api_db.cc: Add valueweightsource2, to test the bounds and
          maxweight returned by a ValueWeightPostingSource for backends
          with valuestats support.  Replace !multi condition in
          valueweightsource1 with a SKIP_TEST_FOR_BACKEND invocation, since
          this is a shortcoming we should fix at some point.

Mon Jun 02 18:16:52 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * tests/harness/testrunner.cc,tests/harness/testrunner.h: Replace
          DO_TESTS_FOR_BACKEND macro with a do_tests_for_backend method;
          the method version takes a BackendManager * and gets the backend
          name from that, rather than requiring it to be specified.
          Requires addition of a couple of extra private members to the
          TestRunner class.

Mon Jun 02 10:27:45 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/database.h: Add get_value_freq(),
          get_value_lower_bound() and get_value_upper_bound() methods to
          Database, to get statistics about the values stored in a slot.
        * api/omdatabase.cc,backends/chert/,backends/database.cc,
          backends/inmemory/inmemory_database.cc,
          backends/inmemory/inmemory_database.h,
          backends/remote/remote-database.cc,common/,
          net/remoteserver.cc: Add support for the value statistics methods
          to chert, inmemory, multi and remote databases.
        * tests/Makefile.am,tests/api_valuestats.cc,
          tests/harness/testrunner.cc,tests/harness/testrunner.h: Add test
          of the value statistics code, and a "valuestats" backend property
          to select only backends supporting this.

Mon Jun 02 10:26:12 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * tests/harness/backendmanager.cc,tests/harness/backendmanager.h:
          Move implementation of get_dbtype() method out of header.

Mon Jun 02 09:44:34 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * rests/harness/: Make flint and chert subtypes for the remote and
          multi backend types.  These are specified (on the command line
          and elsewhere) by the main type (multi, remotetcp or remoteprog),
          followed by an underscore, followed by the subtype (flint or
          chert).  Change return type of BackendManager::get_dbtype() to a
          string instead of a const char *, to allow backend managers which
          have subtypes to generate the result dynamically.
        * tests/harness/backendmanager_remote.cc,
          tests/harness/backendmanager_remote.h,
          tests/harness/backendmanager_remoteprog.cc,
          tests/harness/backendmanager_remoteprog.h,
          tests/harness/backendmanager_remotetcp.cc,
          tests/harness/backendmanager_remotetcp.h: Add new
          BackendManagerRemote class as a common base for the two remote
          backend managers, and move duplicated code into it.  Add
          parameter to its constructor, and to the constructors of the
          remote backend manager subclasses, to control the type of
          database to use at the remote end.
        * tests/harness/backendmanager_multi.cc,
          tests/harness/backendmanager_multi.h: Add parameter to
          constructor of BackendManagerMulti, controlling the type of
          database to use for sub databases.  Put the generated database
          files in ".multiflint" and ".multichert" instead of ".multi".
        * tests/harness/testrunner.cc: Update list of backend properties to
          contain the new subtypes.  Modify use_backend() to allow either
          the full backend type, or just the main part of the backend type,
          to be specified, so that, for example "-b multi" will run both
          the multi_chert and multi_flint tests.  Add test runs for all the
          subtypes now supported.  Catch string exceptions thrown by the
          test runner - these can currently occur when neither flint or
          chert are compiled in.
        * tests/apitest.cc,tests/apitest.h: Adjust return type of
          get_dbtype(), implement skip_test_*_backend functions which just
          check the prefix of the type, and implement SKIP_TEST_*_BACKEND
          macros using these.
        * tests/api_anydb.cc: Modify check for running on a multi backend
          to copy with getting a string back from get_dbtype().

Sat May 31 00:55:03 GMT 2008  Olly Betts <olly@survex.com>

        * tests/Makefile.am,tests/perftest/Makefile.mk: Remove unnecessary
          quotes.

Thu May 29 16:04:56 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * tests/perftest/: Update svn:ignore property for perftest changes.

Thu May 29 14:33:51 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * tests/perftest/perftest.cc: Include the xapian version string in
          the test output.  For runs from SVN, also include the subversion
          revision number and branch in the output.

Wed May 28 21:47:37 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * matcher/valuegepostlist.cc,matcher/valuerangepostlist.cc,
          matcher/valuerangepostlist.h: Apply patch from ticket #270 to
          implement ValueRangePostList::next() by using an alldocs posting
          list, instead of trying docids in turn.  This is much more
          efficient if document IDs are sparse.  Since both methods require
          accessing the termlist table to check for the next document, and
          some cursory performance tests don't show a measurable difference
          in speed, I think this approach is at least safe, and probably
          superior.

Wed May 28 21:28:38 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * tests/perftest/perftest.cc: Log the flush threshold for indexing
          runs.
        * tests/perftest/perftest_randomidx.cc: Set the run size back to a
          reasonably large value.

Wed May 28 20:48:10 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * configure.ac,tests/,tests/perftest/,tests/perftest_matchdecider.cc,
          tests/perftest_randomidx.cc: Move performance test source files
          into a subdirectory.  Modify output of performance tests to
          include some basic system information, and also to include
          details of the parameters used to perform indexing tests.

Wed May 28 20:42:56 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * HACKING: Fix numbering in checklist for developers so that it
          doesn't repeat section 5.

Sun May 25 14:21:40 GMT 2008  Olly Betts <olly@survex.com>

        * NEWS: Update to match 1.0 branch.

Sun May 25 00:24:09 GMT 2008  Olly Betts <olly@survex.com>

        * NEWS: Start to update from ChangeLog, stripping out backported
          changes.

Sat May 24 16:38:49 GMT 2008  Olly Betts <olly@survex.com>

        * NEWS,configure.ac: Update to match 1.0 branch.

Sat May 24 16:33:19 GMT 2008  Olly Betts <olly@survex.com>

        * tests/termgentest.cc: Pass Xapian::Document by const reference.

Sat May 24 14:30:59 GMT 2008  Olly Betts <olly@survex.com>

        * bin/xapian-compact.cc: Only warn about duplicate user metadata keys
          if the tags aren't the same.

Sat May 24 12:14:55 GMT 2008  Olly Betts <olly@survex.com>

        * bin/Makefile.am: Put special -I options in foo_CPPFLAGS not
          foo_CXXFLAGS.  As well as being the more correct place, this also
          means that AM_CXXFLAGS is now used when compiling xapian-check and
          xapian-compact, which in particular enables compiler warnings.
        * bin/xapian-check.cc,bin/xapian-compact.cc,bin/xapian-check-flint.cc:
          Fix warnings (one unused variable and a few cases of a variable
          masking another with the same name - none problematic in practice).

Fri May 23 09:22:24 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * backends/inmemory/inmemory_database.cc: Fix bug in inmemory
          database, which resulted in the values not being stored correctly
          if document IDs were sparse.
        * matcher/valuerangepostlist.cc: Fix the next() method not to
          return document IDs which aren't present in the database - this
          used to happen if the document IDs were sparse.
        * tests/api_anydb.cc: Add "valuerange2", a regression test for
          OP_VALUE_LE returning document IDs which aren't present in the
          database, and "alldocspl1", which does a generic test of an
          alldocs postlist in a sparse database (this passed before the
          above changes, but might as well be added anyway).

Wed May 21 19:33:12 GMT 2008  Olly Betts <olly@survex.com>

        * docs/Makefile.am: test == isn't portable - use test = instead.

Wed May 21 13:22:23 GMT 2008  Olly Betts <olly@survex.com>

        * HACKING: Fix path for atreus.

Wed May 21 13:21:08 GMT 2008  Olly Betts <olly@survex.com>

        * HACKING: Fix search&replace error - the CVS module is still called
          www.xapian.org.

Wed May 21 13:16:39 GMT 2008  Olly Betts <olly@survex.com>

        * HACKING: Reword, since environmental variable PATH isn't "set by
          $PATH".

Wed May 21 13:16:21 GMT 2008  Olly Betts <olly@survex.com>

        * HACKING: ixion -> atreus.

Wed May 21 13:12:07 GMT 2008  Olly Betts <olly@survex.com>

        * include/xapian/database.h: Improve documentation comment.

Sun May 18 05:20:29 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * docs/remote_protocol.html: Remove spurious "i" at end of line.

Sat May 17 11:53:54 GMT 2008  Olly Betts <olly@survex.com>

        * tests/harness/testutils.h: Layout and macro parameter name tweaks.

Fri May 16 20:42:05 GMT 2008  Olly Betts <olly@survex.com>

        * bin/xapian-compact.cc: Check that all source databases are the same
          type (flint or chert).  Copy over "iamchert" for chert.  Update
          terminology - the "meta file" is now called the "version file".

Fri May 16 17:33:22 GMT 2008  Olly Betts <olly@survex.com>

        * backends/chert/chert_database.cc,backends/chert/chert_version.cc:
          Need <cstdio> for rename().

Fri May 16 17:27:56 GMT 2008  Olly Betts <olly@survex.com>

        * backends/chert/chert_database.cc: Correct FIXME comment and mark
          as "FIXME:1.2.0".

Fri May 16 17:21:59 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * tests/harness/testrunner.cc,tests/harness/testrunner.h: Add
          condition to test if the backend is "inmemory".
        * tests/perftest_randomidx.cc: Change the run size from 1000
          documents to 1000000.  Disable this test for the inmemory
          backend, because it will quickly use up all the memory on the
          machine.

Fri May 16 16:56:25 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * HACKING: Add note about some more PDF generation tools which are
          needed, and that doxygen requires them to be on PATH.

Fri May 16 16:38:40 GMT 2008  Olly Betts <olly@survex.com>

        * HACKING: Ubuntu now needs tetex-extra too.

Fri May 16 10:05:30 GMT 2008  Olly Betts <olly@survex.com>

        * bin/xapian-compact.cc: Fix to not reject chert databases during the
          "up front" check.

Thu May 15 20:20:14 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * net/progclient.cc: Set namespace for close methods (to avoid
          conflicting with the close method I'm working on adding to
          database internal).

Wed May 14 17:14:53 GMT 2008  Olly Betts <olly@survex.com>

        * backends/database.cc: Default to flint not chert for a new database.

Wed May 14 17:11:56 GMT 2008  Olly Betts <olly@survex.com>

        * api/postingsource.cc,docs/postingsource.rst,
          include/xapian/postingsource.h,matcher/externalpostlist.cc:
          PostingSource::check() now returns the valid flag rather than
          passing it in by reference to be set.  Change "should" to "must"
          for the get_termfreq_est() requirement at Richard's suggestion.
          Add parameter names to PostingSource method prototypes and update
          documentation comments to match.

Wed May 14 15:34:38 GMT 2008  Olly Betts <olly@survex.com>

        * docs/Makefile.am,docs/index.html,docs/postingsource.rst: Add
          topic document for PostingSource.

Mon May 12 17:27:13 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/postingsource.h: Add documentation comments for
          ValueWeightPostingSource, and tweak
          PostingSource::get_maxweight() comment a bit more.

Mon May 12 16:51:01 GMT 2008  Olly Betts <olly@survex.com>

        * include/xapian/postingsource.h: Clarify get_maxweight() if the
          maximum from now on.

Mon May 12 06:51:53 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * api/postingsource.cc,include/xapian/postingsource.h,tests/api_db.cc,
          tests/harness/index_utils.cc: Add ValueWeightPostingSource, which
          reads a value, applies sortable_unserialise() to it, and returns
          that as the weight for each document.

Sun May 11 23:49:07 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/lemon.c,queryparser/queryparser.lt: Do a final sync by
          comparing our versions to the latest vanilla upstream.  Add a note
          to each file of the latest revision sync-ed against.
        * queryparser/lemon.c: Enable '#define PRIVATE static'.

Sun May 11 22:48:27 GMT 2008  Olly Betts <olly@survex.com>

        * NEWS: Add a note of the speed-up that the recent QueryParser changes
          have given.

Sun May 11 22:10:19 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Merge upstream "Check-in Number: 5053".

Sun May 11 22:01:48 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lt: Merge upstream "Check-in Number: 5052".

Sun May 11 21:56:03 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lt: Fix a comment typo.

Sun May 11 21:52:30 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Merge upstream "Check-in Number: 4751".

Sun May 11 21:51:18 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lt: Merge upstream "Check-in Number: 4745".

Sun May 11 21:47:03 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lt: Comment out memset() call added by
          one of the earlier merged upstream changes - a later comment on
          the ticket referred to notes that this was actually a bug in the
          grammar of the people who reported it.

Sun May 11 21:44:46 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lt: Merge upstream "Check-in Number: 4743".

Sun May 11 21:41:55 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lt: Merge upstream "Check-in Number: 4738".

Sun May 11 21:33:13 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/lemon.c,queryparser/queryparser.lt: Merge upstream
          "Check-in Number: 4736".
        * queryparser/lemon.c: Add %syntax_error directive since lemon has
          changed it's error recovery strategy if you don't have one.

Sun May 11 20:54:31 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: If we hit a syntax error, don't
          bother feeding further tokens to the parser!

Sat May 10 21:42:44 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Merge upstream "Check-in Number: 4641".

Sat May 10 21:33:10 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Merge upstream "Check-in Number: 4473".

Sat May 10 21:31:25 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Merge upstream "Check-in Number: 4439".

Sat May 10 21:28:27 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Merge upstream "Check-in Number: 4274".

Sat May 10 21:25:35 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Merge upstream "Check-in Number: 4190".

Sat May 10 21:20:16 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Merge upstream "Check-in Number: 4160".

Sat May 10 21:07:15 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Merge upstream "Check-in Number: 3753".

Sat May 10 21:03:19 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/lemon.c,queryparser/queryparser.lt: Merge upstream
          "Check-in Number: 3738".

Sat May 10 20:00:09 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Merge upstream "Check-in Number: 3654".

Sat May 10 19:55:32 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Merge upstream "Check-in Number: 3594".

Sat May 10 19:46:05 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Merge upstream "Check-in Number: 3593".

Sat May 10 19:44:15 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Merge upstream "Check-in Number: 3591".

Sat May 10 19:40:12 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Merge upstream "Check-in Number: 3528".

Sat May 10 19:38:36 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Merge upstream "Check-in Number: 3476".

Sat May 10 19:36:06 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Merge upstream "Check-in Number: 3333".

Sat May 10 19:33:33 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lt: Merge upstream "Check-in Number: 3244".

Sat May 10 19:29:18 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Merge upstream "Check-in Number: 3226".

Sat May 10 19:19:48 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lt: Merge upstream "Check-in Number: 3224".

Sat May 10 19:14:18 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/lemon.c,queryparser/queryparser.lt: Merge upstream
          "Check-in Number: 3210".

Sat May 10 18:56:50 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lt: Merge upstream "Check-in Number: 3181".

Sat May 10 17:05:35 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Merge upstream "Check-in Number: 3126".

Sat May 10 16:51:31 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Merge upstream "Check-in Number: 2764".

Sat May 10 16:40:48 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/lemon.c,queryparser/queryparser.lt: Merge upstream
          "Check-in Number: 2761".

Sat May 10 16:32:45 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lt: Merge upstream "Check-in Number: 2458".

Sat May 10 16:29:55 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Merge upstream "Check-in Number: 2345".

Sat May 10 16:08:28 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lt: Merge upstream "Check-in Number: 2302".

Sat May 10 15:50:23 GMT 2008  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Merge upstream "Check-in Number: 2208".

Sat May 10 15:03:59 GMT 2008  Olly Betts <olly@survex.com>

        * tests/harness/testsuite.cc: Prefer `str.assign(ptr)' to `str =
          string(ptr)'.

Sat May 10 14:48:38 GMT 2008  Olly Betts <olly@survex.com>

        * api/matchspy.cc,api/replication.cc: Prefer `str.assign(ptr, len)' to
          `str = string(ptr, len)'.

Fri May 09 16:53:19 GMT 2008  Olly Betts <olly@survex.com>

        * net/remoteserver.cc: No entries in dispatch[] are NULL, so there's
          no point testing for it.

Fri May 09 16:51:10 GMT 2008  Olly Betts <olly@survex.com>

        * net/remoteconnection.cc: Remove pointless conversion to size_t which
          breaks GCC 2.95 build.

Fri May 09 16:22:46 GMT 2008  Olly Betts <olly@survex.com>

        * api/replication.cc: Needs <cstdio> for rename().

Fri May 09 15:41:08 GMT 2008  Olly Betts <olly@survex.com>

        * tests/harness/testutils.cc: No need for an explicit std::endl when
          calling TEST_AND_EXPLAIN().

Fri May 09 15:38:22 GMT 2008  Olly Betts <olly@survex.com>

        * api/replication.cc: Use '\n' rather than endl in the middle of
          writing stuff, since endl forces a flush which just adds useless
          overhead.

Fri May 09 15:24:42 GMT 2008  Olly Betts <olly@survex.com>

        * common/omdebug.h: Fix RETURN macro to work on GCC 2.95 for the case
          `RETURN(string())'.

Fri May 09 08:33:35 GMT 2008  Olly Betts <olly@survex.com>

        * include/xapian/postingsource.h: Add a protected default ctor so that
          code subclassing PostingSource actually compiles!

Thu May 08 16:41:59 GMT 2008  Olly Betts <olly@survex.com>

        * include/xapian/postingsource.h: Add doxygen comments for
          Xapian::PostingSource.  Add private assignment operator and
          copy constructor to prevent copying.

Thu May 08 16:40:49 GMT 2008  Olly Betts <olly@survex.com>

        * common/postlist.h: Fix one doxygen comment and improve another.

Mon May 05 15:22:24 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * tests/Makefile.am: Clean up .chert in clean-local.

Mon May 05 14:52:34 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * docs/Makefile.am: Adapt the dist-check hook to work with a VPATH
          build in non-maintainer mode.

Mon May 05 13:18:19 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * docs/Makefile.am: Fix "make distcheck" by using dist-hook to
          install generated files, with the appropriate dependency, instead
          of wildcards in EXTRA_DIST which don't give the correct expansion
          unless the files happened to be generated already by another
          rule. Also, ensure that the documentation is generated before
          attempting to install it.

Sun May 04 09:30:53 GMT 2008  Olly Betts <olly@survex.com>

        * backends/chert/chert_version.cc,backends/flint/flint_version.cc,
          common/stringutils.h: Move CONST_STRLEN() into stringutils.h.
        * backends/chert/chert_database.cc,backends/flint/flint_database.cc:
          Use CONST_STRLEN().

Sat May 03 18:56:34 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * api/omenquire.cc: Reset the internal sorter pointer to NULL when
          changing to a sort by value. Fixes #256.
        * tests/api_sorting.cc: Add regression test.

Sat May 03 18:52:27 GMT 2008  Olly Betts <olly@survex.com>

        * include/xapian/unicode.h: Mark internal functions as @internal.

Sat May 03 18:43:12 GMT 2008  Olly Betts <olly@survex.com>

        * docs/doxygen_api_conf.in: Disable header and directory relationship
          graphs in the API documentation as they aren't interesting to users.

Sat May 03 18:12:30 GMT 2008  Olly Betts <olly@survex.com>

        * docs/gen_codestructure_doc.in: Link to trac instead of viewvc.

Sat May 03 17:25:02 GMT 2008  Olly Betts <olly@survex.com>

        * docs/replication_protocol.rst: Fix a few typos.

Sat May 03 15:53:24 GMT 2008  Olly Betts <olly@survex.com>

        * backends/chert/chert_database.cc,backends/flint/flint_database.cc:
          If Database::reopen() is called and the database revision on disk
          hasn't changed, then do as little work as possible.  Even if it
          has changed, don't bother to recheck the version file (bug#261).

Sat May 03 10:28:30 GMT 2008  Olly Betts <olly@survex.com>

        * configure.ac: Improve code to prevent probing for f77, etc.

Sat May 03 10:17:05 GMT 2008  Olly Betts <olly@survex.com>

        * matcher/rset.cc: Missing change from last commit.

Sat May 03 09:25:29 GMT 2008  Olly Betts <olly@survex.com>

        * api/omenquire.cc,common/,expand/Makefile.mk,expand/esetinternal.cc,
          expand/expand.cc: Rewrite class ESet::Internal, incorporating the
          functionality which used to be in the internal OmExpand class.  The
          expand operation now uses a min heap rather than calling
          nth_element() repeatedly - this should reduce the complexity of the
          expand operation by a factor of n/log(n) where n is the requested
          ESet size.

Fri May 02 15:51:29 GMT 2008  Olly Betts <olly@survex.com>

        * common/ortermlist.h,expand/ortermlist.cc: Kill FreqAdderOrTermList's
          explicit empty dtor.

Thu May 01 16:38:40 GMT 2008  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc,api/replication.cc,backends/chert/,
          backends/flint/,backends/inmemory/inmemory_positionlist.cc,
          common/utils.cc,matcher/stats.cc,tests/perftest_matchdecider.cc,
          tests/perftest_randomidx.cc: Assorted formatting tweaks.

Thu May 01 16:32:58 GMT 2008  Olly Betts <olly@survex.com>

        * common/unaligned.h: Fix ";;" to ";" after AssertRel calls.

Thu May 01 16:12:05 GMT 2008  Olly Betts <olly@survex.com>

        * docs/doxygen_api_conf.in,docs/doxygen_full_conf.in: Tell doxygen to
          expand XAPIAN_VISIBILITY_DEFAULT so it doesn't appear in collated
          API documentation.

Wed Apr 30 10:57:53 GMT 2008  Olly Betts <olly@survex.com>

        * HACKING: Update bugzilla references and URLs to reflect the move
          to trac.  Update the "fixing a bug" checklist to mention backporting
          and updating the release notes.

Wed Apr 30 10:40:30 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * backends/remote/remote-database.cc: Fix error message displayed
          when remote protocol version doesn't match to display the minor
          part of the version number supplied by the server correctly.

Tue Apr 29 17:37:10 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * AUTHORS: Add Alexandre Gauthier, for supplying a method for doing
          python packaging for Windows.

Tue Apr 29 16:20:47 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * common/fileutils.cc: Fix variable name for windows compilation.

Tue Apr 29 06:50:53 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * backends/chert/chert_table.cc,backends/flint/flint_table.cc:
          Remove some debugging code, left over from writing the
          replication code.

Mon Apr 28 12:11:38 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * backends/chert/chert_btreebase.cc,backends/chert/chert_table.cc,
          backends/flint/flint_btreebase.cc,backends/flint/flint_table.cc:
          Fix issue #259 - update the last_block value whenever allocating
          a new value, so that next_for_sequential doesn't give up too
          early.  Also, in both next_for_sequential and
          prev_for_sequential, for writable databases, check the built-in
          cursor at all levels for the new block rather than just reading
          from disk, since newly allocated blocks won't have been written
          to disk yet.  Also, test the return type of next() when reading
          subsequent parts of tags, and raise DatabaseCorruptError if it
          returns false; this prevents incorrect data being returned,
          leading to a zlib error.
        * tests/api_wrdb.cc: Add regression test.

Fri Apr 25 08:39:28 GMT 2008  Olly Betts <olly@survex.com>

        * api/postingsource.cc: Missed change from last but one commit.

Thu Apr 24 13:44:48 GMT 2008  Olly Betts <olly@survex.com>

        * matcher/queryoptimiser.cc: Reserve size of postlists vector.

Thu Apr 24 13:38:51 GMT 2008  Olly Betts <olly@survex.com>

        * include/xapian/postingsource.h,matcher/externalpostlist.cc,
          matcher/externalpostlist.h,tests/api_db.cc: Add a default
          PostingSource::get_description() method so users who don't care
          aren't forced to define one.  Make PostingSource::reset() a standard
          method and call it automatically so that a PostingSource-using
          Query can be run more than once without extra work.

Thu Apr 24 11:24:30 GMT 2008  Olly Betts <olly@survex.com>

        * matcher/queryoptimiser.cc: Don't need <queue>.

Thu Apr 24 04:50:43 GMT 2008  Olly Betts <olly@survex.com>

        * tests/api_db.cc: Add test that boolean branches of matches don't
          cause Xapian::PostingSource to be asked for weights.

Thu Apr 24 03:27:39 GMT 2008  Olly Betts <olly@survex.com>

        * matcher/externalpostlist.cc,matcher/externalpostlist.h,
          matcher/queryoptimiser.cc: ExternalPostList now takes the
          factor into account, so works with OP_SCALE_WEIGHT, and
          doesn't call get_weight()/get_maxweight() for a boolean
          branch.
        * tests/api_db.cc: Add tests for OP_SCALE_WEIGHT.

Thu Apr 24 02:16:08 GMT 2008  Olly Betts <olly@survex.com>

        * xapian-config.in: Back out --swigheaders.

Wed Apr 23 11:37:45 GMT 2008  Olly Betts <olly@survex.com>

        * matcher/externalpostlist.h: Need to initialise current.

Wed Apr 23 07:57:35 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * tests/termgentest.cc: Put the inclusion of "utils.h" back; needed
          for om_tostring().

Wed Apr 23 04:20:55 GMT 2008  Olly Betts <olly@survex.com>

        * include/xapian/replication.h: Eliminate reference to FlintDatabase
          from doc comment since it's not user-visible, and chert supports
          replication too.  No need for '#include <xapian/database.h>' so
          remove.  Remove references to non-existent parameter 'remotename'.
          'DatabaseCorrupt error' -> 'DatabaseCorruptError'.

Wed Apr 23 04:19:53 GMT 2008  Olly Betts <olly@survex.com>

        * include/xapian/query.h: Wrap Xapian::Query::Internal class
          definition in "#ifndef SWIG" ... "#endif" in preparation for getting
          SWIG to directly parse it.

Wed Apr 23 02:16:53 GMT 2008  Olly Betts <olly@survex.com>

        * api/omquery.cc: Prefer string() to "".

Wed Apr 23 02:16:10 GMT 2008  Olly Betts <olly@survex.com>

        * include/xapian/query.h: Fix doc comment typo (doesn't affect API
          docs).

Wed Apr 23 00:59:40 GMT 2008  Olly Betts <olly@survex.com>

        * api/postingsource.cc: Another missing file.

Wed Apr 23 00:34:34 GMT 2008  Olly Betts <olly@survex.com>

        * include/xapian/postingsource.h: New file missing from previous
          commit.

Wed Apr 23 00:30:34 GMT 2008  Olly Betts <olly@survex.com>

        * api/Makefile.mk,api/omquery.cc,api/omqueryinternal.cc,
          include/Makefile.mk,include/xapian.h,include/xapian/query.h,matcher/,
          tests/api_db.cc: Add support for Xapian::PostingSource.

Wed Apr 23 00:21:25 GMT 2008  Olly Betts <olly@survex.com>

        * include/xapian.h: Fix misplaced comment.  Tweak doxygen comments for
          version functions to be more consistent with others.

Wed Apr 23 00:16:14 GMT 2008  Olly Betts <olly@survex.com>

        * matcher/queryoptimiser.cc: Remove bogus comment from cut-and-paste.

Wed Apr 23 00:14:30 GMT 2008  Olly Betts <olly@survex.com>

        * common/omassert.h: Add AssertEqDoubleParanoid().
        * matcher/multimatch.cc: Use it instead of home-brewed version.

Tue Apr 22 23:30:50 GMT 2008  Olly Betts <olly@survex.com>

        * common/utils.h: Stop exporting internal functions needlessly.

Tue Apr 22 12:53:55 GMT 2008  Olly Betts <olly@survex.com>

        * bin/xapian-compact.cc: Fix to work again (broken by the splitting of
          FlintTable::commit() into flush_db() and commit() in the replication
          changes).  Don't bother passing tablename to functions where it
          always has the same value.  Tweak the user-metadata copying loop to
          make it clearer.  Reserve the right size for the vector used for
          merging spellings.

Tue Apr 22 12:28:17 GMT 2008  Olly Betts <olly@survex.com>

        * backends/chert/chert_table.h,backends/flint/flint_table.h,
          bin/xapian-compact.cc: Default commit's changes_fd parameter to -1.

Tue Apr 22 11:39:10 GMT 2008  Olly Betts <olly@survex.com>

        * common/omassert.h: Fix comment typo.

Tue Apr 22 10:54:35 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * tests/queryparsertest.cc: Add "utils.h" back - needed for
          om_tostring() and mkdir().

Mon Apr 21 07:48:45 GMT 2008  Olly Betts <olly@survex.com>

        * tests/api_db.cc: Don't need <list>.  Wrap comment.

Mon Apr 21 07:04:12 GMT 2008  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc,backends/chert/chert_check.cc,
          backends/flint/flint_check.cc,tests/: Remove various needless
          inclusions of headers (especially <iostream>).  Reorder headers.
          Wrap a couple of comments.  Append single characters to strings
          using character constants.

Mon Apr 21 06:26:49 GMT 2008  Olly Betts <olly@survex.com>

        * api/Makefile.mk,api/valuerangeproccompat.cc,
          include/xapian/queryparser.h: Remove the
          v102::NumberValueRangeProcessor ABI-preserving machinery since it's
          OK to change the ABI for 1.1.0.

Mon Apr 21 04:42:52 GMT 2008  Olly Betts <olly@survex.com>

        * api/,queryparser/queryparser.cc: Remove debug log tracing from
          get_description() methods since the debug log call tracing *calls*
          get_description() methods on parameters, so logging these calls just
          makes for more confusing debug logs.  A get_description() method
          should have no side-effects so it's not very interesting even when
          explicitly called by the user.
        * common/omdebug.h: Replace "OM_DEBUG_INTRO" class with dummy
          placeholder (to preserve numbering), to help prevent accidentally
          adding these back.

Sun Apr 20 09:46:11 GMT 2008  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc,common/: Stop describing get_description() as
          an "Introspection method" internal (matching earlier change to stop
          doing so externally).  This doesn't help to explain what it does,
          and get_description() doesn't actually fall under any of the formal
          definitions of "introspection" I can find.

Fri Apr 18 10:26:18 GMT 2008  Olly Betts <olly@survex.com>

        * backends/chert/chert_metadata.cc: Fix renamed parameter in debug
          logging.

Fri Apr 18 10:18:35 GMT 2008  Olly Betts <olly@survex.com>

        * HACKING,INSTALL,Makefile.am,backends/Makefile.mk,backends/chert/,
          backends/database.cc,backends/flint/,backends/remote/net_postlist.cc,
          backends/remote/net_postlist.h,bin/,common/,configure.ac,docs/,
          include/xapian/dbfactory.h,include/xapian/version_h.cc,
          net/remoteserver.cc,tests/Makefile.am,tests/harness/: Start new
          development backend "chert".  Currently the change over flint is
          that in the postlist table, doclengths are stored once in a
          chunked postlist-like form, rather than once per posting.

Tue Apr 15 23:24:39 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * api/omenquire.cc,tests/api_nodb.cc: Fix segfault introduced by
          previous change when asking for the termfreq on an empty mset.
          Include a regression test.

Tue Apr 15 06:02:12 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/enquire.h: Change definition of MSet::get_termfreq
          such that it will fall back to looking the term frequency up in
          the database rather than raising an exception if the term is not
          present in the mset.
        * api/omenquire.cc,common/omenquireinternal.h: Implementation of
          the above.
        * tests/api_anydb.cc: Test the above.

Mon Apr 14 21:29:59 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * tests/: Use copies of freemem.cc and freemem.h from omega to report
          the free physical memory at each stage of indexing.  Also, add a
          get_total_physical_memory() function to this, and report it's
          value at the top of the results file (only tested on Linux so
          far).

Mon Apr 14 19:17:22 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * tests/api_wrdb.cc: Make skip_to() test a bit more comprehensive.

Mon Apr 14 19:08:49 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * backends/flint/flint_metadata.cc,backends/flint/flint_metadata.h:
          Fix a bug in the skip_to() implementation, and set the parameter
          name to "key" instead of "tname", since it's not a term.
        * tests/api_wrdb.cc: Add a test of the metadata iterators.

Mon Apr 14 14:22:16 GMT 2008  Olly Betts <olly@survex.com>

        * backends/Makefile.mk,backends/flint/Makefile.mk,
          backends/flint/contiguousalldocspostlist.cc,
          backends/flint/contiguousalldocspostlist.h,common/Makefile.mk:
          The ContiguousAllDocsPostList class isn't flint-specific, so move
          it out of backends/flint.

Mon Apr 14 13:56:51 GMT 2008  Olly Betts <olly@survex.com>

        * backends/flint/flint_database.cc: Removed duplicate
          '#include "flint_database.h"', ironically added by Richard's recent
          change.  Fix a couple of errors in alphabetical ordering, and
          move autoptr.h and the "safe" headers to where the standard headers
          they replace would go.

Mon Apr 14 13:44:37 GMT 2008  Olly Betts <olly@survex.com>

        * Makefile.am,tests/Makefile.am: List check-perf in .PHONY.
        * HACKING: Document the need to list non-file targets in .PHONY.

Mon Apr 14 07:59:56 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * api/omdatabase.cc: Correct return type in a DEBUGAPICALL macro.

Mon Apr 14 07:14:01 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * api/omdatabase.cc,backends/database.cc,backends/flint/,
          common/database.h,include/xapian/database.h: Add
          metadata_keys_begin() and metadata_keys_end() methods to
          Database, to allow the complete list of metadata in a database to
          be retrieved.  Supports a prefix argument to obtain a limited
          subset of the keys, since that may be useful in some situations
          and is very easy to implement.  Only accesses the keys in the
          first database in a multidatabase situation (which corresponds
          with the current behaviour of get_metadata()).
          Also, reorder the includes in flint_database.cc to be largely
          alphabetical, and remove a duplicated #include of
          <xapian/error.h>.

Mon Apr 14 06:51:48 GMT 2008  Olly Betts <olly@survex.com>

        * common/fileutils.cc: Use endswith().

Mon Apr 14 06:14:44 GMT 2008  Olly Betts <olly@survex.com>

        * api/replication.cc,backends/database.cc,
          backends/flint/flint_database.cc,common/fileutils.cc,
          tests/queryparsertest.cc: Use empty() rather than comparing size()
          to 0.  Use startswith() in a couple of places.  Tweak an Assert
          to AssertEq.

Sun Apr 13 14:30:55 GMT 2008  Olly Betts <olly@survex.com>

        * api/omdatabase.cc: Replace uses of DEBUGLINE(SPELLING, ...) in
          Database::get_spelling_suggestion() with standard
          DEBUGAPICALL/RETURN tracing.  Add DEBUGAPICALL/RETURN tracing to
          a few Database methods which were missing it.

Sun Apr 13 14:15:00 GMT 2008  Olly Betts <olly@survex.com>

        * backends/flint/flint_cursor.cc: Use RETURN() in a few places which
          weren't.

Sun Apr 13 13:59:57 GMT 2008  Olly Betts <olly@survex.com>

        * backends/inmemory/inmemory_database.cc: Remove long-time commented
          out uses of DebugMsg.

Sun Apr 13 13:52:32 GMT 2008  Olly Betts <olly@survex.com>

        * expand/expandweight.cc: Use DEBUGLINE() instead of DEBUGMSG().

Sun Apr 13 11:23:56 GMT 2008  Olly Betts <olly@survex.com>

        * backends/flint/flint_database.cc: Include corresponding header right
          after config.h.

Sun Apr 13 10:28:27 GMT 2008  Olly Betts <olly@survex.com>

        * backends/flint/flint_database.cc: Tweak brace formatting and wrap a
          comment.

Fri Apr 11 16:18:14 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * common/fileutils.cc: Fix typo in windows specific code.

Fri Apr 11 12:44:25 GMT 2008  Olly Betts <olly@survex.com>

        * backends/flint/flint_cursor.cc: Include corresponding header right
          after config.h.

Fri Apr 11 10:25:03 GMT 2008  Olly Betts <olly@survex.com>

        * backends/flint/flint_cursor.h: Fix filename in header comment.

Fri Apr 11 04:49:03 GMT 2008  Olly Betts <olly@survex.com>

        * configure.ac,tests/submitperftest.in,tests/submitperftest.py.in:
          Rename submitperftest.py to submitperftest.
        * HACKING: Document that scripts shouldn't generally have an
          extension, and the reason for this policy.

Fri Apr 11 04:32:15 2008  Olly Betts <olly@survex.com>

        * HACKING: Note that GCC 4.3 no longer supports pre-ISO forms of
          standard headers, such as <list.h>.  GCC on Solaris now seems
          to support throwing exceptions across shared library boundaries.

Fri Apr 11 03:24:47 GMT 2008  Olly Betts <olly@survex.com>

        * tests/Makefile.am: "make up" in tests now does "make" in the
          top-level.

Thu Apr 10 08:33:06 GMT 2008  Olly Betts <olly@survex.com>

        * backends/flint/flint_postlist.cc: Fix debug logging message: ostList
          -> FlintPostList.

Thu Apr 10 05:47:37 GMT 2008  Olly Betts <olly@survex.com>

        * net/remoteconnection.cc: Remove erroneous FIXME comments talking
          about ReadFile() not updating WSAOVERLAPPED's Offset/OffsetHigh
          being a problem with using _get_osfhandle() - ReadFile is documented
          to behave this way on MSDN.  Factor out update of Offset/OffsetHigh
          and tweak this code not to rely on off_t being 64 bits.

Thu Apr 10 05:24:11 GMT 2008  Olly Betts <olly@survex.com>

        * backends/flint/flint_record.cc,backends/flint/flint_utils.h: Use
          the new STATIC_ASSERT family of macros instead of CASSERT and
          CASSERT_TYPE_UNSIGNED.

Thu Apr 10 04:46:40 GMT 2008  Olly Betts <olly@survex.com>

        * common/omassert.h: Add "compile-time assertion" macros:
          STATIC_ASSERT(COND), STATIC_ASSERT_UNSIGNED_TYPE(TYPE),
          STATIC_ASSERT_TYPE_DOMINATES(TYPE1, TYPE2).
        * tests/internaltest.cc: Test these.

Thu Apr 10 01:07:34 GMT 2008  Olly Betts <olly@survex.com>

        * common/remoteprotocol.h,net/remoteserver.cc: Clean up a couple more
          things now we've moved to major protocol version 31.

Wed Apr 09 06:50:44 GMT 2008  Olly Betts <olly@survex.com>

        * backends/remote/remote-database.cc: Add missing explicit include of
          remote-database.h.

Wed Apr 09 04:48:54 GMT 2008  Olly Betts <olly@survex.com>

        * bin/xapian-check.cc,bin/xapian-compact.cc: Fix check for user
          metadata key to not match other key types we may add in the future.
          When compacting, we can't assume how we should handle them.  When
          checking, they currently shouldn't be present, so we should flag
          an error for them.

Tue Apr 08 15:27:09 GMT 2008  Olly Betts <olly@survex.com>

        * NEWS: Fix missing line in old entry.

Mon Apr 07 07:49:56 GMT 2008  Olly Betts <olly@survex.com>

        * backends/flint/flint_btreeutil.h: Use AssertRel rather than Assert.

Mon Apr 07 06:20:42 GMT 2008  Olly Betts <olly@survex.com>

        * api/error.cc,api/valuerangeproc.cc,backends/flint/flint_table.cc,
          backends/multi/multi_postlist.cc,backends/remote/net_termlist.cc,
          bin/xapian-inspect.cc,common/omdebug.cc,common/utils.cc,
          languages/stem.cc,languages/steminternal.cc,
          tests/harness/backendmanager_multi.cc,
          tests/harness/backendmanager_remotetcp.cc: Header inclusions tidying
          - remove a few redundant inclusions; prefer cstdio to stdio.h, etc
          in a few places; note why certain headers are required in cases
          where it's less obvious; in a .cc file, include the corresponding .h
          second (after <config.h>).

Mon Apr 07 04:23:30 GMT 2008  Olly Betts <olly@survex.com>

        * configure.ac: Fix --enable-log=profile to be recognised.
        * common/omdebug.cc,common/omdebug.h: Fix build with
          --enable-log=profile.
        * HACKING: Actually document --enable-log=profile.

Sat Apr 05 21:07:38 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * tests/perftest.cc: Flush after each write, so we can monitor
          progress of long running tests (we might need to remove this
          again later, if profiling shows it has a noticeable impact).  Fix
          two calls to write() to be a single call.
        * tests/perftest_randomidx.cc: Add values to different slots; I'd
          added them all to slot 0 by mistake, so they were overwriting
          each other.

Sat Apr 05 20:17:43 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * tests/Makefile.am,tests/perftest_randomidx.cc: Add a new
          performance test which builds a randomly generated index, and
          times the index run.  Probably wants a bit more tweaking to make
          it slightly more representative, but should be a useful test to
          run on systems where downloading a large amount of data is
          impractical.
        * ChangeLog: Add missing log message for last commit.

Sat Apr 05 20:16:58 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * tests/perftest.cc,tests/perftest.h: Log indexing runs every 5
          seconds, as well as after every 1000 documents - gives useful
          information for slow index runs.

Thu Apr 03 20:58:31 GMT 2008  Olly Betts <olly@survex.com>

        * backends/database.cc,include/xapian/dbfactory.h,
          include/xapian/version_h.cc: Remove lingering traces of quartz.

Thu Apr 03 07:59:53 GMT 2008  Olly Betts <olly@survex.com>

        * bin/xapian-inspect.cc: Print top-bit-set characters as escaped
          hex forms as they often won't be valid UTF-8 sequences.

Thu Apr 03 03:53:37 GMT 2008  Olly Betts <olly@survex.com>

        * bin/xapian-inspect.cc: Check for the user passing a database
          directory and issue a special error message since this is an obvious
          mistake to make.

Wed Apr 02 07:00:36 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * matcher/multimatch.cc: Modify the estimate for the number of hits
          based on the rate at which a match decider has been denying
          documents.  Also, reduce the upper bound based on the number of
          documents denied.
        * tests/api_db.cc: Check that the upper bound when a match decider
          is used is within the valid range, rather than a particular
          value.

Tue Apr 01 22:40:19 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * configure.ac,tests/perftest.cc,tests/submitperftest.py.in,
          tests/urllib2_file.py: Fix display of upper bound on number of
          results of search (was showing lower bound).  Fix display of
          closing <repetition> tags.  Add script to submit the results of a
          performance test to a central server.

Tue Apr 01 11:19:58 GMT 2008  Olly Betts <olly@survex.com>

        * backends/flint/flint_table.cc,backends/flint/flint_table.h:
          Gently rearrange where and how we check for overlong keys.
        * tests/api_wrdb.cc: Extend termtoolong1 to test that the "term too
          long" exception messages contain the length correctly.

Tue Apr 01 06:06:43 GMT 2008  Olly Betts <olly@survex.com>

        * AUTHORS,HACKING,INSTALL,README,debian/control.in,debian/copyright,
          docs/install.html,xapian-core.spec.in: Standardise URLs on our
          website to be xapian.org not www.xapian.org.

Tue Apr 01 03:44:32 GMT 2008  Olly Betts <olly@survex.com>

        * backends/flint/flint_record.cc,backends/flint/flint_values.cc,
          common/,docs/quickstartexpand.cc.html,docs/quickstartindex.cc.html,
          docs/quickstartsearch.cc.html,matcher/: Update the FSF address for
          the small number of files which still have the old one.  Remove the
          "START_LICENCE" and "END_LICENCE" markers from the small number of
          files which still have them.

Tue Apr 01 02:23:27 GMT 2008  Olly Betts <olly@survex.com>

        * backends/remote/remote-database.cc,common/remoteprotocol.h,
          common/remoteserver.h,common/serialise.h,docs/remote_protocol.html,
          net/remoteserver.cc,net/serialise.cc: Update remote protocol to
          a new major version (31) and strip out all the gunk that's only
          there to keep it compatible with older version 30 clients.

Tue Apr 01 00:12:38 GMT 2008  Olly Betts <olly@survex.com>

        * api/ompostlistiterator.cc,include/xapian/postingiterator.h: Remove
          the method Xapian::PostingIterator::get_weight() which has been
          commented out almost forever.  Weight-handling isn't really
          appropriate here.
        * api/ompostlistiterator.cc: Remove "\todo" since it's already done!

Mon Mar 31 13:24:11 GMT 2008  Olly Betts <olly@survex.com>

        * backends/flint/: Remove unnecessary default dtors.

Mon Mar 31 13:21:55 GMT 2008  Olly Betts <olly@survex.com>

        * HACKING: Document to prefer "new SomeClass" to "new SomeClass()".
        * api/omdocument.cc,api/omenquire.cc,backends/database.cc,
          backends/flint/flint_database.cc,
          backends/inmemory/inmemory_database.cc,matcher/multimatch.cc,
          matcher/queryoptimiser.cc,net/remoteserver.cc: Fix instances of
          the latter form to use the former form.

Mon Mar 31 12:11:09 GMT 2008  Olly Betts <olly@survex.com>

        * tests/: Update svn:ignore property for perftest changes and remove
          quartz-related entries.
        * tests/perftest.cc: Add missing '#include "utils.h"'.

Mon Mar 31 09:22:35 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * Makefile.am,tests/,tests/harness/,tests/perftest.cc,tests/perftest.h,
          tests/perftest_matchdecider.cc: Rework the test collation
          mechanism slightly to allow it to be used by other testsuites:
          rename collate-apitest to collate-test, and add a parameter to it
          naming the output file.  Add new "testrunner.h" and
          "testrunner.cc" which are an equivalent to the old mechanism in
          apitest for running tests with various properties; the properties
          for each backend are now held as member variables of a TestRunner
          class, and testsuites (eg, apitest) subclass this and implement a
          "run()" method, which will be called for each backend with the
          appropriate properties set.  Move definition of DEFINE_TESTCASE
          macro into testsuite.h.  Add new testsuite "perftest", which is
          intended to contain potentially time consuming performance tests,
          logging the results to an XML file for later analysis.  Add a
          simple test of the ValueSetMatchDeciders to this testsuite.
          "perftest" isn't run by make check, because it is likely to take
          some hours to complete in future - instead, there's a new
          top-level target "check-perf" which builds and runs perftest.

Mon Mar 31 08:13:21 GMT 2008  Olly Betts <olly@survex.com>

        * HACKING: Recommend using the "svn-ci" script.  Update the date
          command which produces the correct format timestamp for ChangeLog
          entries.

Mon Mar 31 08:00:58 GMT 2008  Olly Betts <olly@survex.com>

        * backends/flint/flint_btreeutil.h: Fix some out-of-date comments.
        * configure.ac: Use AC_CHECK_SIZEOF to define SIZEOF_INT and
          SIZEOF_LONG.
        * backends/flint/flint_types.h: Use SIZEOF_INT and SIZEOF_LONG to
          determine the type of uint4 rather than always using unsigned long
          (which is 64 bits on most 64 bit Unix platforms).  Drop int4 for
          the time being, as we don't actually use it.

Mon Mar 31 06:34:20 GMT 2008  Olly Betts <olly@survex.com>

        * backends/flint/flint_positionlist.cc: Refactor BitWriter::encode()
          to have a single call to write_bits(), and don't include it inline
          in the class as it's really a bit big to inline (and write_bits()
          should now be inlined into it, or at least tail-called).

Mon Mar 31 05:33:02 GMT 2008  Olly Betts <olly@survex.com>

        * backends/flint/flint_positionlist.cc: Reorder header includes to
          match our new standard more closely.  Indent class definitions to
          match our coding standards.

Mon Mar 31 05:31:59 GMT 2008  Olly Betts <olly@survex.com>

        * backends/flint/flint_positionlist.h: Remove unnecessary default
          dtor.

Mon Mar 31 04:55:59 GMT 2008  Olly Betts <olly@survex.com>

        * backends/remote/net_document.cc,backends/remote/net_document.h:
          Rename "doc" member to "data" since it actually holds the document
          data.

Mon Mar 31 03:25:21 GMT 2008  Olly Betts <olly@survex.com>

        * backends/flint/flint_document.cc,backends/flint/flint_document.h:
          Remove unnecessary default dtor.

Mon Mar 31 02:53:48 GMT 2008  Olly Betts <olly@survex.com>

        * backends/inmemory/inmemory_alltermslist.cc,
          backends/inmemory/inmemory_alltermslist.h: Remove unnecessary
          default dtor.
        * backends/inmemory/inmemory_alltermslist.h: Fix bogus cut-and-pasted
          doxygen comment for ctor.

Mon Mar 31 02:33:15 GMT 2008  Olly Betts <olly@survex.com>

        * common/inmemory_positionlist.h: Remove unnecessary default
          destructor.  Fix comment type ("inemory" -> "inmemory").

Sun Mar 30 12:47:50 GMT 2008  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: Drop explicit dtor for SimpleStopper
          which does nothing.

Sun Mar 30 12:12:12 GMT 2008  Olly Betts <olly@survex.com>

        * include/xapian/valuesetmatchdecider.h: Don't bother checking if an
          element is present before calling std::set::erase().  Don't bother
          defining an explicit dtor which does nothing.

Sat Mar 29 00:46:13 GMT 2008  Olly Betts <olly@survex.com>

        * tests/api_db.cc: Test matchfunctor bounds in combination with
          collapsing and percentage cutoff.  Also, range check
          get_matches_estimated rather than checking it's exactly the value
          currently returned.

Fri Mar 28 21:37:27 GMT 2008  Olly Betts <olly@survex.com>

        * tests/api_nodb.cc: Test ValueSetMatchDecider::remove_value() for a
          value which isn't in the set.  Test that removing a value doesn't
          affect other values in the set.

Fri Mar 28 21:03:30 GMT 2008  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Avoid needless call to pl->get_termfreq_est()
          if we're using a matchdecider or matchspy.

Fri Mar 28 10:28:51 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * matcher/multimatch.cc: Set matches_lower_bound to 0 before
          starting the match process if there is a match decider or spy;
          previously, the lower_bound wasn't being reduced in the presence
          of a match decider unless all the potential results were
          retrieved.
        * tests/api_db.cc: Extend matchfunctor1 to check the bounds and
          estimates returned; includes a regression test for the above.

Fri Mar 28 09:09:54 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * tests/api_nodb.cc: Extend tests to check ValueSetMatchDecider
          remove_value and also ValueSetMatchDeciders holding more than one
          value.

Fri Mar 28 02:41:45 GMT 2008  Olly Betts <olly@survex.com>

        * configure.ac: Update version info to match 1.0.6.

Fri Mar 28 00:12:48 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * api/omenquire.cc,include/xapian/enquire.h: Merge two of the
          get_mset() variants into one, with default arguments, which has
          exactly the same effect.  We added the two variants to preserve
          ABI compatibility, and now we're branched for 1.1 this is no
          longer necessary.

Thu Mar 27 23:54:39 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * api/valuesetmatchdecider.cc,include/xapian.h,
          include/xapian/valuesetmatchdecider.h: Add ValueSetMatchDecider,
          which is a matchdecider which is intended to be passed a set of
          values to look for in documents, and selects documents based on
          the presence of those values.
        * tests/api_db.cc,tests/api_nodb.cc: Add tests for the
          ValueSetMatchDecider - both for calling it standalone, and when
          passed to get_mset().
        * api/Makefile.mk,include/Makefile.mk: Tell build system about new
          files.

Thu Mar 27 06:18:52 GMT 2008  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc: Initialise term_pos in previous change to
          fix valgrind-detected error.

Thu Mar 27 06:13:01 GMT 2008  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc: Optimise Query(OP_VALUE_GE, <n>, "") to
          Query::MatchAll.
        * tests/api_nodb.cc: Add testcase for this case.

Thu Mar 27 04:34:40 GMT 2008  Olly Betts <olly@survex.com>

        * backends/inmemory/inmemory_document.cc,
          backends/inmemory/inmemory_document.h: Rename "doc" member to
          "data" since it actually holds the document data.
        * backends/inmemory/inmemory_database.cc: Remove unused <stdio.h>.
          Include "inmemory_database.h" right after <config.h>.

Wed Mar 26 23:44:03 GMT 2008  Olly Betts <olly@survex.com>

        * api/omenquire.cc: Throw InvalidArgumentError upon
          RSet::add_document(0).
        * tests/api_nodb.cc: Add regression test for this.
        * matcher/rset.cc: Add assertion that we don't see a zero docid when
          calculating rtermfreqs.
        * api/omdocument.cc: Use RETURN not return so debug logging sees the
          return value.
        * backends/inmemory/inmemory_database.cc,
          backends/remote/remote-database.cc: Change exception throwing for
          a zero docid to assertions since zero docids should be checked for
          before we get to here.

Wed Mar 26 06:17:51 GMT 2008  Olly Betts <olly@survex.com>

        * common/postlist.h: Decree that PostList::check() must be passed a
          docid which actually exists in the database (which is always true
          currently and seems unlikely to be an onerous requirement).
        * matcher/valuegepostlist.cc,matcher/valuerangepostlist.cc: Take
          advantage of this new precondition to simplify the code.
        * matcher/valuegepostlist.cc,matcher/valuerangepostlist.cc: Move the
          corresponding header first as our header inclusion order guidelines
          recommend.

Thu Mar 13 01:58:18 GMT 2008  Olly Betts <olly@survex.com>

        * common/stats.h,include/xapian/enquire.h,matcher/localmatch.cc,
          matcher/weight.cc: Untangle Xapian::Weight to just initialise
          internal to 0 in its ctor, which is an ABI change.  Resolves
          a load of FIXME:1.1 comments.

Thu Mar 13 00:50:06 GMT 2008  Olly Betts <olly@survex.com>

        * backends/flint/flint_lock.cc: Remove workaround for newlib which we
          don't seem to need elsewhere and was marked "FIXME:1.1".

Thu Mar 13 00:49:27 GMT 2008  Olly Betts <olly@survex.com>

        * docs/deprecation.rst: Fix footnote ids after deprecation updates.

Wed Mar 12 10:08:37 GMT 2008  Olly Betts <olly@survex.com>

        * tests/stemtest.cc: Remove support for OM_STEMTEST_SKIP_RANDOM,
          OM_STEMTEST_LANGUAGES, and OM_STEMTEST_SEED.

Wed Mar 12 08:30:48 GMT 2008  Olly Betts <olly@survex.com>

        * docs/deprecation.rst: Update for bindings removals for 1.1.0.

Wed Mar 12 06:59:25 GMT 2008  Olly Betts <olly@survex.com>

        * docs/deprecation.rst: Update for Omega removals for 1.1.0.

Wed Mar 12 05:11:53 GMT 2008  Olly Betts <olly@survex.com>

        * api/omenquire.cc,api/omquery.cc,api/version.cc,docs/,
          generate-exceptions.in,include/xapian.h,include/xapian/enquire.h,
          include/xapian/query.h,tests/api_db.cc,tests/api_wrdb.cc,
          tests/apitest.cc,tests/harness/,tests/internaltest.cc: Remove all
          xapian-core features marked for removal in 1.1.0.

Wed Mar 12 03:28:18 GMT 2008  Olly Betts <olly@survex.com>

        * HACKING,INSTALL,Makefile.am,backends/Makefile.mk,
          backends/dir_contents,backends/quartz/,bin/,configure.ac,docs/,
          tests/,tests/harness/,tests/quartztest.cc,tests/testdata/,
          xapian-core.spec.in: Remove the quartz backend.

Wed Mar 12 02:14:33 GMT 2008  Olly Betts <olly@survex.com>

        * m4/xapian.m4: Improve wording of the error message when we can't
          find xapian-config.

Wed Mar 12 02:13:32 GMT 2008  Olly Betts <olly@survex.com>

        * INSTALL: Minor wording tweak.

Wed Mar 12 01:44:42 GMT 2008  Olly Betts <olly@survex.com>

        * bin/xapian-compact.cc: Initialise PostlistCursor member firstdid to
          avoid using it uninitialised when merging user metadata and the same
          key is present in more than one source database.  If the same user
          metadata key is present in more than one source database, copy an
          arbitrary tag value.

Wed Mar 12 00:34:04 GMT 2008  Olly Betts <olly@survex.com>

        * bin/xapian-compact.cc: Fix potential SEGV (which I think can occur
          when compacting database(s) with user metadata but no postings).

Fri Mar 07 09:46:38 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * common/serialise.h: Add missing std:: before string.

Fri Mar 07 00:47:06 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * api/replication.cc: Tidy up a line which was wider than 80
          columns, and improve the error message returned when a database
          replica doesn't contain exactly one subdatabase.

Fri Mar 07 00:34:28 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * common/serialise.h,net/remoteconnection.cc,net/serialise.cc:
          Change encode_length() to a template, to allow the full range of
          off_t values to be encoded.  Also, adjust
          RemoteConnection::get_message_chunked() to allow the message
          length to be a 64 bit quantity.  Also, make a couple of type
          conversions to size_t explicit, to remove some warnings on
          windows.

Thu Mar 06 01:57:04 GMT 2008  Olly Betts <olly@survex.com>

        * NEWS: Update from ChangeLog.

Thu Mar 06 01:44:07 GMT 2008  Olly Betts <olly@survex.com>

        * bin/xapian-check.cc: Fix terminology - "user metadata" not "user
          metainfo".  Fix bug - need to invoke is_user_metadata rather than
          using the function pointer as the if condition!

Thu Mar 06 01:41:09 GMT 2008  Olly Betts <olly@survex.com>

        * bin/xapian-compact.cc: Fix terminology - "user metadata" not "user
          metainfo".

Wed Mar 05 21:17:02 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * net/remoteconnection.cc: Add some casts (in the windows-specific
          code) to fix some warnings from MSVC.

Wed Mar 05 19:01:35 GMT 2008  Olly Betts <olly@survex.com>

        * NEWS: Update to 1.0 branch point.

Wed Mar 05 19:00:07 GMT 2008  Olly Betts <olly@survex.com>

        * common/msvc_dirent.cc: Tweak to bring comment back into 80 columns.

Wed Mar 05 16:35:33 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * common/msvc_dirent.cc: Fix sense of check for ENOENT after
          calling _findnext() - it should be checked for when an error code
          is returned, not when the call succeeds.
        * tests/api_replicate.cc: Fix tiny capitalisation typo.

Wed Mar 05 16:29:47 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * common/fileutils.cc: Check case where a backslash isn't found in
          calc_dirname, and don't replace slash with backslash in this
          case.

Wed Mar 05 09:30:42 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * bin/xapian-check.cc: Add understanding of user metainfo keys in
          the postlist table.  Allow the METAINFO key to be absent if the
          table only contains user metainfo keys.

Wed Mar 05 09:01:48 GMT 2008  Olly Betts <olly@survex.com>

        * common/msvc_dirent.cc,common/msvc_dirent.h: Move licence boilerplate
          up front where we have it in every other file.  Move header guards
          to the usual location.  Detail the fix we've made for not setting
          errno to ENOENT erroneously.  Push the setting of orig_errno down
          a bit.

Wed Mar 05 04:57:44 GMT 2008  Olly Betts <olly@survex.com>

        * configure.ac: -pedantic isn't actually very useful so just drop it
          rather than testing for known problem cases and risking unknown
          problem cases.

Wed Mar 05 03:10:24 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * matcher/valuegepostlist.cc,matcher/valuegepostlist.h: Implement
          skip_to method for ValueGePostList.  Previously, the
          ValueRangePostList::skip_to method was used, which would
          return incorrect documents.

Wed Mar 05 02:54:27 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * common/fileutils.cc: Search for \ instead of / when looking for a
          backslash!

Wed Mar 05 02:51:49 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * common/fileutils.cc: Fix incorrect docstring.

Tue Mar 04 18:48:25 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * common/msvc_dirent.cc: Fix readdir() so that it doesn't change
          errno to ENOENT on reaching the end of the directory, as
          specified by POSIX.

Tue Mar 04 17:54:56 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * net/remoteconnection.cc: Fix for a problem with windows.  Because
          we're using mixed styles of windows file IO, if a file descriptor
          which actually corresponds to a file was supplied to remote
          connection, the file pointer wasn't being adjusted after each
          call to ReadFile or WriteFile.  This manifested in the test case
          for replication, resulting in a (corrupt) 2048 byte changeset
          file being written (instead of a considerably longer changeset).
          To work around this, we explicitly move the file pointer
          ourselves.

Tue Mar 04 17:41:38 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * tests/api_replicate.cc: Close the replica before removing the
          temporary directory, to allow the rmdir to work on windows.

Thu Feb 28 16:41:34 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * common/remoteconnection.h: Include safeunistd.h, to get correct
          typedef for off_t on windows - previously, the size of the
          RemoteConnection class was varying depending on the order in
          which header files were included, resulting in memory corruption.
        * net/remoteserver.cc: Remove incorrect comment about what the
          problem was.

Sat Feb 23 23:40:56 GMT 2008  Olly Betts <olly@survex.com>

        * xapian-config.in: Use globbing rather than iterating over the output
          of ls.

Sat Feb 23 23:33:39 GMT 2008  Olly Betts <olly@survex.com>

        * xapian-config.in: Fix not to repeated headers in --swigheaders in a
          non-VPATH build.

Fri Feb 22 17:20:19 GMT 2008  Olly Betts <olly@survex.com>

        * HACKING: Add note about preferring std::string().

Fri Feb 22 17:05:11 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * net/remoteserver.cc: Use std::string() instead of
          std::string(""), since it's a bit cleaner.

Fri Feb 22 16:50:32 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * net/remoteserver.cc: Add workaround for bug in MSVC 2005.

Fri Feb 22 14:39:03 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * backends/flint/flint_database.cc,backends/flint/flint_table.cc,
          backends/quartz/btree.cc: Use msvc_posix_rename() instead of
          rename() when renaming base files, so that an error isn't
          returned if the destination already exists.

Thu Feb 21 17:24:14 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * common/msvc_dirent.cc: Include msvc_dirent.h instead of dirent.h

Thu Feb 21 17:09:01 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * common/database.h: ReplicationInfo is a struct, not a class, so
          forward declare it as such.

Thu Feb 21 12:16:23 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * common/Makefile.mk: Add common/safedirent.h to distribution.

Thu Feb 21 00:25:33 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * xapian-config.in: Add swigheaders option, listing the header
          files used by swig, so that we can add the appropriate
          dependencies to the makefiles in the bindings.

Wed Feb 20 20:59:55 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/replication.h: Add a ReplicationInfo structure,
          and use it to return information about what has been done when
          the replication methods are called.
        * api/replication.cc,backends/database.cc,
          backends/flint/flint_database.cc,backends/flint/flint_database.h,
          common/database.h,common/replicatetcpclient.h,
          common/replicatetcpserver.h,net/replicatetcpclient.cc,
          net/replicatetcpserver.cc: Populate a ReplicationInfo structure
          when updating a replica, or sending changes to a file descriptor.
          Also, fix a bug with reading the replication parameters from a
          file, which caused a full database copy to be performed on every
          replication request on a newly opened DatabaseReplica object.
        * bin/xapian-replicate.cc: When doing verbose logging, display the
          number of database copies and changesets applied, and whether the
          live database has been updated.
        * tests/api_replicate.cc: Check that the information returned by
          the replication methods is as is should be, and add a regression
          test for always copying the database.

Wed Feb 20 11:20:55 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * backends/flint/: Improve reporting of failures to obtain lock due
          to unexpected errors - the error messages included in the
          exceptions raised are now more verbose in many situations.  Also,
          if the lock can't be obtained when a database is being created,
          report the lock failure, not a DatabaseOpeningError - it's more
          useful to know that the lock attempt failed than that the
          database wasn't present before the attempt to create it.

Tue Feb 19 11:58:22 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * bin/xapian-compact.cc: Fix compaction for database which contain
          user metadata keys.

Sat Feb 16 19:53:44 GMT 2008  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: Fix incorrect example in doccomment.

Sat Feb 16 14:46:08 GMT 2008  Olly Betts <olly@survex.com>

        * AUTHORS: Add Matthew Somerville for Search::Xapian patches.

Tue Feb 12 16:34:52 GMT 2008  Olly Betts <olly@survex.com>

        * docs/quickstart.html: Remove information covered by INSTALL since
          there's no good reason to repeat it and two copies just risks one
          getting out of date (as has happened here!)

Tue Feb 12 16:27:30 GMT 2008  Olly Betts <olly@survex.com>

        * AUTHORS: Add David Spencer for reporting bug#237.

Tue Feb 12 16:25:00 GMT 2008  Olly Betts <olly@survex.com>

        * docs/quickstart.html: Fix very out of date reference to MSet::items
          (bug#237).

Tue Feb 12 12:40:47 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * bin/xapian-compact.cc: Fix incorrect parameters passed to
          FlintTable constructor.

Sat Feb 09 11:56:40 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * common/socket_utils.h,net/remoteconnection.cc: More fixes for
          windows.

Sat Feb 09 11:31:30 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * common/msvc_dirent.cc,common/msvc_dirent.h: Hopefully this is a
          better implementation of dirent functions.

Sat Feb 09 10:59:50 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * common/: Add implementation of dirent.h for use with MSVC; this
          is copied from the mingw implementation, which has been placed in
          the public domain.  Add "safedirent.h" header for easy inclusion
          of this implementation.

Sat Feb 09 10:43:49 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * tests/api_replicate.cc: Use _putenv instead of setenv on windows.

Sat Feb 09 09:56:08 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * common/socket_utils.cc,common/socket_utils.h: More fixes for
          windows.

Fri Feb 08 16:40:56 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * common/Makefile.mk,common/socket_utils.cc,common/socket_utils.h,
          net/remoteconnection.cc,net/tcpclient.cc: Move windows-specific
          socket handling code from remoteconnection.cc into a separate
          file, provides the inline close_fd_or_socket for unix in the
          header file.  Use this in tcpclient.cc instead of close to close
          sockets correctly on windows.

Fri Feb 08 16:40:29 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * common/fileutils.cc,common/replicatetcpclient.h: Correct typos in
          windows only sections of code.

Fri Feb 08 15:29:28 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * net/remoteconnection.cc: Fixes for windows - always include
          "safesysselect.h", and include <io.h> on windows.
          Also, remove definition of an unused variable (probably due to a
          copy and paste error).

Wed Feb 06 13:45:59 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * bin/xapian-replicate.cc: Include "safeunistd.h" - needed for
          sleep, if nothing else.

Tue Feb 05 18:10:23 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * configure.ac: Set -pedantic in CXXFLAGS not AM_CXXFLAGS when
          testing for problem with it - AM_CXXFLAGS is an automake thing,
          and isn't used by the autoconf test.

Tue Feb 05 17:50:55 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * configure.ac: Cleaner patch for the test of compilation with
          -pedantic - cache the result using AC_CACHE_VAL().

Tue Feb 05 17:32:11 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * configure.ac: Check whether compilation of a cast of INFINITY to
          a double, and comparison with HUGE_VAL, causes a problem if
          -pedantic is specified (which it does on at least some Mac OSX
          versions).  If so, don't use the -pedantic compiler flag.

Tue Feb 05 09:24:36 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * backends/flint/flint_cursor.cc,backends/flint/flint_database.cc,
          backends/quartz/bcursor.cc: More fixes for debug logging - rename
          the "hex_encode" functions used for logging to
          "hex_display_encode" to avoid name clash.  Fix return type
          declared in flint_database.cc's DEBUGCALL macro.

Tue Feb 05 09:18:29 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * api/replication.cc: Fix for logging compiles: don't check return
          value of a void function.

Tue Feb 05 09:14:34 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * api/replication.cc: Reopen database after replication, to fix bug
          with applying a chain of changesets.
        * backends/flint/flint_database.cc: Don't use O_TRUNC (or O_CREAT)
          when modifying the DB files!
        * tests/api_replicate.cc: Don't call function from inside
          TEST_EQUAL, because that's a macro and the function will be
          double-evaluated.

Tue Feb 05 02:07:08 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * api/replication.cc,backends/database.cc,backends/flint/,
          common/database.h: Many fixes to the replication code.  Now
          parses replication changesets correctly and applies them to the
          databases.  Also, correct one bug with the generation of
          changesets.
        * docs/replication.rst,docs/replication_protocol.rst: Update.
        * tests/api_replicate.cc: Add test of two changesets being applied
          at once.

Sun Feb 03 13:31:10 GMT 2008  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: Backport atomic base update fix from
          flint.

Sat Feb 02 22:47:56 GMT 2008  Olly Betts <olly@survex.com>

        * AUTHORS: Add Thomas Viehmann.

Sat Feb 02 03:39:33 GMT 2008  Olly Betts <olly@survex.com>

        * backends/flint/flint_table.cc: Update the base files atomically to
          avoid problems with reading processes finding partially written
          ones.

Sat Feb 02 03:38:00 GMT 2008  Olly Betts <olly@survex.com>

        * api/replication.cc: Don't leak the RemoteConnection object.

Fri Feb 01 23:15:38 GMT 2008  Olly Betts <olly@survex.com>

        * backends/flint/flint_btreebase.cc,backends/flint/flint_btreebase.h:
          Fix assorted comment errors.

Fri Feb 01 20:20:23 GMT 2008  Olly Betts <olly@survex.com>

        * bin/xapian-replicate.cc: Fix comment.

Fri Feb 01 20:13:23 GMT 2008  Olly Betts <olly@survex.com>

        * bin/xapian-replicate.cc: Document the default interval in --help.

Fri Feb 01 20:05:08 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * bin/xapian-replicate.cc: Remove the "return 0;" I added at the
          end of the function - I didn't realise this, but in C++ it's not
          necessary to have a return at the end of main().  Tidier without
          it, so it's gone.

Fri Feb 01 19:44:05 GMT 2008  Olly Betts <olly@survex.com>

        * include/xapian/unicode.h: Add Unicode::toupper() to complement
          Unicode::tolower().
        * tests/api_unicode.cc: Add caseconvert1 testcase to test
          Unicode::tolower() and Unicode::toupper().

Fri Feb 01 19:36:47 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * bin/xapian-replicate.cc: Add one-shot and verbose options to
          replication client.

Fri Feb 01 17:52:36 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * api/replication.cc,backends/flint/flint_database.cc,
          include/xapian/replication.h,net/replicatetcpclient.cc,
          tests/api_replicate.cc: Keep the RemoteConnection in the
          DatabaseReplica object, so that any data which is read ahead
          doesn't get lost.  If an error occurs opening the database on
          the server, send a FAIL message over the connection, rather than
          just shutting it.

Fri Feb 01 16:51:05 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * backends/flint/flint_table.cc: Fix a database corruption bug: see
          bugzilla entry #232.  Was caused by lazy tables not being created
          at the right revision.
        * tests/api_wrdb.cc: Regression test for bug.

Fri Feb 01 15:10:23 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * api/replication.cc,backends/database.cc,
          backends/flint/flint_database.cc,backends/flint/flint_database.h,
          common/database.h,docs/replication_protocol.rst,
          tests/api_replicate.cc: Add the UUID of the new database to the
          DB_HEADER message, and move the code which compares UUIDs out of
          flint_database.cc and into replication.cc.  Fix testcase which
          missed incorrect comparison of UUIDs.  Store the UUID of the
          live database which has been replicated in the config file - this
          isn't an ideal place, but will do until the UUID is stored in the
          iamflint file, and we can parse it from there.  Remove debug
          printfs.

Fri Feb 01 15:09:12 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * bin/quartzdump.cc: Rename hex_encode() to hex_display_encode() to
          avoid collision.  (The hex encoding produced by this doesn't
          encode spaces, so isn't quite the same as the functions just
          added to utils.cc).

Fri Feb 01 15:08:06 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * common/utils.cc,common/utils.h: Add utility functions to
          hex-encode and decode a string, so we can store UUIDs in the
          config file in replicated DB directories.

Fri Feb 01 12:49:34 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * tests/harness/backendmanager_multi.cc: Make the multi
          backendmanager use relative paths in its stub databases.

Fri Feb 01 12:17:38 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * common/Makefile.mk: Add replicationprotocol.h to distribution.

Fri Feb 01 12:10:19 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * backends/database.cc: Stub databases used to
          assume that any relative paths were relative to the current
          working directory.  They now assume that relative paths are
          relative to the directory holding the stub database file.
          Also, lines which begin with a '#' character are ignored, so we
          can place comments in the stub database files.  Also, recognise a
          new database type: a "stub directory", which is a directory
          containing a stub database file named "XAPIANDB".
        * api/replication.cc: Replica databases are now created as
          directories containing a "XAPIANDB" stub file, so all the
          workings are internal.
        * common/Makefile.mk,common/fileutils.cc,common/fileutils.h: Add
          new set of utilities to manipulate path names - extracting
          directory names, and joining paths.
        * tests/api_replicate.cc: Enable test properly, now that
          it passes.  Test needs to be expanded to check that the database
          copy succeeded better.

Fri Feb 01 09:47:00 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * backends/flint/flint_database.cc: Fix warning about unused
          variable.

Fri Feb 01 03:49:56 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * api/replication.cc,backends/database.cc,
          backends/flint/flint_database.cc,backends/flint/flint_database.h,
          common/database.h,common/replicationprotocol.h: Move replication
          protocol definition into a separate file.  Add (virtual) support
          methods for applying changesets to Database::Internal.  Sort out
          atomic swapping of old database for new after a database copy.

Fri Feb 01 03:49:09 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * tests/quartztest.cc: Rename removedir to removedir_recursive() to
          avoid conflict with my new function.

Fri Feb 01 03:09:45 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * docs/replication_protocol.rst: Specify (though not in much
          detail) what we mean by "packed" strings and integers.

Fri Feb 01 03:09:06 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/replication.h: Be more precise in documentation
          comment.

Fri Feb 01 03:07:29 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * net/remoteconnection.cc: Remove debug printfs()

Fri Feb 01 03:03:59 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * common/utils.cc,common/utils.h: Add overloaded rmdir() which
          works directly on C++ strings.  Add removedir() method which
          removes a directory and its contents (as long as the directory
          only contains files, not subdirectories).

Fri Feb 01 01:51:22 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * common/remoteconnection.h,net/remoteconnection.cc: Add
          "sniff_next_message_type" method to RemoteConnection, and replace
          the hardcoded "4096" size of the chunks used for the remote
          connection confersation with a #define.  Fix file mode when
          creating a file with receive_file(), and bugs with writing too
          much data to the file.

Thu Jan 31 03:41:42 GMT 2008  Olly Betts <olly@survex.com>

        * bin/Makefile.mk,bin/xapian-replicate-server.cc,
          common/replicatetcpserver.h: Add xapian-replicate-server server
          program.

Thu Jan 31 02:46:38 GMT 2008  Olly Betts <olly@survex.com>

        * bin/Makefile.mk,bin/xapian-replicate.cc,common/replicatetcpclient.h,
          net/replicatetcpclient.cc,net/replicatetcpserver.cc: Add
          xapian-replicate client program.

Wed Jan 30 19:13:08 GMT 2008  Olly Betts <olly@survex.com>

        * include/xapian/replication.h: Correct name of parameter in doxygen
          comment.

Wed Jan 30 15:58:44 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * api/replication.cc,backends/database.cc,
          backends/flint/flint_database.cc,backends/flint/flint_database.h,
          common/database.h: Hook up the apply_changeset function from the
          API through to flint.  (The flint layer currently doesn't work,
          though.)  Also, implement the get_uuid() function for flint, by
          using the mtime of the iamflint file.
        * tests/api_replicate.cc: Finish implementation of the "replicate"
          function, and add a test of a replication of a database using
          this.  The return value test is commented out for now, because
          the flint layer doesn't work, but this puts the machinery needed
          to test this in place.

Wed Jan 30 15:10:37 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * backends/flint/flint_database.cc: Implement sending of the whole
          database copy.

Wed Jan 30 14:45:01 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * tests/,tests/harness/: Add new testcase file (api_replicate.cc)
          to hold tests of the replication functionality.  Currently has
          one partially written test.  Also, add new function to apitest.h:
          get_named_writable_database_path(), which allows the path to a
          writable database to be obtained; throws an exception for those
          backend types for which that isn't meaningful.  Add a new
          variable for use in the conditions for tests: "replicas", which
          should be set to true for all backends which support replication.

Wed Jan 30 14:42:26 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * net/remoteconnection.cc: Fix the calls to fcntl() in
          send_message() and send_file() to use fdout instead of fdin.
          This has probably been stopping timeouts working very well.

Tue Jan 29 15:05:09 GMT 2008  Olly Betts <olly@survex.com>

        * common/remoteconnection.h,net/remoteconnection.cc: Add
          receive_file() method.

Tue Jan 29 14:37:36 GMT 2008  Olly Betts <olly@survex.com>

        * common/remoteconnection.h,net/remoteconnection.cc: Add the ability
          to read a message in chunks.

Tue Jan 29 10:08:02 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/replication.h: Expand documentation comment.
        * api/replication.cc,backends/database.cc,
          backends/flint/flint_database.cc,backends/flint/flint_database.h,
          common/database.h: Add a write_changesets_to_fd() function to
          Database::Internal, with a default implementation to raise an
          UnimplementedError.  Hook
          DatabaseMaster::write_changesets_to_fd() up to this, and
          implement it for flint databases (the code to send a copy of a
          database still needs work).

Tue Jan 29 10:01:39 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * docs/replication_protocol.rst: Document that a FAIL message ends
          the conversation.

Tue Jan 29 09:59:01 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * docs/replication_protocol.rst: Document the protocol used to
          transfer the updates.

Tue Jan 29 09:57:14 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * net/remoteconnection.cc: Fix typo.

Tue Jan 29 09:48:15 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * net/remoteconnection.cc: For win32, use msvc_posix_open() to open
          the file descriptor, so other things can delete the file while
          the sending is in progress.

Tue Jan 29 01:23:19 GMT 2008  Olly Betts <olly@survex.com>

        * net/remoteconnection.cc: Add an assertion.

Tue Jan 29 01:14:07 GMT 2008  Olly Betts <olly@survex.com>

        * common/remoteconnection.h,net/remoteconnection.cc: Add send_file()
          method to RemoteConnection to allow the contents of a file to be
          sent as a message.

Tue Jan 29 00:28:18 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * api/replication.cc,include/xapian/replication.h: Add methods to
          allow parameters to be stored associated with a DatabaseReplica.

Tue Jan 29 00:16:42 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * backends/flint/flint_database.cc,backends/flint/flint_database.h:
          Change write_changesets_to_fd() to take the revision information
          as a string - it now includes a UUID.  Add get_uuid() method to
          FlintDatabase - currently always returns "FIXME", but will
          eventually return an ID for the database.

Mon Jan 28 19:07:20 GMT 2008  Olly Betts <olly@survex.com>

        * common/Makefile.mk,common/replicatetcpclient.h,net/Makefile.mk,
          net/replicatetcpclient.cc,net/replicatetcpserver.cc: Add
          ReplicateTcpClient class implementing a replication client over
          TCP/IP.

Mon Jan 28 17:13:09 GMT 2008  Olly Betts <olly@survex.com>

        * common/Makefile.mk,common/replicatetcpserver.h,net/Makefile.mk,
          net/replicatetcpserver.cc: Add ReplicateTcpServer class implementing
          a replication server over TCP/IP.

Mon Jan 28 17:01:02 GMT 2008  Olly Betts <olly@survex.com>

        * common/remoteconnection.h,net/remoteconnection.cc: Minor tweaks
          to allow unidirectional connections.

Mon Jan 28 16:26:22 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * api/replication.cc: Fix overly hasty commit - add
          get_description() method for internal class, and use that instead
          of trying to access a private member.

Mon Jan 28 16:22:18 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * api/replication.cc,common/output.h,include/xapian/replication.h:
          Add get_description() methods to DatabaseMaster and
          DatabaseReplica, and add XAPIAN_OUTPUT_FUNCTION methods for them
          so that they can be displayed in debugging methods.  Should fix
          build with logging enabled.

Mon Jan 28 11:52:24 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * api/replication.cc,include/xapian/replication.h: Add
          DatabaseReplica::close() method, to allow the write lock to be
          released easily.

Mon Jan 28 11:21:36 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * api/replication.cc,include/xapian/replication.h: Change
          DatabaseReplica into a PIMPL style class, now that it has more
          than one member.  Add visibility annotations to DatabaseMaster
          and DatabaseReplica.

Mon Jan 28 10:44:51 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * api/replication.cc,include/xapian/replication.h: Add code to swap
          stub database files over atomically, and to track the current
          real database path.

Mon Jan 28 04:52:12 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * api/replication.cc,backends/database.cc,
          backends/flint/flint_changesetapplier.h,
          backends/flint/flint_database.cc,backends/flint/flint_database.h,
          common/database.h: Implement opening of the database underlying
          DatabaseReplica objects, and hook up the get_revision_info()
          method for it.

Mon Jan 28 04:17:21 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * common/utils.cc,common/utils.h: Add "dir_exists" function, to
          check for presence of a directory at a given path.

Mon Jan 28 03:48:46 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * backends/flint/flint_table.cc: Change a "+= 1" to ++ - this isn't
          Python!

Mon Jan 28 03:08:45 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * api/Makefile.mk,api/replication.cc,include/Makefile.mk,
          include/xapian/replication.h: Add interface to replication
          functionality.  (Currently just unimplemented stubs.)

Mon Jan 28 02:01:02 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * backends/flint/flint_btreebase.h: Add a missing std::

Mon Jan 28 01:59:55 GMT 2008  Olly Betts <olly@survex.com>

        * common/remotetcpserver.h: Fix typo in doxygen comment: `@port' ->
          `@param port'.  Update comment - socket is no longer closed by
          handle_one_connection().

Mon Jan 28 01:28:00 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * backends/flint/: Add support for recording the changes made to a
          database in "changeset" files.  These are currently not produced
          by default - for now, the "XAPIAN_MAX_CHANGESETS" environment
          variable can be set to control production of them.  As part of
          these changes, the FlintTable constructor now takes the
          tablename, so that this can be stored in changesets produced from
          the table.
        * bin/xapian-check.cc,bin/xapian-compact.cc,bin/xapian-inspect.cc:
          Update to match changes in FlintTable constructor.
        * docs/Makefile.am,docs/replication.rst,docs/replication_protocol.rst:
          Add basic documentation of the replication protocol (though this
          isn't yet definitive, since the protocol isn't finished!)

Sun Jan 27 21:10:24 GMT 2008  Olly Betts <olly@survex.com>

        * net/remotetcpserver.cc,net/tcpserver.cc: The job of closing the
          socket connected to the client more naturally belongs to the
          framework TcpServer class.

Sun Jan 27 20:32:55 GMT 2008  Olly Betts <olly@survex.com>

        * backends/flint/flint_table.cc: Call flint_io_sync() in commit()
          rather than flush_db(), as that gives more time for written blocks
          to get written to disk before we block on waiting for them to be.
          This should tend to speed up WritableDatabase::flush() in I/O bound
          situations.

Sun Jan 27 19:35:08 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * backends/flint/flint_spelling.h,backends/flint/flint_synonym.h:
          Merge changes to the spelling and synonym tables just before
          calling FlintTable::flush_db(), rather than just before calling
          FlintTable::commit(), so that they don't get forgotten.

Sun Jan 27 14:29:30 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * backends/flint/flint_database.cc,backends/flint/flint_table.cc,
          backends/flint/flint_table.h: Separate step which flushes
          modified blocks from cursors to the DB file from the rest of
          commit.  This will allow me to insert the changeset writing code
          between the two steps, so it can assume that the DB file is fully
          up-to-date.  Also remove an out-of-date FIXME about trying to
          avoid updating the value and position tables if they're not used:
          these tables are now lazily created anyway.

Sun Jan 27 12:53:51 GMT 2008  Olly Betts <olly@survex.com>

        * net/tcpserver.cc: Change explicit references to xapian-tcpsrv.

Sun Jan 27 12:26:24 GMT 2008  Olly Betts <olly@survex.com>

        * common/tcpclient.h,common/tcpserver.h,net/: Make use of TCP_NODELAY
          optional at the class level.  No user-visible changes.

Sat Jan 26 17:18:09 GMT 2008  Olly Betts <olly@survex.com>

        * backends/dbfactory_remote.cc,common/Makefile.mk,
          common/remotetcpclient.h,common/tcpclient.h,net/Makefile.mk,
          net/remotetcpclient.cc,net/tcpclient.cc: Split out the "open
          a connection" part of TcpClient and rename the rest to
          RemoteTcpClient.

Sat Jan 26 14:01:34 GMT 2008  Olly Betts <olly@survex.com>

        * bin/xapian-tcpsrv.cc,common/Makefile.mk,common/remotetcpserver.h,
          common/tcpserver.h,net/Makefile.mk,net/remotetcpserver.cc,
          net/tcpserver.cc: Split TcpServer into a generic TCP server
          class (TcpServer) and a subclass of this which implements the
          remote backend TCP server (RemoteTcpServer).

Sat Jan 26 11:06:30 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * backends/flint/flint_btreebase.cc,backends/quartz/btree_util.h,
          common/utils.h: Move fdcloser into utils.h, since it's generally
          useful, and it's better not to have multiple copies of it
          scattered through the code.

Fri Jan 25 15:06:30 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * backends/flint/flint_table.cc,backends/quartz/btree.cc: Use
          msvc_posix_unlink() on windows in sys_unlink_if_exists()
          functions, so that they will work even if the file is still open.
          This probably changes no behaviour, because
          sys_unlink_if_exists() is probably never called in such a
          situation, but this may not be true in future.

Thu Jan 24 13:31:20 GMT 2008  Olly Betts <olly@survex.com>

        * docs/overview.html: Remove commented-out comment about OP_XOR.

Thu Jan 24 13:30:04 GMT 2008  Olly Betts <olly@survex.com>

        * docs/intro_ir.html: Briefly mention how pure boolean retrieval is
          supported.

Thu Jan 24 13:28:44 GMT 2008  Olly Betts <olly@survex.com>

        * HACKING: Move "debian/patch" update earlier in the checklist.

Thu Jan 24 13:26:45 GMT 2008  Olly Betts <olly@survex.com>

        * NEWS: Partly update from ChangeLog.

Thu Jan 17 22:32:08 GMT 2008  Olly Betts <olly@survex.com>

        * backends/flint/flint_lock.cc,backends/flint/flint_lock.h,
          bin/xapian-check.cc: Apply tweaked version of patch for OS/2 support
          by Yuri Dario.
        * AUTHORS: Add Yuri Dario.
        * PLATFORMS: Mention OS/2.

Mon Jan 14 11:03:05 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * backends/flint/flint_table.cc,backends/quartz/btree.cc: Fix more
          assertions to avoid overflowing int.

Mon Jan 14 09:29:51 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * backends/flint/flint_btreeutil.h: Fix assertions to not overflow
          int.

Mon Jan 14 09:23:54 GMT 2008  Olly Betts <olly@survex.com>

        * backends/quartz/btree_util.h: Fix assertions to not overflow int.

Mon Jan 14 08:47:33 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * configure.ac: Fix test for gcc being 4.0.x or 4.1.x, so we don't
          use -Wstrict-overflow with them.

Sun Jan 13 23:28:04 GMT 2008  Olly Betts <olly@survex.com>

        * configure.ac: GCC warning flag overhaul.  Stop passing
          "-Wno-multichar" since any multi-character character literal is
          bound to be a typo (I believe we were only passing it after
          misinterpreting its sense!)  Pass "-Wformat-security",
          "-Wconversion", and "-pedantic" for all GCC versions.  Add
          "-Winit-self" and "-Wstrict-overflow=5" for GCC >= 4.2.  The
          latter may be too aggressive, but it's hard to know without
          trying it more widely.

Sun Jan 13 00:25:25 GMT 2008  Olly Betts <olly@survex.com>

        * backends/flint/flint_check.h,backends/flint/flint_table.h,
          backends/quartz/btree.h,net/tcpserver.cc,tests/harness/testsuite.cc:
          Add XAPIAN_NORETURN() annotations to functions and non-virtual
          methods which don't return.
        * net/remoteserver.cc: Assign bool variable using a comparison rather
          than subtraction, so the intent is clearer.

Sun Jan 13 00:23:41 GMT 2008  Olly Betts <olly@survex.com>

        * backends/flint/flint_check.cc: Tweak a comparison so all the
          constants are on the same side (micro-optimisation).
        * backends/quartz/btreecheck.cc: Equivalent change for quartz.

Sun Jan 13 00:20:08 GMT 2008  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Add a couple of testcases I wrote for a
          reported problem which turned out to work correctly already.  Still,
          they add to our test coverage.

Thu Jan 10 02:04:55 GMT 2008  Olly Betts <olly@survex.com>

        * tests/runtest.in: Cope with "@EXEEXT" extension on test programs.

Wed Jan 09 21:57:59 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * api/omquery.cc,api/omqueryinternal.cc,common/remoteprotocol.h,
          include/xapian/query.h,matcher/queryoptimiser.cc,tests/api_anydb.cc:
          Add OP_VALUE_LE operator, for symmetry with OP_VALUE_GE.
          Currently implemented internally using a ValueRangePostList with
          an empty string as the start of the range.

Wed Jan 09 19:36:37 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

        * api/omquery.cc,api/omqueryinternal.cc,include/xapian/query.h: Add
          new query operator OP_VALUE_GE, for performing "return documents
          with a value greater than this" searches.  Also add a new
          constructor to go with this which takes a value number and a
          single string argument.
        * matcher/: Add ValueGePostList class, as a subclass of
          ValueRangePostList.  Change internal members of
          ValueRangePostList to be protected instead of private.  Add
          support for making ValueGePostLists from OP_VALUE_GE queries.
        * tests/api_anydb.cc: Add valuege1 testcase of OP_VALUE_GE queries.
        * common/remoteprotocol.h: Bump minor protocol number, due to
          additional operator being possible in serialised queries.

Wed Jan 09 15:18:16 GMT 2008  Olly Betts <olly@survex.com>

        * PLATFORMS: Update from Debian buildd logs.

Wed Jan 09 13:53:34 GMT 2008  Olly Betts <olly@survex.com>

        * tests/harness/backendmanager_remotetcp.cc: Fix XAPIAN_NORETURN() to
          wrap a declaration, not the definition, to fix compile failure on
          mingw "make check".  Correct file documentation comment to refer
          to "remotetcp" not "remoteprog".

Mon Jan 07 01:28:14 GMT 2008  Olly Betts <olly@survex.com>

        * PLATFORMS: Remove reports for 0.8.x as they're too old to be
          interesting.  Separate out 0.9.x reports.

Mon Jan 07 00:23:10 GMT 2008  Olly Betts <olly@survex.com>

        * PLATFORMS: Add Solaris 9 and 10 success reports from James Aylett.

Sat Jan 05 19:13:12 GMT 2008  Olly Betts <olly@survex.com>

        * languages/compiler/generator.c: In generate_call(), if the failure
          case would just be "if (ret == 0) return 0;" then combine it with
          the test for the called method returning signal `f'.

Sat Jan 05 18:28:31 GMT 2008  Olly Betts <olly@survex.com>

        * languages/compiler/generator.c: Generate more readable code for the
          inlined single ASCII character literal string check.

Sat Jan 05 18:27:07 GMT 2008  Olly Betts <olly@survex.com>

        * languages/steminternal.cc: Tweak skip_utf8() to save ~0.5% on
          stemtest.

Sat Jan 05 02:20:57 GMT 2008  Olly Betts <olly@survex.com>

        * languages/compiler/generator.c: Optimise a single ASCII character
          literalstring check by inlining the check.  This makes stemtest run
          about 2% faster.

Fri Dec 21 21:57:11 GMT 2007  Olly Betts <olly@survex.com>

        * docs/valueranges.rst: Fix example of using multiple VRPs to come out
          as a "program listing".

Fri Dec 21 15:31:35 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * common/stringutils.h,common/utils.h: Move declaration of
          within_DBL_EPSILON back into utils.h to fix builds with
          --enable-assertions, and since it's not string-related.

Fri Dec 21 02:12:49 GMT 2007  Olly Betts <olly@survex.com>

        * NEWS: Note that one change was "(bug#45)".  Bump release date.

Thu Dec 20 22:00:41 GMT 2007  Olly Betts <olly@survex.com>

        * NEWS: Update again for 1.0.5.

Thu Dec 20 17:50:26 GMT 2007  Olly Betts <olly@survex.com>

        * common/stringutils.cc: Add new file I failed to commit.

Thu Dec 20 17:17:28 GMT 2007  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Add feature tests to ensure that ':' is
          inserted between prefix and term when it should be.

Thu Dec 20 13:58:18 GMT 2007  Olly Betts <olly@survex.com>

        * common/,queryparser/queryparser.lemony,
          queryparser/termgenerator_internal.cc,tests/harness/index_utils.cc,
          tests/harness/unixcmds.cc: Move C_isupper(), C_toupper(), etc from
          utils.cc/utils.h to stringutils.cc/stringutils.h, since they are
          string-related.

Thu Dec 20 03:00:08 GMT 2007  Olly Betts <olly@survex.com>

        * HACKING: Remove details of issues with autoconf < 2.57 and
          automake < 1.5 as these versions are antiques compared to our
          current requirements of autoconf >= 2.59 and automake >= 1.8.3.

Wed Dec 19 03:41:42 GMT 2007  Olly Betts <olly@survex.com>

        * AUTHORS,NEWS,configure.ac: Update for 1.0.5.

Wed Dec 19 03:36:30 GMT 2007  Olly Betts <olly@survex.com>

        * api/omdatabase.cc: Calling WritableDatabase methods when we don't
          have exactly one subdatabase now throws InvalidOperationError.
        * tests/termgentest.cc: Add regression test to check that we now get
          InvalidOperationError (previously this case gave a segmentation
          fault).

Wed Dec 19 01:39:01 GMT 2007  Olly Betts <olly@survex.com>

        * PLATFORMS: Update from tinderbox.

Tue Dec 18 23:17:37 GMT 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_lock.cc,backends/flint/flint_lock.h: Move lots
          of headers included by flint_lock.h to flint_lock.cc since
          flint_lock.h doesn't need them.  Add a "FIXME:1.1:" comment about
          an odd special-case for newlib.

Thu Dec 13 17:34:19 GMT 2007  Olly Betts <olly@survex.com>

        * tests/stemtest.cc: Mark undocumented OM_STEMTEST_* environmental
          variables for removal in 1.1.

Thu Dec 13 01:27:15 GMT 2007  Olly Betts <olly@survex.com>

        * HACKING: Need to check RPM packaging with Tim Brody too.

Thu Dec 13 01:26:16 GMT 2007  Olly Betts <olly@survex.com>

        * configure.ac: Note that we check for <streambuf> because GCC 2.95
          only has <streambuf.h>.

Thu Dec 13 01:23:27 GMT 2007  Olly Betts <olly@survex.com>

        * AUTHORS: Add Ralf Wildenhues for suggesting a way to factor out
          the boilerplate in multitarget rules.

Wed Dec 12 02:02:51 GMT 2007  Olly Betts <olly@survex.com>

        * NEWS: Update for ChangeLog in preparation for 1.0.5.

Wed Dec 12 01:02:29 GMT 2007  Olly Betts <olly@survex.com>

        * docs/admin_notes.rst: Mark as up to date for Xapian 1.0.5.  Minor
          wording improvements.

Sun Dec 09 01:09:19 GMT 2007  Olly Betts <olly@survex.com>

        * tests/collate-apitest: Check for sources in the build directory
          first, and only if not there prepend "$srcdir/".  The recently
          added api_generated.cc will be in the build directory when using an
          SVN checkout.

Fri Dec 07 12:37:08 GMT 2007  Olly Betts <olly@survex.com>

        * docs/sorting.rst,docs/valueranges.rst: State explicitly that
          Xapian::sortable_serialise() is used to encode values at index time
          and give an example of how it is called.

Thu Dec 06 15:55:31 GMT 2007  Olly Betts <olly@survex.com>

        * tests/Makefile.am,tests/collate-apitest,
          tests/generate-api_generated: Add automatically generated tests to
          ensure that API classes generally have copy ctors and assignment
          operators, and also generally have a default ctor.

Thu Dec 06 15:32:23 GMT 2007  Olly Betts <olly@survex.com>

        * docs/sorting.rst: Fill in the remaining items in the outline.

Thu Dec 06 12:50:46 GMT 2007  Olly Betts <olly@survex.com>

        * tests/valgrind.supp: Another variant of the zlib suppression.

Wed Dec 05 18:31:12 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * Makefile.am,docs/Makefile.am,tests/Makefile.am: Add dir_contents,
          docs/dir_contents and tests/dir_contents to distribution
          tarballs.

Wed Dec 05 18:28:12 GMT 2007  Olly Betts <olly@survex.com>

        * preautoreconf: Really fix handling of version.h.

Wed Dec 05 18:20:54 GMT 2007  Olly Betts <olly@survex.com>

        * preautoreconf: Handle make pattern substitutions.

Wed Dec 05 18:11:31 GMT 2007  Olly Betts <olly@survex.com>

        * preautoreconf: Fix special-case handling of include/xapian/version.h.

Wed Dec 05 18:01:34 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * matcher/multiandpostlist.cc,matcher/multiandpostlist.h: Implement
          get_wdf() method for MultiAndPostList (by adding together the
          wdfs of the subpostlists).  Not currently used (but will be by
          SynonymPostList).

Wed Dec 05 17:43:24 GMT 2007  Olly Betts <olly@survex.com>

        * preautoreconf: Special-case version.h.

Wed Dec 05 17:31:47 GMT 2007  Olly Betts <olly@survex.com>

        * preautoreconf: Fix errors in previous check-in.

Wed Dec 05 17:18:26 GMT 2007  Olly Betts <olly@survex.com>

        * preautoreconf: Parse BUILT_SOURCES to determine which files are
          generated and so need looking for in the build directory - this
          won't need updating when new files are generated, or existing
          ones stop being.

Wed Dec 05 16:55:26 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * preautoreconf: Fix "make doxygen_docs" with VPATH build: look for
          generated code files in build dir, and make rule which re-runs
          preautoreconf change to srcdir first.

Wed Dec 05 14:59:52 GMT 2007  Olly Betts <olly@survex.com>

        * docs/sorting.rst: Document set_sort_by_value() and friends.

Wed Dec 05 11:31:27 GMT 2007  Olly Betts <olly@survex.com>

        * docs/sorting.rst: More work.

Tue Dec 04 14:42:57 GMT 2007  Olly Betts <olly@survex.com>

        * docs/bm25.html: Improve wording.

Mon Dec 03 17:11:01 GMT 2007  Olly Betts <olly@survex.com>

        * docs/Makefile.am,docs/index.html,docs/sorting.rst: Add the start of
          a topic document on sorting.

Mon Dec 03 17:10:04 GMT 2007  Olly Betts <olly@survex.com>

        * common/stats.h: Fix comment typos.

Sun Dec 02 14:36:47 GMT 2007  Olly Betts <olly@survex.com>

        * docs/synonyms.rst: Minor wording clarification.

Sun Dec 02 14:23:37 GMT 2007  Olly Betts <olly@survex.com>

        * tests/collate-apitest: Fix reversed conditional for deciding
          which generated headers to update.

Sun Dec 02 03:47:44 GMT 2007  Olly Betts <olly@survex.com>

        * tests/apitest.cc: Include api_all.h instead of the individual
          generated headers.

Sun Dec 02 03:44:56 GMT 2007  Olly Betts <olly@survex.com>

        * tests/collate-apitest: Add licence and (C).  Only update .h files
          which may have changed.  Generate api_all.h which just includes
          the generated headers corresponding to all the sources processed.
          Strip spaces from conditions.
        * tests/Makefile.am: Update for api_all.h.

Sun Dec 02 03:21:59 GMT 2007  Olly Betts <olly@survex.com>

        * matcher/weight.cc: Wrap comment.

Sun Dec 02 03:21:25 GMT 2007  Olly Betts <olly@survex.com>

        * AUTHORS: Thank Petr Ročkai.

Sun Dec 02 02:40:58 GMT 2007  Olly Betts <olly@survex.com>

        * api/omenquire.cc: Oops, this file also part of previous change.

Sun Dec 02 02:14:27 GMT 2007  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Implement copy ctor and assignment
          operator for Xapian::Enquire (bug#219).
        * configure.ac: Note what this means in terms of library versioning.

Sat Dec 01 02:54:51 GMT 2007  Olly Betts <olly@survex.com>

        * include/xapian/: Stop describing get_description() as an
          "Introspection method", as this doesn't help to explain what it
          does, and get_description() doesn't actually fall under any of the
          formal definitions of "introspection" I can find.

Sat Dec 01 02:45:16 GMT 2007  Olly Betts <olly@survex.com>

        * tests/harness/index_utils.h: Overlooked (C) update.

Sat Dec 01 02:34:59 GMT 2007  Olly Betts <olly@survex.com>

        * HACKING,INSTALL,common/,configure.ac,tests/api_anydb.cc,
          tests/api_db.cc,tests/btreetest.cc,tests/harness/testsuite.cc,
          tests/harness/testsuite.h,tests/harness/testutils.cc,
          tests/internaltest.cc: Raise the minimum supported GCC version
          to 2.95.3 and strip out om_ostringstream which is no longer
          required.

Sat Dec 01 01:10:04 GMT 2007  Olly Betts <olly@survex.com>

        * tests/api_sorting.cc,tests/api_wrdb.cc: Move sortfunctor2 from
          api_wrdb.cc to api_sorting.cc.

Sat Dec 01 00:43:31 GMT 2007  Olly Betts <olly@survex.com>

        * tests/valgrind.supp: Add version of the valgrind zlib suppression
          for 64 bit hosts.

Fri Nov 30 18:06:49 GMT 2007  Olly Betts <olly@survex.com>

        * tests/harness/index_utils.cc: Workaround MSVC which doesn't clear
          the fail bit when a stream is reopened.

Fri Nov 30 00:44:21 GMT 2007  Olly Betts <olly@survex.com>

        * matcher/queryoptimiser.cc: Make delete_ptr<> a functor rather than
          a function.  This fixes the build with SGI's compiler, and
          apparently a functor allows more compilers to inline the call.

Thu Nov 29 19:24:22 GMT 2007  Olly Betts <olly@survex.com>

        * configure.ac: Fix previous change to work.

Thu Nov 29 18:53:09 GMT 2007  Olly Betts <olly@survex.com>

        * configure.ac: Assume we have <sstream> and hardwire HAVE_SSTREAM to
          be 1.  If this assumption proves correct for all platforms we care
          about, we can rip out the old om_ostringstream code.

Thu Nov 29 17:51:11 GMT 2007  Olly Betts <olly@survex.com>

        * tests/harness/index_utils.cc: Work around MSVC.

Wed Nov 28 03:17:06 GMT 2007  Olly Betts <olly@survex.com>

        * api/sorter.cc: Fix reverse sorting of value strings with different
          lengths.
        * tests/api_wrdb.cc: Add test sortfunctor2 to check this actually
          works.

Wed Nov 28 02:27:37 GMT 2007  Olly Betts <olly@survex.com>

        * tests/api_wrdb.cc,tests/apitest.cc,tests/apitest.h,tests/harness/:
          Add get_named_writable_database() and use it to fix spell3 on
          Microsoft Windows.

Tue Nov 27 16:56:12 GMT 2007  Olly Betts <olly@survex.com>

        * xapian-config.in: Factor out the code to check if we need explicit
          dependencies into a function.  On platforms we know don't need
          explicit dependencies, --ltlibs now gives the same output as --libs.

Tue Nov 27 00:24:18 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/Makefile.am: Remove api_regressions.cc from list - didn't
          mean to commit that (yet).

Tue Nov 27 00:17:40 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/Makefile.am: Use $(collated_apitest_sources) in list of
          apitest_SOURCES; now a new test file can be added just by adding
          it to this variable.

Mon Nov 26 23:04:00 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/Makefile.am: Add generated apitest .h files to targets of
          rule which calls collate-apitest, since they're also generated by
          it.  Change the rule to use a .stamp and a .lock file as
          described in HACKING, to fix parallel builds.

Mon Nov 26 18:48:20 GMT 2007  Olly Betts <olly@survex.com>

        * Makefile.am: Distribute preautoreconf.

Mon Nov 26 17:24:15 GMT 2007  Olly Betts <olly@survex.com>

        * HACKING,configure.ac,docs/Makefile.am: Use pngcrush to reduce the
          size of PNG files in the doxygen-generated HTML docs.

Mon Nov 26 15:39:58 GMT 2007  Olly Betts <olly@survex.com>

        * docs/Makefile.am: Don't package or install various intermediate
          files which doxygen generates.

Mon Nov 26 13:14:19 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/api_db.cc: Ensure that the database needed for stubdb1 is
          present, by creating it first (with get_database()).  This
          requires that the database type is flint, but the test doesn't
          depend on any particular database type anyway, so this doesn't
          lose us anything.

Mon Nov 26 13:08:08 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/collate-apitest: Display the name of the backend which a
          set of tests is for.

Mon Nov 26 09:45:39 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/Makefile.am,tests/collate-apitest: Fix with VPATH builds -
          pass srcdir as the first argument to collate-apitest, so it can
          find the sources.  Also, use srcdir to form the path to
          collate-apitest when calling it from the make rule.

Mon Nov 26 02:22:08 GMT 2007  Olly Betts <olly@survex.com>

        * tests/api_db.cc,tests/apitest.cc,tests/apitest.h: Convert the
          remaining tests to be collated.

Mon Nov 26 02:08:18 GMT 2007  Olly Betts <olly@survex.com>

        * tests/api_db.cc,tests/apitest.cc,tests/apitest.h: Collate the
          localdb and remotedb tests.

Mon Nov 26 01:40:59 GMT 2007  Olly Betts <olly@survex.com>

        * tests/: Collate the specchar, doclendb, collfreq, allterms, and
          multivalue tests.

Mon Nov 26 01:21:35 GMT 2007  Olly Betts <olly@survex.com>

        * tests/: Collate the anydb tests.  Remove the generated files upon
          "make clean" in maintainer-mode.

Mon Nov 26 00:34:03 GMT 2007  Olly Betts <olly@survex.com>

        * tests/: Collate the wrdb tests.

Mon Nov 26 00:18:18 GMT 2007  Olly Betts <olly@survex.com>

        * tests/api_posdb.cc,tests/apitest.cc: Add "writable" flag and use it
          for poslist2 and poslist3.

Mon Nov 26 00:13:43 GMT 2007  Olly Betts <olly@survex.com>

        * tests/: Collate the posdb tests.

Mon Nov 26 00:03:29 GMT 2007  Olly Betts <olly@survex.com>

        * tests/: Collate the nodb tests.

Sun Nov 25 23:55:02 GMT 2007  Olly Betts <olly@survex.com>

        * tests/: Collate the transaction tests.

Sun Nov 25 23:49:26 GMT 2007  Olly Betts <olly@survex.com>

        * tests/: Collate the unicode tests.

Sun Nov 25 23:35:40 GMT 2007  Olly Betts <olly@survex.com>

        * tests/: Make a start on automatically collating test cases.

Sun Nov 25 22:41:52 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * api/weightinternal.cc: Initialise all members of
          Xapian::Weight::Internal, and use initialisers rather than
          assignment to do so.  Fixes an error reported by valgrind.

Sun Nov 25 16:48:21 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * matcher/weight.cc: Add another note of a FIXME needed for 1.1

Sun Nov 25 16:40:28 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * matcher/bm25weight.cc,matcher/tradweight.cc: Add some missing
          "using namespace std;" lines which are needed due to earlier
          changes in header file inclusions.  Also, remove some unnecessary
          std:: prefixes.

Sun Nov 25 16:35:30 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * common/stats.h,include/xapian/enquire.h,matcher/localmatch.cc,
          matcher/weight.cc: Undo ABI change introduced in previous commit
          with a nasty workaround; we can't initialise Weight::internal
          reliably, because applications complied with earlier versions of
          the library may have inlined the constructor of the Weight class.
          Therefore, we can't delete Weight::internal in the destructor,
          because we don't know if it was initialised.  Instead, we
          add factory methods for making Weight::Internal objects to Stats,
          register all the Weight::Internal objects made by these factory
          methods in a list is the Stats object, and delete them when Stats
          is deleted (which conveniently happens after the match has
          finished).  Mark all this with FIXME:1.1: so that we can easily
          convert it to nicer code once we branch for 1.1.

Sun Nov 25 15:14:04 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * api/Makefile.mk,api/weightinternal.cc,common/,
          include/xapian/enquire.h,matcher/: Split Stats and
          Xapian::Weight::Internal into different classes: Stats remains
          with the same members (but becomes a concrete class, rather than
          a typedef of another class), and Xapian::Weight::Internal becomes
          a simple container for exactly those statistics which are
          relevant for a weight object (ie, it holds just one termfreq and
          reltermfreq, rather than a map of all of them).  This is
          dynamically allocated, so Xapian::Weight now owns the object
          pointed to by its "internal" member, and deletes it in its
          destructor.  Add a new header file "weightinternal.h" so that the
          full "stats.h" stuff doesn't need to be included for definitions
          of weighting schemes.  Replace #include "stats.h" lines with
          forward declarations of Stats, where possible.

Sun Nov 25 15:09:29 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * api/omenquire.cc: Add missing include of stats.h
        * matcher/queryoptimiser.cc,net/tcpserver.cc: Remove unnecessary
          include of stats.h
        * net/remoteserver.cc: Include missing includes of omassert.h and
          stats.h, and change an Assert to AssertEq.
        * matcher/multimatch.cc: Output the contents of the stats object in
          debugging code.

Sun Nov 25 04:22:05 GMT 2007  Olly Betts <olly@survex.com>

        * common/multimatch.h: No longer need "autoptr.h" here.

Sun Nov 25 04:07:04 GMT 2007  Olly Betts <olly@survex.com>

        * common/multimatch.h: Fix typo in documentation comment.

Sun Nov 25 03:58:21 GMT 2007  Olly Betts <olly@survex.com>

        * common/remoteserver.h,matcher/localmatch.cc,matcher/multimatch.cc:
          Remove lingering traces of StatsGatherer.

Sat Nov 24 20:44:03 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * common/stats.h,matcher/Makefile.mk,matcher/stats.cc: Add
          get_description() method for Xapian::Weight::Internal, and add
          stats.cc back to hold it's implementation.
        * common/output.h: Add an output function for Stats (aka
          Xapian::Weight::Internal) to fix the build when debug logging is
          enabled.

Sat Nov 24 01:21:56 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * api/omenquire.cc,common/,matcher/,net/remoteserver.cc: Remove
          StatsGatherer and its subclasses completely.  Instead of a
          StatsGatherer subclass, MultiMatch is now simply passed a Stats
          object, and passes this to the prepare_match() methods of the sub
          matchers to be populated with statistics.  OmEnquire then passes
          the same Stats object to MultiMatch::get_mset(), whereas a remote
          submatch sends the Stats object to the parent match, to be
          combined with the global statistics, and then passes the returned
          global statistics to MultiMatch::get_mset().  Remove stats.cc
          since it only contained implementations of StatsGatherer methods,
          and networkstats.h which only contained the definition of the
          NetworkStatsGatherer.
        * matcher/rset.cc: Add the rset size to the database - we now
          compute the global rset size the same way as we compute the
          global collection size: by adding the sizes in the sub
          collections together.  We have the total rset size easily
          available in the code, but building the total rset size up from
          the sub-databases makes the code simpler.

Sat Nov 24 01:21:18 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * matcher/andnotpostlist.cc: Add a missing #include "omdebug.h".

Fri Nov 23 23:13:12 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * common/stats.h,matcher/: Remove the StatsSource class entirely.
          LocalSubMatch and RemoteSubMatch now contribute their stats
          directly to the gatherer in the prepare_match() method, so the
          gatherer doesn't need to worry about keeping track of the sources
          of statistics.

Fri Nov 23 21:46:32 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * common/submatch.h,matcher/: Change SubMatch::start_match() (and
          all start_match() methods in subclasses) to take the statistics
          for the whole collection as an additional parameter.  MultiMatch
          now gets the statistics from the gatherer and passes it to
          start_match().

Fri Nov 23 17:38:28 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * common/stats.h: Add set_termfreq() and set_reltermfreq()
          convenience methods to Stats; and remote the take_my_stats(),
          my_termfreq_is() and my_reltermfreq_is() methods from
          StatsSource.
        * common/rset.h,matcher/rset.cc: Rename give_stats_to_statssource()
          to contribute_stats(), and give it take a Stats object instead of
          a StatsSource object.  Can't forward declare Stats, so we need to
          #include "stats.h" in rset.h now, unfortunately.
        * matcher/localmatch.cc,matcher/localmatch.h: Move register_term()
          implementation inline into prepare_match().  Build up the
          statistics in a local Stats object, rather than passing them
          piecemeal to the StatsSource object, and then use
          StatsSource::get_my_stats() to set them, just like
          RemoteSubMatcher.

Fri Nov 23 14:35:49 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * matcher/localmatch.cc,matcher/localmatch.h: Get the total
          statistics from the gatherer directly and store them in a new
          member of LocalSubMatch, rather than getting them via the
          StatsSource when we need them.  This bypasses the
          get_total_stats() and set_total_stats() methods of StatsSource.
        * common/stats.h,matcher/stats.cc: Remove the (newly) unused
          methods StatsSource::set_total_stats() and
          StatsSource::get_total_stats().

Fri Nov 23 11:40:54 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * common/,include/xapian/enquire.h,matcher/: Rename
          Xapian::Weight::Internal to StatsSource (which I hope to be able
          to remove shortly), and rename the Stats class to
          Xapian::Weight::Internal.  Requires minimal plumbing changes -
          TradWeight and BM25Weight classes now query the internals
          directly for the statistics, LocalSubMatch now gets the
          statistics from StatsSource and passes them to wt_factory.
          common/remote-database.h and common/serialise.h now need to
          #include stats.h unfortunately, because a forward declaration
          can't be used for Xapian::Weight::Internal (unless I'm missing
          something).

Fri Nov 23 10:15:43 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * common/stats.h,matcher/bm25weight.cc,matcher/localmatch.cc,
          matcher/tradweight.cc: Remove the Xapian::Weight::Internal
          get_total_* methods: instead, add a get_total_stats() method
          which returns a Stats object representing the whole collection.
          Add get_termfreq() and get_reltermfreq() convenience methods to
          Stats for looking up individual term's statistics.  Also, change
          protected members of Xapian::Weight::Internal to private members,
          since we're no longer subclassed.  Also, in tradweight.cc, avoid
          division by zero in the (rare) situation of the average length
          being zero; in the same way as this is handled by bm25weight.cc.

Thu Nov 22 12:58:02 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * common/stats.h,matcher/localmatch.cc,matcher/localmatch.h,
          matcher/stats.cc: Replay Xapian::Weight::Internal's
          perform_request() method with set_total_stats().  The replacement
          takes the stats as a parameter, rather than magically getting
          them from the gatherer.  The LocalSubMatch now needs to call the
          gatherer to get the stats, and then pass it to set_total_stats(),
          so needs to keep a reference to the gatherer.  However, we are
          now one step closer to decoupling the gatherer from the stats.

Thu Nov 22 11:47:56 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * common/stats.h,matcher/localmatch.cc: Remove automatic
          just-in-time calls to statssource.perform_request() - instead,
          make it public, and call it explicitly before the postlist tree
          is constructed.  Also, make Xapian::Weight::Internal's destructor
          non-virtual, since it's no longer subclassed anywhere.

Thu Nov 22 11:02:39 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * common/networkstats.h,matcher/stats.cc: Remove
          fetch_local_stats() method, and use of have_gathered flag for
          caching result of gathering the stats - instead, simply Assert
          that have_gathered is false before gathering; we currently only
          call get_local_stats() once for a given gatherer.

Thu Nov 22 10:04:40 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * common/rset.h: Change multiline "///" comments to use "/**",
          style.

Thu Nov 22 09:27:42 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * matcher/localmatch.cc,matcher/queryoptimiser.h: Update a couple
          of comments.

Thu Nov 22 08:29:19 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * common/networkstats.h,common/stats.h,matcher/: Remove the
          LocalStatsSource and NetworkStatsSource classes - just use the
          base class (Xapian::Weight::Internal) instead.  LocalStatsSource
          had no extra members whatsoever, whereas NetworkStatsSource had
          various members which weren't used, and a single method
          "take_remote_stats" which simply sets the statistics held - I've
          renamed this method "set_my_stats" and added it to the base
          class.

Thu Nov 22 00:05:06 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * common/networkstats.h,common/stats.h,matcher/stats.cc: Replace
          StatsGatherer::contrib_my_stats() and
          StatsSource::contrib_stats() methods; instead add a
          get_my_stats() method to StatsSource and simply call this.

Wed Nov 21 16:37:10 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * common/networkstats.h,common/remoteserver.h,matcher/stats.cc,
          net/remoteserver.cc: Rework NetworkStatsGatherer - it no longer
          needs to have the RemoteServer passed into it; instead, the
          RemoteServer calls NetworkStatsGatherer::set_global_stats() with
          the global statistics as soon as it gets them.  This new method
          replaces fetch_global_stats().  As a result, the RemoteServer no
          longer needs to remember the global_stats received from the
          network - it just passes them straight to the gatherer - so
          remove the global_stats and get_global_stats() methods from
          RemoteServer.

Wed Nov 21 15:42:40 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * common/rset.h,matcher/rset.cc: Document the member functions of
          RSetI, and remove the totally unused "get_reltermfreq()" member.
          Also remove an ancient, commented out, implementation of an
          "add_document()" member, and add copyright lines.

Wed Nov 21 15:26:11 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * common/rset.h,matcher/localmatch.cc,matcher/rset.cc: Make
          RSet::calculate_stats() private, and call it only from
          RSet::give_stats_to_statssource().  Was previously called
          directly from localmatch.cc, but this way it's clear that it's
          only called once.

Wed Nov 21 14:30:17 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * matcher/remotesubmatch.h: Move implementation of constructor into
          .cc file (accidentally missed this file from the last-but-one
          commit, which did the necessary changes to the .cc file).

Wed Nov 21 14:28:48 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * matcher/rset.cc: Improve debugging messages.

Wed Nov 21 14:26:44 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * matcher/remotesubmatch.cc: Add some debugging, and reorder the
          header includes.

Wed Nov 21 13:21:35 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * matcher/multimatch.cc: Add DEBUGCALL_STATIC macros to the new
          functions, and tidy some code in the constructor slightly.

Wed Nov 21 10:00:48 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * matcher/multimatch.cc: Split the loop which calls prepare_match()
          out of the constructor into a separate static function.

Tue Nov 20 18:23:53 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * matcher/multimatch.cc: Refactor code which splits the RSet into
          sub RSets (one for each sub database) into a separate function.
          No functional change.

Tue Nov 20 17:56:47 GMT 2007  Olly Betts <olly@survex.com>

        * common/remoteserver.h: Remove unused '#include "omassert.h"'.

Tue Nov 20 12:53:06 GMT 2007  Olly Betts <olly@survex.com>

        * AUTHORS: Thank Marcus Rueckert for GCC 4.3 fixes.

Tue Nov 20 10:22:28 GMT 2007  Olly Betts <olly@survex.com>

        * bin/quartzcompact.cc: Recent GCC 4.3 snapshots thinks cf and tf
          might be used uninitialised.  They won't be, but we only need to
          initialise them once per run to silence the warning, so just do
          that.

Tue Nov 20 10:20:13 GMT 2007  Olly Betts <olly@survex.com>

        * bin/quartzcompact.cc: Fix equality testing of C strings to use
          strcmp() rather than '=='.  In practice, using '==' often gives
          the desired effect due to pooling of constant strings, but this may
          have resulted in bugs on some platforms.

Tue Nov 20 01:47:16 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/harness/backendmanager_remotetcp.cc: Add missing "#include
          <cstring>".

Tue Nov 20 01:26:40 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/harness/unixcmds.cc: Add #include of cstring, to get
          strchr, needed for gcc 4.3 snapshot.

Tue Nov 20 01:25:22 GMT 2007  Olly Betts <olly@survex.com>

        * api/maptermlist.h,api/termlist.cc,backends/alltermslist.cc,
          backends/flint/flint_spelling.cc,backends/flint/flint_spelling.h,
          common/alltermslist.h,common/termlist.h,common/vectortermlist.h:
          Provide a default implementation of accumulate_stats() in the
          virtual base class TermIterator::Internal instead of repeating it
          in each subclass which doesn't get used for generating an ESet, and
          don't call abort() in the default implementation - an Assert(false)
          is sufficient, and more consistent with how we handle other similar
          cases.

Tue Nov 20 01:24:17 GMT 2007  Olly Betts <olly@survex.com>

        * bin/xapian-progsrv.cc: Add missing '#include <cstdlib>'.

Mon Nov 19 23:54:53 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * backends/flint/flint_postlist.cc,backends/quartz/quartz_postlist.cc:
          Add NORETURN macro to report_read_error(); fixes warnings from
          GCC 4.3 about possibly uninitialised values.  Reorder header
          includes to follow proposed policy.
        * backends/flint/flint_postlist.h: Add include of omdebug.h which
          previously needed to be done before including this.  Tidy up
          order of includes.

Mon Nov 12 14:06:38 GMT 2007  Olly Betts <olly@survex.com>

        * api/Makefile.mk,api/omenquire.cc,api/sorter.cc,common/multimatch.h,
          common/omenquireinternal.h,include/Makefile.mk,include/xapian.h,
          include/xapian/enquire.h,include/xapian/sorter.h,
          matcher/multimatch.cc,net/remoteserver.cc,tests/: Add new functor
          class to allow more sophisticated sorting options.

Mon Nov 12 14:03:06 GMT 2007  Olly Betts <olly@survex.com>

        * HACKING: Improved wording.

Sun Nov 11 07:51:57 GMT 2007  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: Hide the v102 namespace from Doxygen
          as it isn't user visible.

Sat Nov 10 21:53:21 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/Makefile.am: Remove .multi in clean-local rule; should fix
          distcheck.

Sat Nov 10 15:34:25 GMT 2007  Olly Betts <olly@survex.com>

        * tests/harness/testutils.cc,tests/harness/testutils.h:
          mset_expect_order_begins() is never used, so remove it.
        * tests/harness/testutils.cc: Don't need <iostream>, only <fstream>.

Sat Nov 10 11:09:22 GMT 2007  Olly Betts <olly@survex.com>

        * docs/index.html: Add a list of documents on particular features and
          include links to previously unlinked-to documents.  Weed down the
          top navigation bar which had grown to unwieldy length.

Sat Nov 10 10:17:42 GMT 2007  Olly Betts <olly@survex.com>

        * PLATFORMS: Update for Debian buildds.

Sat Nov 10 02:13:07 GMT 2007  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: If "first" is non-zero, then use nth_element
          with vector::reverse_iterator to partition items such that the
          unwanted ones are at the end not the start.  This means the call
          to vector::erase() no longer needs to copy all the wanted items.

Fri Nov 09 19:01:38 GMT 2007  Olly Betts <olly@survex.com>

        * tests/api_db.cc: collapsekey3 is too strict - even if the value
          never occurs, lower_bound may drop as we may reject potential
          matches before applying the collapse test.

Fri Nov 09 16:36:39 GMT 2007  Olly Betts <olly@survex.com>

        * include/xapian/termiterator.h: Clarify get_wdf() versus
          get_termfreq() in documentation comments.

Fri Nov 09 00:07:02 GMT 2007  Olly Betts <olly@survex.com>

        * tests/api_db.cc: Fix comment typo.

Fri Nov 09 00:04:45 GMT 2007  Olly Betts <olly@survex.com>

        * HACKING,Makefile.am,tests/Makefile.am: New make target
          'check-multi'.

Thu Nov 08 23:54:47 GMT 2007  Olly Betts <olly@survex.com>

        * tests/api_anydb.cc: Re-enable test case allpostlist1 for multi
          since it works fine (presumably thanks to the multi_postlist.cc
          fix).

Thu Nov 08 23:44:29 GMT 2007  Olly Betts <olly@survex.com>

        * tests/,tests/harness/: Add new "multi" test backend which indexes
          the specified text file(s) to two databases which will look just
          like the equivalent single database when searched together.  Since
          writing isn't supported, a number of tests which require this are
          disabled, as are any tests which explicitly use a multi-database
          since a multi-of-multis isn't equivalent to a multi of equivalent
          individual databases.  A handful of testcases are also currently
          disabled because they fail for reasons not yet fully explored.
          Existing tests run with the new backend provide regression tests
          for the two recent fixes.

Thu Nov 08 23:42:33 GMT 2007  Olly Betts <olly@survex.com>

        * backends/multi/multi_postlist.cc: Fix PostingIterator::skip_to()
          when running over multiple databases.  Regression test to follow.

Thu Nov 08 23:37:51 GMT 2007  Olly Betts <olly@survex.com>

        * docs/overview.html: Mention the "auto" backend.

Thu Nov 08 23:28:30 GMT 2007  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Fix bug in handling a pure boolen match over
          more than one database under set_docid_order(ASCENDING) - we can't
          shortcut in this case because MergePostList generally doesn't return
          docids in order.  Regression test to follow.

Thu Nov 08 21:07:09 GMT 2007  Olly Betts <olly@survex.com>

        * matcher/queryoptimiser.cc: Fix comment typo.

Thu Nov 08 07:40:48 GMT 2007  Olly Betts <olly@survex.com>

        * api/omdatabase.cc: Don't use MultiPostList when there's only one
          subdatabase.

Thu Nov 08 05:40:17 GMT 2007  Olly Betts <olly@survex.com>

        * tests/api_db.cc: Run sortrel1 for inmemory too.

Thu Nov 08 03:43:50 GMT 2007  Olly Betts <olly@survex.com>

        * tests/harness/backendmanager.cc,tests/harness/index_utils.cc,
          tests/harness/index_utils.h: New class FileIndexer which acts like
          an iterator returning a Xapian::Document object for each paragraph
          in some specified files.

Wed Nov 07 16:30:49 GMT 2007  Olly Betts <olly@survex.com>

        * common/,docs/remote_protocol.html,matcher/,net/remoteserver.cc,
          net/serialise.cc: If we're doing a match with only one database
          which is remote then just return the unserialised MSet from the
          remote match.  This requires that we include
          internal->percent_factor in the MSet serialisation, which requires
          a minor remote protocol version bump.

Wed Nov 07 09:47:28 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * matcher/multimatch.cc: Fix logging build (a change to the logging
          code introduced in r9644 didn't compile)

Tue Nov 06 17:10:51 GMT 2007  Olly Betts <olly@survex.com>

        * include/xapian/document.h: Better documentation comment for
          Document::termlist_count().

Tue Nov 06 12:32:16 GMT 2007  Olly Betts <olly@survex.com>

        * Makefile.am,docs/Makefile.am,languages/Makefile.mk: No need to set
          SUFFIXES manually for suffixes used in implicit rules.

Tue Nov 06 10:41:14 GMT 2007  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: If we're collapsing on a value, keep track of
          the number of empty collapse values seen, since that allows us to
          give a better lower bound on the number of matches.
        * tests/api_db.cc: This change breaks an (incorrect) assumption in
          collapsekey3, so change that test case to be a regression test for
          the improved estimate.  Add a new test as (the previously missing)
          collapsekey2, but disable it for now as we don't seem to have a
          suitable existing database.

Tue Nov 06 07:58:34 GMT 2007  Olly Betts <olly@survex.com>

        * matcher/tradweight.cc: Make sure lenpart has been calculated in
          TradWeight::get_sumpart_needs_doclength() (this doesn't appear to
          actually be a problem in current use, but it might become an issue
          if the code which uses TradWeight changes.

Tue Nov 06 07:49:18 GMT 2007  Olly Betts <olly@survex.com>

        * tests/api_anydb.cc: Add simple feature test for TradWeight being
          used to run a query.

Tue Nov 06 07:26:28 GMT 2007  Olly Betts <olly@survex.com>

        * common/stats.h,matcher/bm25weight.cc,tests/api_anydb.cc: Fix bug in
          BM25Weight - in the case where k2 is non-zero, a non-initialised
          value influenced the weight calculations.  By default k2 is zero, so
          this bug probably won't affect most users.

Tue Nov 06 07:22:27 GMT 2007  Olly Betts <olly@survex.com>

        * api/omenquire.cc,common/multimatch.h,matcher/multimatch.cc,
          net/remoteserver.cc: Modify MultiMatch::MultiMatch() to take a const
          pointer to Xapian::RSet rather than a const reference.  This makes
          the code simpler for the case where we don't have an RSet.

Tue Nov 06 05:47:38 GMT 2007  Olly Betts <olly@survex.com>

        * api/omenquire.cc: Use ".empty()" not ".size() == 0".

Mon Nov 05 21:05:45 GMT 2007  Olly Betts <olly@survex.com>

        * m4/xapian.m4: Hook LT_INIT as well as AC_PROG_LIBTOOL and
          AM_PROG_LIBTOOL.

Mon Nov 05 11:17:23 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * docs/termgenerator.rst: Change a couple of instances of "terms"
          to "words" for clarity; the item from the input text is a word,
          and the result of processing is a term.

Mon Nov 05 09:46:53 GMT 2007  Olly Betts <olly@survex.com>

        * docs/admin_notes.rst: Note that this document is up-to-date for
          1.0.4.  Improve the formatting a bit and fix a the odd typo.

Mon Nov 05 06:24:01 GMT 2007  Olly Betts <olly@survex.com>

        * tests/api_wrdb.cc: Fix MSVC warning.

Mon Nov 05 06:21:09 GMT 2007  Olly Betts <olly@survex.com>

        * matcher/queryoptimiser.h: Forward declare PosFilter as "struct"
          rather than "class", since it's defined as "struct".

Mon Nov 05 05:41:01 GMT 2007  Olly Betts <olly@survex.com>

        * api/sortable-serialise.cc: Suppress MSVC warning.

Mon Nov 05 04:55:48 GMT 2007  Olly Betts <olly@survex.com>

        * docs/quickstart.html: Improved.

Mon Nov 05 04:43:13 GMT 2007  Olly Betts <olly@survex.com>

        * docs/overview.html: More improvements from Jenny Black.

Sun Nov 04 22:59:28 GMT 2007  Olly Betts <olly@survex.com>

        * docs/overview.html: Assorted improvements to the start of this
          document.

Sun Nov 04 22:54:13 GMT 2007  Olly Betts <olly@survex.com>

        * api/omdocument.cc,tests/api_wrdb.cc: values_begin() didn't ensure
          that values had been read.  However, values_end() did (and so did
          values_count()) so this wasn't generally an issue, but it shouldn't
          happen anyway.
        * tests/api_wrdb.cc: Extend adddoc5 to include a regression test for
          this bug.

Sun Nov 04 22:44:39 GMT 2007  Olly Betts <olly@survex.com>

        * tests/quartztest.cc: Remove 'FIXME' suggesting more value tests.
        * tests/api_nodb.cc: Add the suggested tests we don't already have.

Sun Nov 04 19:23:52 GMT 2007  Olly Betts <olly@survex.com>

        * tests/api_posdb.cc,tests/api_wrdb.cc: Use get_writable_database()
          instead of get_writable_database("").
        * tests/api_wrdb.cc: Rework test_spell3 so it works under __WIN32__
          (bug#177).

Sun Nov 04 07:31:04 GMT 2007  Olly Betts <olly@survex.com>

        * tests/harness/backendmanager.h: Make BackendManager dtor virtual as
          intended.

Sun Nov 04 07:05:12 GMT 2007  Olly Betts <olly@survex.com>

        * tests/api_wrdb.cc,tests/apitest.cc,tests/apitest.h,tests/harness/,
          tests/quartztest.cc: Extend BackendManager to allow opening a
          WritableDatabase as a Database as well, and to allow reopening a
          closed WritableDatabase as a WritableDatabase.  With these new
          features, rework quartztest's adddoc2 and adddoc3 as apitest
          testcases adddoc5 and adddoc6.

Sun Nov 04 06:08:42 GMT 2007  Olly Betts <olly@survex.com>

        * tests/api_wrdb.cc,tests/apitest.cc,tests/apitest.h,tests/harness/:
          Add BackendManager::get_writable_database_as_database() and use it
          instead of assuming what the WritableDatabase path will be.

Sun Nov 04 05:31:30 GMT 2007  Olly Betts <olly@survex.com>

        * tests/,tests/harness/: Subclass BackendManager for each database
          backend supported, which should provide a better foundation on
          which we can rebuild to fix the nastier bits of the test harness.

Fri Nov 02 17:39:58 GMT 2007  Olly Betts <olly@survex.com>

        * INSTALL: zlib 1.2.0 apparently fixes a memory leak in deflateInit2,
          which we use, so that's another reason to prefer 1.2.x.

Fri Nov 02 06:34:36 GMT 2007  Olly Betts <olly@survex.com>

        * tests/harness/testsuite.cc: Fix extracting of valgrind error
          messages.

Fri Nov 02 05:09:05 GMT 2007  Olly Betts <olly@survex.com>

        * docs/bm25.html,docs/scalability.html: Remove references to Muscat
          3.6.

Thu Nov 01 18:51:20 GMT 2007  Olly Betts <olly@survex.com>

        * NEWS: Fix to talk about OP_VALUE_RANGE rather than
          ValueRangePostList since the later isn't user-visible.

Thu Nov 01 18:16:20 GMT 2007  Olly Betts <olly@survex.com>

        * matcher/exactphrasepostlist.cc: Fix memory leak if second memory
          allocation fails.

Thu Nov 01 17:54:09 GMT 2007  Olly Betts <olly@survex.com>

        * docs/intro_ir.html: Move the section on stemming to a better
          location.

Thu Nov 01 17:37:40 GMT 2007  Jenny Black

        * docs/glossary.rst: Fix typo.

Thu Nov 01 06:34:58 GMT 2007  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Minor code simplification.

Wed Oct 31 16:17:08 GMT 2007  Olly Betts <olly@survex.com>

        * bin/xapian-check.cc: Fix to handle the special case of a term which
          is 48 characters long.  Fix not to go into an infinite loop if
          certain checks fail.

Wed Oct 31 15:56:45 GMT 2007  Olly Betts <olly@survex.com>

        * matcher/multiandpostlist.cc: If the subpostlists are ORs and pruning
          or operator decay happens within them, then get_termfreq_est() can
          change such that the first postlist returns a higher value than
          the second, so remove a bogus assertion which assumed this didn't
          happen (bug#209).

Wed Oct 31 15:43:58 GMT 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_version.cc: I documented an increase in
          FLINT_VERSION but didn't increase it - luckily the previous version
          wasn't in a released version, so just adjust the comment to match
          what actually happened.

Wed Oct 31 15:24:48 GMT 2007  Olly Betts <olly@survex.com>

        * net/remoteconnection.cc: Add '#include <safeunistd.h>' (bug#208).

Wed Oct 31 15:01:53 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * bin/xapian-check.cc: Update the checking of the termlist table to
          stop checking for the "has_termfreqs" flag, which is no longer
          stored in termlists.

Wed Oct 31 14:31:38 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * backends/quartz/quartz_positionlist.cc: Add missing #include,
          which is needed only when configured with --enable-log and with
          --disable-assertions.

Tue Oct 30 04:52:53 GMT 2007  Olly Betts <olly@survex.com>

        * NEWS,configure.ac: Update for 1.0.4.

Tue Oct 30 04:10:32 GMT 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Code tweak.

Tue Oct 30 03:04:04 GMT 2007  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Add two more test cases to improve
          coverage.

Tue Oct 30 00:13:42 GMT 2007  Olly Betts <olly@survex.com>

        * tests/harness/testsuite.cc: abi::__cxa_demangle() requires GCC 3.1
          it seems.

Mon Oct 29 23:14:41 GMT 2007  Olly Betts <olly@survex.com>

        * docs/scalability.html: Update size of gmane.

Mon Oct 29 23:13:00 GMT 2007  Olly Betts <olly@survex.com>

        * docs/quartzdesign.html: Note that Quartz is now deprecated.

Mon Oct 29 21:09:12 GMT 2007  Olly Betts <olly@survex.com>

        * configure.ac,tests/harness/testsuite.cc: Demangle the name of
          the std::exception subclass for GCC, and handle compilation with
          -fno-rtti.

Mon Oct 29 19:50:05 GMT 2007  Olly Betts <olly@survex.com>

        * tests/harness/testsuite.cc: Catch std::exception subclasses
          explicitly and report e.what() (which gives the method name which
          threw, at least under GCC).

Mon Oct 29 18:46:57 GMT 2007  Olly Betts <olly@survex.com>

        * NEWS: Updated.

Mon Oct 29 18:36:12 GMT 2007  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Pull out old_item.wt into a variable.

Mon Oct 29 18:24:46 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * queryparser/queryparser.lemony: Fix problem with spelling
          correction of hyphenated terms (or other terms joined with phrase
          generators): the position of the start of the term wasn't being
          reset for the second term in the generated phrase, resulting in
          out of bounds errors when substituting the new value in the
          corrected query string.
        * tests/queryparsertest.cc: Test the fix.

Mon Oct 29 17:34:17 GMT 2007  Olly Betts <olly@survex.com>

        * docs/deprecation.rst: Move "Stem::stem_word(word)" in the bindings
          to the right section (it was done in 1.0.0, as already indicated).
          Deprecate the non-pythonic iterators in favour of the pythonic ones.

Mon Oct 29 02:54:09 GMT 2007  Olly Betts <olly@survex.com>

        * NEWS,api/Makefile.mk,docs/Makefile.am,include/Makefile.mk,
          include/xapian.h,tests/api_db.cc,tests/api_nodb.cc,
          tests/api_wrdb.cc: Back out match spy changes in preparation for
          creating a branch for them.

Mon Oct 29 02:37:31 GMT 2007  Olly Betts <olly@survex.com>

        * matcher/valuerangepostlist.cc: Fix
          ValueRangeProcessor::get_termfreq_est() and get_termfreq_max() to
          work when at_end() when paranoid assertions are enabled.

Mon Oct 29 01:51:07 GMT 2007  Olly Betts <olly@survex.com>

        * common/omenquireinternal.h: Add ESetItem::swap() and
          MSetItem::swap().

Sun Oct 28 16:33:34 GMT 2007  Olly Betts <olly@survex.com>

        * PLATFORMS: Update from tinderbox and buildbot.

Sun Oct 28 06:00:23 GMT 2007  Olly Betts <olly@survex.com>

        * matcher/queryoptimiser.cc: Remove unused variable.

Sun Oct 28 05:46:28 GMT 2007  Olly Betts <olly@survex.com>

        * docs/remote.html: xapian-tcpsrv can handle concurrent read access
          so update the out-of-date information here.  Also, some new features
          aren't supported by the remote backend yet.

Sun Oct 28 05:20:02 GMT 2007  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: Update documentation comment for
          QueryParser::set_stemming_strategy().

Sun Oct 28 05:03:03 GMT 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Fix handling of STEM_ALL.
        * tests/queryparsertest.cc: Update tests.  Move tables of queries to
          before the test functions which use them.

Sat Oct 27 20:50:57 BST 2007  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc,include/xapian/query.h,
          matcher/queryoptimiser.cc: Eliminate Query::Internal::dbl_parameter
          to avoid any risk of ABI breakage.

Sat Oct 27 17:08:46 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/query.h: Pull in <xapian/deprecated.h> explicitly.
          Add @deprecated note to Query::Query(Query::op, Query) explaining
          why it is deprecated.
        * include/xapian/queryparser.h: Wrap comment better.

Sat Oct 27 05:37:33 BST 2007  Olly Betts <olly@survex.com>

        * NEWS: Merge two "testsuite" sections in draft 1.0.4 entry.

Sat Oct 27 02:34:10 BST 2007  Olly Betts <olly@survex.com>

        * HACKING: Note specifically that std::list::size() is O(n) for GCC.
          Update the debian packaging checklist.

Sat Oct 27 02:33:14 BST 2007  Olly Betts <olly@survex.com>

        * docs/intro_ir.html: Add link to the forthcoming book
          "Introduction to Information Retrieval", which can be read online.

Sat Oct 27 02:22:36 BST 2007  Olly Betts <olly@survex.com>

        * docs/Makefile.am: We no longer build sourcedoc.pdf so remove it from
          MAINTAINERCLEANFILES.

Sat Oct 27 02:20:31 BST 2007  Olly Betts <olly@survex.com>

        * NEWS: Mostly updated for 1.0.4.

Fri Oct 26 04:57:31 BST 2007  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc: OP_SCALE_WEIGHT applied to MatchNothing is
          now handled by the Query ctor, so replace the code to handle
          OP_SCALE_WEIGHT in Query::Internal::simplify_matchnothing() by an
          assertion that the subquery isn't MatchNothing.

Fri Oct 26 04:50:37 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/query.h: Deprecate the essentially useless
          constructor Query(Query::op, Query).
        * docs/deprecation.rst: Note this deprecation, and since the feature
          doesn't actually have a use, schedule it for 1.1.0.  Also schedule
          Enquire::register_match_decider() for 1.1.0 for the same reason.

Fri Oct 26 01:00:08 BST 2007  Olly Betts <olly@survex.com>

        * api/omquery.cc,include/xapian/query.h: OP_SCALE_WEIGHT applied to
          OP_VALUE_RANGE can have no effect so ignore it.
        * tests/queryparsertest.cc: Update expected query descriptions.

Fri Oct 26 00:23:55 BST 2007  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: When checkatleast is set, and we're sorting
          by relevance with forward ordering by docid, and the query is pure
          boolean, we were exiting before the checkatleast requirement was
          satisfied.  Then the adjustments made to the estimated and max
          statistics based on checkatleast meant we claimed there were
          exactly msize results.

Thu Oct 25 00:34:14 BST 2007  Olly Betts <olly@survex.com>

        * matcher/localmatch.cc,matcher/multiandpostlist.cc,
          matcher/queryoptimiser.cc,queryparser/queryparser.cc: Fix build
          with --enable-assertions and --enable-log.

Wed Oct 24 06:29:03 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Drop out of IN_GROUP mode when we
          generate a BOOLEAN_FILTER token.
        * tests/queryparsertest.cc: Add regression test.

Wed Oct 24 06:08:29 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Drop special treatment for unmatched
          ')' at the start of the query, as it seems rather arbitrary and not
          particularly useful.  Reparsing seems a better approach here.
        * tests/queryparsertest.cc: Add regression test case for bug which
          dropping this special case fixes.

Wed Oct 24 05:25:40 BST 2007  Olly Betts <olly@survex.com>

        * AUTHORS: Add Ron Kass for several bug reports.

Wed Oct 24 05:13:01 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Fix parsing of queries which consist
          only of boolean filter terms and HATE-d terms.
        * tests/queryparsertest.cc: Add regression tests, and a few more cases
          which passed before too.  Fix descriptions of queries which now give
          different (but equivalent) Xapian::Query object hierarchies.

Wed Oct 24 04:51:56 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lt: Fix warning in debug log build.

Wed Oct 24 04:41:08 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_table.cc,backends/flint/flint_table.h: Don't
          use class member function pointers to implement FlintTable::next()
          and FlintTable::prev() as we can just call the methods directly
          based on the sequential flag.  Profiling suggests this speeds up
          searches a little, the two pointers take up 16 bytes each (on
          x86_64) so it reduces the class size by up to 32 bytes, and the code
          is simpler because we no longer need to update prev_ptr and
          next_ptr.

Wed Oct 24 00:16:06 BST 2007  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc: Tweak Query::get_description() to describe
          OP_SCALE_WEIGHT queries as '<factor> * <subquery>' rather than
          '<subquery> * <factor>' as the former results in more readable
          descriptions.
        * queryparser/queryparser.lemony: Use OP_SCALE_WEIGHT with factor 0.0
          for queries which should be purely boolean which resolves a FIXME
          comment in the code.
        * tests/queryparsertest.cc: Fix expected results for this change.

Tue Oct 23 19:13:08 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Some as_XXX() methods delete the
          object they are called on, while others don't, so rename the ones
          which don't to get_XXX() to make the code clearer, and make them
          all return Query rather than Query *.  Eliminate Term::as_query()
          completely - when we actually want a new object we can just call
          new in the caller.  op_window_query() now takes the difference
          between the number of terms and the total window size, and we now
          use a std::vector to store the generated Query objects rather than
          a std::list, since we know how many there will be and can reserve
          the required size in advance.

Tue Oct 23 18:33:49 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Improve comment.

Mon Oct 22 21:00:05 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Fix handling of LOVE and HATE
          following a quoted phrase.
        * tests/queryparsertest.cc: Add regression test.

Mon Oct 22 05:23:23 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Refactor so Term::as_query() calls
          Term::as_query_object() instead of vice versa, as this avoids
          calling 'new Query' quite a bit and makes a measurable difference
          to the speed of the QueryParser.  Fix a call to as_query() which
          can be as_query_object().

Mon Oct 22 04:10:17 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: FLAG_PARTIAL with multi-prefixes
          would result in inflated wqf for the "normal" version of the term
          treated as partial.
        * tests/queryparsertest.cc: Add regression test.

Mon Oct 22 02:34:58 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony,queryparser/queryparser_internal.h:
          Rename QueryParser::Internal::prefixes to prefixmap to avoid
          confusion with all the other variables which are now called
          "prefixes" in queryparser.lemony.  Eliminate have_prefix and
          instead just set prefixinfo to NULL by default.

Sun Oct 21 23:56:57 BST 2007  Olly Betts <olly@survex.com>

        * common/omenquireinternal.h,include/xapian/enquire.h,
          include/xapian/query.h,matcher/: Implement a new QueryOptimiser
          class which can hoist the positional filters of OP_PHRASE and
          OP_NEAR higher up the tree and merge the "AND" inside them into
          any neighbouring OP_AND or OP_FILTER (bug#23).  This shaves 10% of
          the execution time of real world queries on real world data.  On
          particularly slow cases, the saving can be more dramatic - it
          saves 50% when tested on a log of slow cases.  OP_SCALE_WEIGHT
          scaling factors are now pushed down to the leaves and any leaf
          we a factor other than 0.0 (boolean) or 1.0 (unscaled) has
          its weights scaled using a ScaleWeight wrapper around the normal
          weighting object (bug#203).

Sun Oct 21 23:46:11 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/query.h: Fix documentation of OP_SCALE_WEIGHT.
          Negative scaling factors aren't now clipped to 0, instead we
          throw Xapian::InvalidArgumentError.  Remove the explicit setting of
          OP_ELITE_SET to 10 which is no longer required.  Wrap a long comment
          line.

Sun Oct 21 23:20:23 BST 2007  Olly Betts <olly@survex.com>

        * tests/api_anydb.cc: Tweak code and wrap comment.

Sun Oct 21 04:53:40 BST 2007  Olly Betts <olly@survex.com>

        * matcher/extraweightpostlist.h: Add missing '#include "multimatch.h"'
          which is pulled in implicitly by some other header which always
          happens to be included before this one.

Fri Oct 19 03:52:17 BST 2007  Olly Betts <olly@survex.com>

        * docs/deprecation.rst: Remove deprecation of
          QueryParser::add_prefix() and QueryParser::add_boolean_prefix().
          Reformat the tables to use the "simple table" style, and to all be
          126 columns wide, since that fits in a maximised terminal window
          without wrapping (at least on my machine!)

Fri Oct 19 03:44:33 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h,queryparser/queryparser.cc,
          queryparser/queryparser.lemony,queryparser/queryparser_internal.h,
          tests/queryparsertest.cc: Since calling QueryParser::add_prefix()
          or QueryParser::add_boolean_prefix() a second time with the same
          field name was ignored before (rather than overriding as we had
          thought) it seems reasonable to change this behaviour.  This
          also avoids the need to deprecate these methods which will force all
          users to update their code.  Change the semantics of default_prefix
          - it's more useful if this overrides any default prefixes set with
          add_prefix(), since this allows the same QueryParser object to
          parse both a "general" search input which searches several fields
          and also a "title" search input.  Trying to set the same field
          as probabilistic and boolean now throws InvalidOperationError
          rather than UnimplementedError.

Fri Oct 19 03:29:53 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lt: Fix compilation.

Fri Oct 19 03:28:37 BST 2007  Olly Betts <olly@survex.com>

        * docs/Makefile.am: We're still getting "info" messages in the
          generated HTML.  It seems to be impossible to get rst2html to
          report "info" messages to stdout without adding them to the
          generated document, so just drop "--verbose" to disable them
          completely.

Thu Oct 18 18:27:28 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lt: Use std::vector<> for the stack in the
          lemon-generated parser.  This means that the stack is no longer a
          fixed size, so we needn't worry about overflow, and that in typical
          use it'll actually use less memory (lemon defaults to a 100 entry
          stack).

Thu Oct 18 17:23:45 BST 2007  Olly Betts <olly@survex.com>

        * languages/turkish.sbl: Minimise differences with Snowball SVN HEAD
          by stripping trailing whitespace.

Mon Oct 15 15:39:26 BST 2007  Olly Betts <olly@survex.com>

        * backends/quartz/btree_util.h: Need "safeunistd.h" for close().
          Fixes build errors on mingw and with SGI's CC on IRIX.

Mon Oct 15 05:30:23 BST 2007  Olly Betts <olly@survex.com>

        * matcher/localmatch.cc: Fix typo in comment.

Mon Oct 15 05:26:35 BST 2007  Olly Betts <olly@survex.com>

        * common/omassert.h: Rewritten from scratch.  The new version only
          includes headers if assertions are enabled, which should help
          to speed up non-assertion builds by reducing unnecessary header
          inclusion.  Also, float.h and math.h are never now pulled in -
          instead we use the new within_DBL_EPSILON() function.  AssertNe()
          and AssertNeParanoid() are never actually used, so replace them with
          AssertRel() and AssertRelParanoid which allow the user to assert any
          binary relation, not just inequality.  Also, we now use rare() to
          give branch prediction hints for assertion tests (since the failure
          branch should never be taken).
        * common/omdebug.h,common/stringutils.h,tests/harness/testsuite.h:
          Replace several definitions of the STRINGIZE macro with a single
          version in common/stringutils.h.
        * backends/flint/,backends/inmemory/inmemory_database.cc,
          backends/multi/multi_postlist.cc,backends/quartz/,
          backends/remote/remote-database.cc,bin/quartzcheck.cc,
          bin/xapian-compact.cc,common/stringutils.h,expand/expandweight.cc,
          expand/ortermlist.cc,matcher/phrasepostlist.cc,
          matcher/scaleweightpostlist.cc,net/remoteconnection.cc,
          net/tcpserver.cc: Explicitly include headers which were previously
          being pulled in implicitly by omassert.h.
        * HACKING: Update the documentation for assertion calls, and document
          CompileTimeAssert() (which previously wasn't documented here).

Mon Oct 15 05:09:15 BST 2007  Olly Betts <olly@survex.com>

        * common/utils.cc,common/utils.h: Add within_DBL_EPSILON() function
          which returns true if its two double arguments differ by less
          than DBL_EPSILON (currently not used anywhere).

Mon Oct 15 05:03:50 BST 2007  Olly Betts <olly@survex.com>

        * matcher/multiandpostlist.cc: If check sets valid to true, we can't
          be at_end(), so check valid first as at_end() is a rare event.

Mon Oct 15 05:00:18 BST 2007  Olly Betts <olly@survex.com>

        * matcher/: Remove code for FilterPostList, which has been unused for
          ages.

Sun Oct 14 02:13:57 BST 2007  Olly Betts <olly@survex.com>

        * matcher/andpostlist.cc: AndPostList now ensures that its left is
          less frequent than its right (it can still be produced as an
          operator decay product, and sometimes left is more frequent when
          this happens).

Sun Oct 14 00:58:20 BST 2007  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Use rare() to mark rarely taken branches.

Sun Oct 14 00:30:46 BST 2007  Olly Betts <olly@survex.com>

        * configure.ac: Add rare() and usual() macros to config.h which allow
          branch prediction hints to be given for compilers which support this
          (currently GCC and Intel C++).
        * HACKING: Document rare() and usual().

Sat Oct 13 22:37:32 BST 2007  Olly Betts <olly@survex.com>

        * HACKING: Improve wording.

Sat Oct 13 16:42:26 BST 2007  Olly Betts <olly@survex.com>

        * api/postlist.cc,common/postlist.h,matcher/: Implement a variant of
          PostList::skip_to() called PostList::check() which isn't required
          to leave the PostList on a particular docid.  This allows queries
          filtered by a ValueRangePostList to run around 3.5 times faster.
          Fixes buf#164, though there's probably scope for at least some
          further improvement.

Sat Oct 13 16:08:07 BST 2007  Olly Betts <olly@survex.com>

        * matcher/multiandpostlist.cc: Fix typo bug (get_termfreq_min
          should be get_termfreq_max!)

Sat Oct 13 15:53:52 BST 2007  Olly Betts <olly@survex.com>

        * matcher/multiandpostlist.cc: Fix assertion (should be <= not <).

Fri Oct 12 01:20:05 BST 2007  Olly Betts <olly@survex.com>

        * HACKING: Note that rst2html may be installed as rst2html.py.

Fri Oct 12 01:10:11 BST 2007  Olly Betts <olly@survex.com>

        * matcher/localmatch.cc: Tweak formatting.

Thu Oct 11 22:58:36 BST 2007  Olly Betts <olly@survex.com>

        * tests/: svn:ignore: Add termgentest and termgentest.exe.

Thu Oct 11 16:18:03 BST 2007  Olly Betts <olly@survex.com>

        * configure.ac: If rst2html isn't found, also look for rst2html.py,
          which archlinux reportedly installs it as.

Thu Oct 11 16:09:20 BST 2007  Olly Betts <olly@survex.com>

        * matcher/: Round the result of all get_termfreq_est() calculations to
          the nearest integer instead of rounding down.

Thu Oct 11 15:40:48 BST 2007  Olly Betts <olly@survex.com>

        * matcher/: Add new PostList subclass MultiAndPostList which handles
          a multi-way AND operation in a single class.  This allows us to
          optimise some cases of 3 or more way AND operations much better
          and gives a 16-17% performance improvement in tests using real-world
          query logs.
        * tests/api_anydb.cc: MultiAndPostList rounds get_termfreq_est()
          calculations to the nearest integer (rather than always rounding
          down) so adjust the expected answers in test_matches.

Thu Oct 11 15:14:27 BST 2007  Olly Betts <olly@survex.com>

        * matcher/selectpostlist.cc: Explicitly qualify next() as
          SelectPostList::next().

Thu Oct 11 13:04:40 BST 2007  Olly Betts <olly@survex.com>

        * README: Remove the ancient history lesson - this material is better
          left to the history page on the website.

Thu Oct 11 00:33:34 BST 2007  Olly Betts <olly@survex.com>

        * matcher/branchpostlist.h: Fix comment typo.

Thu Oct 11 00:28:29 BST 2007  Olly Betts <olly@survex.com>

        * api/postlist.cc,backends/flint/flint_alldocspostlist.cc,
          backends/flint/flint_alldocspostlist.h,common/postlist.h,matcher/:
          Eliminate several implementations of open_position_list and
          read_position_list in favour of default ones in the PostList base
          class which throw InvalidOperationError.  Change the default
          get_wdf implementation to also throw InvalidOperationError.

Wed Oct 10 22:27:44 BST 2007  Olly Betts <olly@survex.com>

        * docs/install.html: Improve the remainder.  This documents now just
          gives a brief overview of building, suitable for most common cases,
          and defers to the INSTALL document in each tarball for more details.

Wed Oct 10 21:51:39 BST 2007  Olly Betts <olly@survex.com>

        * common/leafpostlist.h: Rewrite header.
        * api/Makefile.mk,api/leafpostlist.cc: Add new source file for
          virtual, and non-trivial, non-virtual, methods of LeafPostList.
        * api/omdatabase.cc,backends/inmemory/inmemory_database.h,
          backends/multi/multi_postlist.cc,backends/multi/multi_postlist.h,
          backends/remote/net_postlist.h,common/emptypostlist.h: Add missing
          '#include "omassert.h"' which was previously pulled in implicitly
          via '#include "leafpostlist.h"'.
        * backends/inmemory/inmemory_database.h: Remove unused '#include
          <stdlib.h>'.
        * backends/multi/multi_postlist.cc,backends/multi/multi_postlist.h:
          MultiPostList::set_termweight() is never used, so eliminate it.
        * backends/remote/net_postlist.cc: Rename parameter "weight" to
          "min_weight" to avoid clash with new member variable of
          LeafPostList.
        * matcher/emptysubmatch.cc,matcher/localmatch.cc: Don't call
          LeafPostList::set_termweight() with a BoolWeight object - the
          default behaviour is now equivalent.

Wed Oct 10 18:18:09 BST 2007  Olly Betts <olly@survex.com>

        * docs/install.html: Improve the first half.

Wed Oct 10 16:32:57 BST 2007  Olly Betts <olly@survex.com>

        * common/postlist.h: Rewrite header.
        * api/Makefile.mk,api/postlist.cc: Add new source file for virtual
          methods of Xapian::PostingIterator::Internal.
        * api/omdatabase.cc,backends/flint/flint_postlist.h,
          backends/quartz/quartz_alldocspostlist.cc,
          backends/quartz/quartz_postlist.h,matcher/valuerangepostlist.cc:
          Add missing '#include "autoptr.h"' which was previously pulled in
          implicitly via '#include "postlist.h"'.

Wed Oct 10 16:25:08 BST 2007  Olly Betts <olly@survex.com>

        * tests/quartztest.cc: Remove quartztest's test_postlist1 and
          test_postlist2.
        * tests/api_db.cc: Enhance test_termstats to cover part of the removed
          tests.  Enhance test_postlist1 to check more long terms.  Eliminate
          the helper function from test_postlist3.
        * tests/api_wrdb.cc: Add test_postlist7 to cover the rest of what the
          removed tests checked which isn't already checked elsewhere.

Wed Oct 10 02:29:44 BST 2007  Olly Betts <olly@survex.com>

        * HACKING: Update the release checklist.

Wed Oct 10 02:01:03 BST 2007  Olly Betts <olly@survex.com>

        * matcher/scaleweightpostlist.cc,matcher/scaleweightpostlist.h: Move
          virtual dtor definition out of header.

Wed Oct 10 01:41:05 BST 2007  Olly Betts <olly@survex.com>

        * matcher/msetpostlist.cc: Avoid virtual method overhead in
          MSetPostList::recalc_maxweight().

Wed Oct 10 00:16:00 BST 2007  Olly Betts <olly@survex.com>

        * common/expandweight.h,expand/expand.cc,expand/expandweight.cc: We
          never actually use ExpandWeight::get_maxweight(), so remove it.

Tue Oct 09 16:27:54 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_database.cc,backends/flint/flint_version.cc,
          backends/flint/flint_version.h: Don't try to upgrade a flint
          database if we're only reading it, or it's already the latest
          version.

Mon Oct 08 10:14:57 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/api_nodb.cc: Rename test_scaleweightmatchnothing1 to
          test_scaleweight3 so all the scaleweight tests can be run
          together more easily.  Add test_scaleweight4 to test that scaling
          by a weight close to 1 is optimised away.

Sun Oct 07 12:20:14 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/database.h: Add explicit note that
          Database::get_metadata() returns an empty string when the backend
          doesn't support user-specified metadata, and that
          WritableDatabase::set_metadata() throws UnimplementedError in this
          case.  Add note about current behaviour with multidatabases.

Sun Oct 07 10:58:24 BST 2007  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc: No need to use AutoPtr<> here now.

Sun Oct 07 10:54:05 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * common/remoteprotocol.h: Bump the network protocol minor
          revision, since we've added a query operator (OP_SCALE_WEIGHT)
          and the server will need to be updated to understand serialised
          queries containing it.

Sun Oct 07 01:54:43 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * api/omqueryinternal.cc,include/xapian/query.h,matcher/,
          tests/api_anydb.cc,tests/api_nodb.cc,tests/internaltest.cc:
          Rename OP_MULT_WEIGHT to OP_SCALE_WEIGHT and MultWeight to
          ScaleWeight, and move it to before OP_MULT_WEIGHT (to remove the
          gap in the enum).
          Don't do an epsilon test to compare the weight to zero (when
          checking if it's effectively a boolean query) - do an exact
          comparison instead.  Raise an exception if the parameter for
          OP_SCALE_WEIGHT is < 0 (instead of clipping it to 0).  Adjust
          weights accordingly.
          Add test_scaleweight2() to test a query with some weights
          multiplied by 0, and some by a different factor.

Wed Oct 03 17:23:02 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * api/omqueryinternal.cc,tests/api_nodb.cc: Fix (and test) for a
          double delete if OP_MULT_WEIGHT was applied to an empty query.

Mon Oct 01 13:20:39 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * NEWS: Update
        * net/remoteconnection.cc: Back out previous change - I was
          confused, the code was previously fine, and the change broke it.

Mon Oct 01 13:13:48 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * api/omqueryinternal.cc: Fix access of uninitialised member when
          unserialising a mult-weight query.
        * tests/internaltest.cc: Add a regression test for unserialisationg
          of mult-weight queries.

Mon Oct 01 13:11:24 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * net/remoteconnection.cc: After calling read(), check for received
          == 0 after checking for errors, so that if an EINTR occurs in
          read, we don't report EOF instead of retrying.

Sun Sep 30 23:20:34 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * api/omquery.cc,api/omqueryinternal.cc,include/xapian/query.h: Add
          OP_MULT_WEIGHT operator, and a new Query constructor which takes
          a single subquery and a "double" parameter - currently only
          useful for OP_MULT_WEIGHT.  Add dbl_parameter to Query::Internal,
          to hold this parameter.  Add serialisation of OP_MULT_WEIGHT
          using "." to represent the operator.  Drop OP_MULT_WEIGHT
          operators which have a parameter of 1 (or very close) when
          simplifying, since these have no effect.
        * matcher/multweightpostlist.cc,matcher/multweightpostlist.h: New
          files, implementing a postlist which multiplies the weights from
          its single sub-postlist by a parameter.
        * matcher/Makefile.mk: Add new files.
        * matcher/localmatch.cc: Add support for the OP_MULT_WEIGHT query
          operator, which produces a MultWeightPostList if the associated
          parameter is greater than DBL_EPSILON, and produces a boolean query
          otherwise.
        * tests/api_anydb.cc: Add tests for OP_MULT_WEIGHT operator with
          various queries, and various multipliers.
        * NEWS: Update

Sun Sep 30 23:13:29 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/harness/testsuite.h: Add TEST_NOT_EQUAL_DOUBLE() macro.
        * tests/harness/testsuite.cc: Add special
          case to TEST_EQUAL_DOUBLE_() for exact equality of the supplied
          arguments.  This is tidier in general, because it avoids "inf"
          being produces by the calculation, but is only actually necessary
          in the case where the arguments are both exactly 0; it all works
          out nicely for other values of the arguments.

Sun Sep 30 21:12:40 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/queryparsertest.cc: #define XAPIAN_DEPRECATED to disable
          compiler warnings about the deprecated forms of add_prefix() and
          add_boolean_prefix().

Sun Sep 30 21:07:25 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * api/Makefile.mk,docs/Makefile.am,docs/deprecation.rst,
          include/Makefile.mk,include/xapian.h,include/xapian/queryparser.h,
          queryparser/queryparser.cc,queryparser/queryparser.lemony,
          queryparser/queryparser_internal.h,tests/: Re-apply changes which
          needed more thought or more work before being included in a
          release.
        * NEWS: Update with current descriptions of these changes.

Sun Sep 30 20:22:25 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/valgrind.supp: Add further suppressions needed for the
          version of zlib on ubuntu gutsy.

Fri Sep 28 15:38:18 BST 2007  Olly Betts <olly@survex.com>

        * NEWS: Final (?) update for 1.0.3.

Fri Sep 28 15:37:22 BST 2007  Olly Betts <olly@survex.com>

        * PLATFORMS: Another small update.

Fri Sep 28 15:30:17 BST 2007  Olly Betts <olly@survex.com>

        * HACKING: Add link to the 1.0.N tracker bug.

Fri Sep 28 14:04:06 BST 2007  Olly Betts <olly@survex.com>

        * PLATFORMS: More updates.

Fri Sep 28 13:45:51 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/database.h: Document that empty metadata keys will
          cause an exception from get_metadata() and set_metadata().
        * api/omdatabase.cc: Cause empty metadata keys to raise an
          InvalidArgumentError if they're passed to set_metadata() or
          get_metadata().
        * tests/api_wrdb.cc: Add test_metadata3, to check behaviour with an
          empty metadata key.

Fri Sep 28 13:30:49 BST 2007  Olly Betts <olly@survex.com>

        * PLATFORMS: Updates from tinderbox.

Fri Sep 28 13:22:16 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/database.h: Clarify support for empty metadata keys.

Fri Sep 28 11:00:08 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/valgrind.supp: Add second version of the zlib end condition
          check which works for the version of zlib in Ubuntu gutsy; ie,
          version 1.2.3.3, where the error occurs in the function called
          directly by deflate, rather than two levels below it.

Fri Sep 28 03:11:11 BST 2007  Olly Betts <olly@survex.com>

        * configure.ac: Update for 1.0.3.

Fri Sep 28 03:05:10 BST 2007  Olly Betts <olly@survex.com>

        * api/Makefile.mk,docs/Makefile.am,docs/deprecation.rst,
          include/Makefile.mk,include/xapian.h,include/xapian/queryparser.h,
          queryparser/queryparser.cc,queryparser/queryparser.lemony,
          queryparser/queryparser_internal.h,tests/: Back out changes which
          need more thought or more work in the interests of getting 1.0.3
          out this month.

Fri Sep 28 03:04:19 BST 2007  Olly Betts <olly@survex.com>

        * NEWS: Update with recent changes.

Fri Sep 28 01:55:42 BST 2007  Olly Betts <olly@survex.com>

        * docs/deprecation.rst: Revert to the previous deprecation policy.

Fri Sep 28 01:20:34 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Rephrase since "should be in the MSet"
          might be misunderstood.

Fri Sep 28 01:12:47 BST 2007  Olly Betts <olly@survex.com>

        * AUTHORS,docs/Makefile.am,docs/glossary.rst,docs/index.html: Add
          glossary put together by Jenny Black, also incorporating entries
          from Deron Meranda's glossary on the wiki.

Thu Sep 27 23:06:30 BST 2007  Olly Betts <olly@survex.com>

        * docs/stemming.html: Reorder the initial paragraphs so we actually
          answer the question "What is a stemming algorithm?" up front.

Thu Sep 27 22:15:36 BST 2007  Olly Betts <olly@survex.com>

        * matcher/valuerangepostlist.cc: Call ValueRangePostList::next()
          explicitly to avoid the overhead of virtual method dispatch.

Thu Sep 27 14:43:25 BST 2007  Olly Betts <olly@survex.com>

        * common/termlist.h: Don't need to forward declare
          Xapian::Internal::ExpandWeight here.

Thu Sep 27 14:36:00 BST 2007  Olly Betts <olly@survex.com>

        * common/termlist.h: Add missing (but indirectly included) '#include
          <xapian/base.h>'.

Fri Sep 21 18:00:34 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * docs/deprecation.rst: Add deprecation for
          Database::positionlist_begin() throwing DocNotFoundError , for
          same reason as deprecating it throwing RangeError.  Also, add
          deprecation for QueryParser::add_prefix(f, p) and
          add_boolean_prefix() - replaced by three argument form of
          add_prefix.  Also, add a policy that we don't add
          XAPIAN_DEPRECATED when there's no replacement for the deprecated
          feature in the last x.x.0 release.
        * include/xapian/queryparser.h: Add @deprecated to documentation
          comments for add_prefix(f, p) and add_boolean_prefix() (but don't
          add XAPIAN_DEPRECATED() macro for now).

Fri Sep 21 16:13:25 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/queryparser.h: Fix copy and paste errors in
          documentation comment, and hopefully clarify it somewhat.

Fri Sep 21 15:50:40 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/queryparsertest.cc: Initialise the default prefix from
          prefixes.find(""), allowing multiple default prefixes to be set
          by calling add_prefix() with an empty field name.
        * queryparser/queryparser.lemony: Several more tests; mainly for
          the new default_prefix functionality, but also a bit more
          coverage for multiple prefixes in general.

Fri Sep 21 15:04:02 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/queryparser.h,queryparser/queryparser.cc: API
          addition: Revert previous change to behaviour of
          QueryParser::add_prefix and QueryParser::add_boolean_prefix
          methods, to avoid API change within a release series.  Add new
          QueryParser::add_prefix() form which takes three parameters; the
          third parameter is a value from a new "prefix_type" enum.
        * queryparser/queryparser.lemony,queryparser/queryparser_internal.h:
          Internal changes to allow multiple filters to be set for a single
          field:
           - Remove the PrefixInfoList object again - instead add a list of
             prefixes to PrefixInfo.  We only aim to support one type of
             prefix for a given field, so the extra flexibility given by
             PrefixInfoList is a districation.
           - Change filter_group_id to be based on a list of prefixes,
             instead of a single prefix.
           - Change Term objects to store a list of prefixes instead of a
             single prefix.  make_term() now takes a prefix argument and
             makes a single term.  Term::as_... methods iterate through the
             prefix list and OR together the resulting terms.
           - Change TermList object to store a list of Terms instead of
             Queries, and also to keep track of whether the prefix lists
             for those Terms are all the same.  When they are the same,
             generate separate phrases for each prefix, and OR them
             togeher, instead of generating phrases of "OR" groups of
             terms.  Remove the unused "TermList::add_term()" method.
        * tests/queryparsertest.cc: Add simple tests of repeated inline
          fields, phrases with multiple prefixed fields, tests of backwards
          compatible behaviour of add_prefix(field, prefix), and
          add_boolean_prefix(), and of the new add_prefix() form with
          incompatible types.

Thu Sep 20 02:13:36 BST 2007  Olly Betts <olly@survex.com>

        * NEWS: Update with changes since 1.0.2.

Wed Sep 19 20:00:43 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_table.cc: Fix "Key_" in exception message to
          say "Key" (the result of overzealous search-and-replace).

Wed Sep 19 17:08:16 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/queryparser.h,queryparser/queryparser.cc,
          queryparser/queryparser.lemony,queryparser/queryparser_internal.h:
          Handle repeated calls to QueryParser::add_boolean_prefix() with
          the same field - this will generate multiple terms for each
          occurrence of the field in the query.  Involves reorganising the
          internal representation of prefixes, to hold a list of PrefixInfo
          objects for each field, instead of a single object.  This also
          paves the way towards handling for multiple calls to
          QueryParser:add_prefix() with the same field, and allowing
          add_{boolean_}prefix() with an empty field to set the default
          prefix handling, but the behaviour of this are currently
          unchanged.  Technically, this could be considered an API change,
          but the previous behaviour (of using only the most recent value
          set by add_boolean_prefix) was unintentional and undocumented,
          and seems unlikely to have been deliberately used.
        * tests/queryparsertest.cc: Add a very simple test for repeated
          boolean_prefix fields; several more are needed.  Also, a
          commented out test of repeated non-boolean prefix fields.

Tue Sep 18 23:28:48 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * queryparser/queryparser.lemony: Remove unused variable
          "term_group".

Tue Sep 18 16:56:37 BST 2007  Olly Betts <olly@survex.com>

        * api/matchspy.cc,include/xapian/matchspy.h: Use a set rather than a
          map to store the "multivalues" flags.

Mon Sep 17 14:10:47 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/matchspy.h: Fix documentation comment typo.

Sun Sep 16 04:13:20 BST 2007  Olly Betts <olly@survex.com>

        * net/remoteconnection.cc: Fix compiler warning in mingw build.

Sun Sep 16 02:59:54 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_database.cc,tests/api_wrdb.cc: Check length of
          new terms is at most 245 bytes for flint in add_document() and
          replace_document() so that the API user gets an error there rather
          than when flush() is called (explicitly or implicitly).  Fixes
          bug#44.

Sat Sep 15 20:11:36 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_version.cc: Add missing include of
          msvc_posix_wrapper.h.

Sat Sep 15 17:58:35 BST 2007  Olly Betts <olly@survex.com>

        * api/omdatabase.cc,backends/database.cc,
          backends/flint/flint_database.cc,backends/flint/flint_database.h,
          backends/flint/flint_version.cc,
          backends/inmemory/inmemory_database.cc,
          backends/inmemory/inmemory_database.h,common/database.h,
          include/xapian/database.h,tests/api_wrdb.cc: Add support for user
          specified metadata (bug#143).

Sat Sep 15 02:26:40 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_cursor.cc,backends/flint/flint_cursor.h:
          Implement FlintCursor::find_entry_ge() a little more efficiently
          (we could do better still by modifying FlintTable too).

Sat Sep 15 00:56:54 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_cursor.cc: If we found the exact key, just copy
          it to current_key.

Fri Sep 14 21:52:45 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/: Overhaul FlintAllDocsPostList.

Fri Sep 14 19:20:56 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_alltermslist.cc: Rework
          FlintAllTermsList::skip_to() to use FlintCursor::find_entry_ge().

Fri Sep 14 17:45:06 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_cursor.h: Improve documentation comment.

Fri Sep 14 17:28:17 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_spellingwordslist.cc,
          backends/flint/flint_synonym.cc: Use FlintCursor::find_entry_ge().
        * backends/flint/flint_synonym.h: Use FlintCursor::find_entry_lt().
        * backends/flint/flint_alltermslist.h: Use FlintCursor::find_entry_lt()
          and skip any keys before "\x00\xff" to allow for extra metadata
          keys.

Fri Sep 14 15:26:04 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_cursor.cc,backends/flint/flint_cursor.h: The
          reason why a deleted key is still visible to the cursor is that it
          is running over the previous revision of the tree.  So we don't
          need to call find_entry() at all - we can just call next().  Also
          extend FlintCursor::del() to return whether the cursor is positioned
          (like FlintCursor::next() does).
        * backends/flint/flint_postlist.cc: Use the return value of
          FlintCursor::del().

Fri Sep 14 15:10:39 BST 2007  Olly Betts <olly@survex.com>

        * tests/Makefile.am: Reorder the testdata/flint-x.y.z files
          consistently.

Fri Sep 14 12:48:04 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * configure.ac: Add "tar-ustar" option to AM_INIT_AUTOMAKE.  This
          is needed to avoid a failure of make dist due to filepaths of
          more than 99 characters (in the generated documentation: the
          relevant filepaths are for the NumberValueRangeProcessor class,
          and extend to 103 characters).  Automake documentation implies
          that tar-v7 is the default format, which doesn't support
          filepaths longer than 99 characters portably; ustar allows 256
          characters.  The automake documentation says that the ustar
          format "is believed to be old enough to be portable"; if we come
          across problems due to the format change we could consider
          renaming files to reduce the filepath length.
        * tests/Makefile.am: Remove
          testdata/flint-1.0.2/{value,position}.{baseA,DB} from
          distribution, since they don't actually exist.  Fixes make dist.

Fri Sep 14 10:45:35 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * backends/flint/flint_cursor.cc,backends/flint/flint_cursor.h: Add
          FlintCursor::find_entry_gt(), and use it instead of
          flint_entry_ge() in FlintCuror::del().  This fixes failure of
          deldoc4 test.  I'm not sure why find_entry() can return true
          immediately after the key it's searching for was deleted with
          B->del(), though: that merits further investigation.

Fri Sep 14 04:57:14 BST 2007  Olly Betts <olly@survex.com>

        * bin/xapian-inspect.cc: Avoid comparing char with 0 - on platforms
          where char is unsigned by default this can give a compiler warning.

Fri Sep 14 03:40:18 BST 2007  Olly Betts <olly@survex.com>

        * bin/xapian-compact.cc: Removed unused variable.

Fri Sep 14 01:56:36 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_alltermslist.cc: Fix comment typo.

Fri Sep 14 01:51:52 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_cursor.cc,backends/flint/flint_cursor.h: Add
          FlintCursor::find_entry_lt() and FlintCursor::find_entry_ge()
          which we can implement more efficiently (in the future) than
          user code calling FlintCursor::find_entry() and then having to
          adjust the cursor position in some cases.

Thu Sep 13 14:52:34 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_alltermslist.cc: FlintCursor::after_end() is
          never true after FlintCursor::find_entry() so remove check for this
          case!

Thu Sep 13 03:11:19 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_alltermslist.h,backends/flint/flint_database.cc,
          backends/flint/flint_database.h: Don't pass FlintPostListTable
          pointer to FlintAllTermsList - it can find this via the database
          if we make it FlintDatabase instead of Database::Internal.

Thu Sep 13 02:07:19 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/: Read/write the metainfo key from FlintDatabase to
          avoid having to pass a huge long list of values across once we start
          to store more statistics.

Thu Sep 13 02:03:46 BST 2007  Olly Betts <olly@survex.com>

        * backends/database.cc,common/database.h: Move definitions of virtual
          methods out of the header file.

Thu Sep 13 01:33:49 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_database.cc,backends/flint/flint_database.h:
          Store the total_length and lastdocid values in FlintDatabase object.

Wed Sep 12 20:27:49 BST 2007  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Eliminate a block which used to scope some
          variables which have now moved.  Unify debug output from different
          cases after the match.  Remove half-finished comment which doesn't
          seem to be trying to say anything useful.

Wed Sep 12 20:20:18 BST 2007  Olly Betts <olly@survex.com>

        * tests/api_anydb.cc: In checkatleast2, the total number of matching
          documents in the database is 5, so use TEST_EQUAL instead of
          TEST_GREATER_OR_EQUAL to compare get_matches_lower_bound() with 5.

Wed Sep 12 17:55:00 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_database.h: Fix some comment typos and
          outdated information.  Remove some superfluous uses of "virtual".

Wed Sep 12 17:15:58 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_database.cc,backends/quartz/quartz_database.cc:
          Failing to create a flint or quartz database because we couldn't
          create the directory for it now throws DatabaseCreateError not
          DatabaseOpeningError.
        * tests/api_db.cc: Update test cases.

Wed Sep 12 15:40:16 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_database.cc,backends/flint/flint_database.h:
          If we reach the flush threshold during a transaction, flush the
          postlist changes, but don't actually commit them.

Wed Sep 12 14:12:52 BST 2007  Olly Betts <olly@survex.com>

        * common/msvc_posix_wrapper.cc,common/msvc_posix_wrapper.h: Add
          msvc_posix_rename() which can rename a file on top of another file.
        * common/stringutils.h: Add common_prefix_length() function.
        * backends/flint/: Clean up FlintWritableDatabase - it now just
          inherits from FlintDatabase which allows several virtual methods
          which just forwarded to FlintDatabase to be dropped.  Also, we
          now no longer need to pass FlintTable objects to other classes
          - they can just find the tables they want via the database pointer.
          The never-used "store_termfreqs" flag has been dropped from the
          termlist table entries - existing 1.0.x flint databases will be
          automatically upgraded to the new version.  Opening a database
          now calls stat() less, so should be slightly more efficient.
          And TermIterator::positionlist_count() now works for the flint
          backend.
        * tests/Makefile.am,tests/api_db.cc,tests/testdata/flint-1.0.2/: New
          test flintbackwardcompat2 which tests that we can open a flint
          database from 1.0.2.
        * tests/api_wrdb.cc: New test adddoc4 which checks that termlists
          handle an initial term of any valid length correctly.
        * tests/testdata/flint-1.0.1/postlist.DB: Mark as a binary file in
          SVN.

Tue Sep 11 23:02:56 BST 2007  Olly Betts <olly@survex.com>

        * backends/inmemory/inmemory_database.cc,
          backends/inmemory/inmemory_database.h: Implement
          TermIterator::positionlist_count() for the inmemory backend.
        * tests/api_posdb.cc: Add feature test for
          TermIterator::positionlist_count() (which currently skips for all
          backends except inmemory).

Tue Sep 11 03:43:30 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_database.cc: Make sure flush_threshold gets
          initialised.
        * backends/flint/flint_database.h: Change type of flush_threshold from
          `size_t' to `Xapian::doccount' for consistency with the type of
          changes_made.

Tue Sep 11 03:19:37 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * backends/flint/flint_database.cc,backends/flint/flint_database.h:
          Change flush_threshold from static to non-static, and set it for
          each FlintWritableDatabase based on the value of the
          XAPIAN_FLUSH_THRESHOLD environment variable at the time the
          database was opened, instead of caching the value for each future
          database which is opened.

Tue Sep 11 02:59:45 BST 2007  Olly Betts <olly@survex.com>

        * docs/Makefile.am: When running rst2html, use "--exit-status=warning"
          rather than "--strict".  The former actually gives a non-zero exit
          status for a warning or worse, while the former doesn't, but does
          include any "info" messages in the output HTML.

Tue Sep 11 02:38:30 BST 2007  Olly Betts <olly@survex.com>

        * docs/deprecation.rst: Add "Database::positionlist_begin() throwing
          RangeError".

Tue Sep 11 00:52:27 BST 2007  Olly Betts <olly@survex.com>

        * HACKING: Document a few more "coding standards".

Mon Sep 10 21:34:23 BST 2007  Olly Betts <olly@survex.com>

        * examples/delve.cc,examples/simpleexpand.cc,net/tcpserver.cc,
          queryparser/queryparser.cc,queryparser/queryparser.lemony: Add more
          missing "#include <string.h>" instances.

Mon Sep 10 20:24:25 BST 2007  Olly Betts <olly@survex.com>

        * net/serialise.cc: Add missing "#include <string.h>".

Sun Sep 09 15:38:11 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_spelling.h,backends/flint/flint_synonym.h,
          backends/flint/flint_table.h: Fix typo (Z_DEFAULT_COMPRESSION
          where it should be Z_DEFAULT_STRATEGY) which meant that zlib
          compression wasn't enabled for the spelling or synonym tables.

Fri Sep 07 19:31:44 BST 2007  Olly Betts <olly@survex.com>

        * docs/spelling.rst: Fix typo.

Thu Sep 06 15:02:43 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * api/editdistance.cc: Fix off-by-one error in loop bounds when
          setting up fkp array initially.  Fixes bug #194.
        * tests/api_wrdb.cc: Add regression test for #194, spell5.

Thu Sep 06 14:31:15 BST 2007  Olly Betts <olly@survex.com>

        * tests/harness/testsuite.cc: More localised fix for preserving the
          start of the valgrind report when in verbose mode.  Rework the code
          which pulls out the start of the report to summarise why the test
          failed.

Thu Sep 06 14:17:44 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/harness/testsuite.cc: When displaying valgrind output, seek
          back to the start of the valgrind output for the current test
          before dumping it to stdout: previously, the earlier check for the
          valgrind error message to display (when not using -v) caused the
          first 1024 bytes of the valgrind output to get dropped.

Tue Sep 04 20:13:29 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * matcher/multimatch.cc: For remote submatches, keep a count of
          matches which we know exist, but we don't get passed from the
          submatch.  These can be detected by checking for the lowerbound
          on the matches in the submatch being greater than the index of
          the last item in the returned submset.  When the match is over,
          use this count, together with docs_matched, to adjust the lower
          bound and estimate (and upper bound, if we've not seen as many
          documents as we were asked to check for).  Fixes checkatleast2
          and checkatleast3 in the remote database case.
        * tests/harness/testsuite.h: Add TEST_GREATER_OR_EQUAL,
          TEST_GREATER, TEST_LESSER_OR_EQUAL and TEST_LESSER macros, which
          display the values of the arguments if they fail.
        * tests/api_anydb.cc: Use TEST_GREATER_OR_EQUAL and TEST_EQUAL in
          checkatleast2 and checkatleast3, to make failures easier to
          debug.

Tue Sep 04 18:16:49 BST 2007  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Restructure to make the control flow clearer.
          Rewrap some comments which got wrapped to ~82 columns somehow.

Tue Sep 04 17:21:49 BST 2007  Olly Betts <olly@survex.com>

        * docs/overview.html: Restore the HTML header I accidentally deleted
          in November 2006.

Tue Sep 04 17:15:30 BST 2007  Olly Betts <olly@survex.com>

        * docs/overview.html: Fix typo.

Tue Sep 04 13:47:27 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/api_anydb.cc: Tighten test_checkatleast3 to check for
          previous bug (now fixed).

Tue Sep 04 13:37:01 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * matcher/multimatch.cc: If check_at_least is greater than
          maxitems, but there are fewer results than check_at_least, the
          lower and upper bounds reported should be equal (and exact).  Fix
          a bug which caused this not to be the case, by checking if
          docs_matched < check_at_least, and forcing the bounds (and
          estimate) to be docs_matched in this case.

          Also, fix a bug when sorting by anything other than relevance,
          which was causing potential matches which are too low in the
          ranking to make the mset not to be added to the count of
          docs_matched, even when docs_matched < check_at_least.

          Also, add a few extra explanatory comments and debug log messages
          in get_mset().

Tue Sep 04 12:43:03 BST 2007  Olly Betts <olly@survex.com>

        * PLATFORMS: Update from debian buildd logs.

Tue Sep 04 09:57:25 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * Makefile.am,configure.ac,msvc/genversion.pl,msvc/version.h.in:
          Move msvc/genversion.pl and msvc/version.h.in to win32msvc in
          xapian-maintainer-tools.  Remove generation of msvc/version.h
          from configure.in, and AC_SUBST() of MAJOR_VERSION,
          MINOR_VERSION and REVISION, which were only in place for this
          generation.  Remove msvc/version.h from distribution tarballs.

Tue Sep 04 02:56:00 BST 2007  Olly Betts <olly@survex.com>

        * matcher/andpostlist.cc: If the database has > 2G documents then the
          sum of termfreq_min can overflow, so handle this case correctly.

Tue Sep 04 00:05:47 BST 2007  Olly Betts <olly@survex.com>

        * xapian-config.in: We always need to include dependency_libs in the
          output of `xapian-config --libs` if shared libraries are disabled.

Mon Sep 03 16:28:33 BST 2007  Olly Betts <olly@survex.com>

        * bin/xapian-check.cc: Allow "xapian-check db/record." and
          "xapian-check db/record.DB".

Mon Sep 03 02:16:43 BST 2007  Olly Betts <olly@survex.com>

        * docs/deprecation.rst,include/xapian/enquire.h: Deprecate
          Enquire::register_match_decider().
        * api/omenquire.cc,common/omenquireinternal.h: Remove mdecider_map
          since the set values are never used anywhere.

Sun Sep 02 20:54:33 BST 2007  Olly Betts <olly@survex.com>

        * HACKING: Add "update the 1.0.N tracker bug" to the release
          checklist.

Fri Aug 31 10:44:19 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/api_db.cc,tests/api_wrdb.cc: Fix compilation of apitest,
          which was broken on 64 bit platforms due to size_t instead of
          doccount bug.

Fri Aug 24 11:56:18 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * api/matchspy.cc,include/xapian/matchspy.h: Fix uses of size_t
          which should have been Xapian::doccount.  Was causing compile
          errors on platforms where size_t and Xapian::doccount were
          different sizes.

Fri Aug 03 20:10:15 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/api_nodb.cc: Add test_stringlistserialise1() to test the
          StringListSerialiser and StringListUnserialiser.  Change the list
          of testcases to use the TESTCASE and END_OF_TESTCASES macros.

Fri Aug 03 19:53:26 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * api/matchspy.cc,include/xapian/matchspy.h: Add StringListSerialiser
          and StringListUnserialiser classes which can be used to serialise
          a list of strings into a single string.  Add flag to
          ValueCountMatchSpy to use this to unserialise the values read
          from the database into multiple strings, allowing several values
          to be stored for a particular slot in a database: this allows
          multiple values of a particular facet to be stored.

Thu Jul 26 16:55:18 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * backends/flint/flint_table.cc: Change STRINGIZE to om_tostring()
          in error message about a key which is too long; STRINGIZE doesn't
          work since FLINT_BTREE_MAX_KEY_LEN is no longer a preprocessor
          constant - it's a C++ constant; before this change, the error
          message contained the literal text "FLINT_BTREE_MAX_KEY_LEN".

Tue Jul 17 12:20:55 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * api/matchspy.cc,include/xapian/matchspy.h: Add a
          MultipleMatchDecider, which calls a list of deciders in order,
          until one returns false.
        * include/xapian/enquire.h: Expand comment to say which way round
          the return values of the MatchDecider operator are.
        * tests/api_db.cc: Add test_matchfunctor3() to test the
          MultipleMatchDecider - also tests the ValueCountMatchSpy,
          incidentally.

Tue Jul 17 11:10:42 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * api/matchspy.cc,include/xapian/matchspy.h: Make
          get_most_frequent_items() private, since I'm not convinced it's
          useful to make it available externally.  We can always make it
          public again if it's useful to do so.
        * test/api_wrdb.cc: Update tests accordingly.

Sat Jul 14 00:17:06 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * api/matchspy.cc,include/xapian/matchspy.h: Get rid of the
          TopValueMatchSpy in favour of a new function
          "get_most_frequent_items", which processes the output of a
          ValueCountMatchSpy.  Add a TermCountMatchSpy which counts the
          occurrences of terms with a given prefix, and gives output in
          the same form as ValueCountMatchSpy.  Add convenience methods
          ValueCountMatchSpy::get_top_values() and
          TermCountMatchSpy::get_top_terms() which use this to return the
          most frequent items seen by the matchspy.
        * tests/api_wrdb.cc: Test the ValueCountMatchSpy, and the
          get_most_frequent_items() function.

Fri Jul 13 18:57:30 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * matcher/andpostlist.cc,tests/api_anydb.cc: Improve the lower
          bound on the number of matching documents for an AND query - if
          the sum of the lower bounds for the two sides is greater than the
          number of documents in the database, then some of them must have
          both terms.  This greatly improves the lower bound for queries of
          the form "<alldocuments> FILTER foo" (since FILTER is a subclass
          of AND, and uses the same method), but is probably a useful
          improvement elsewhere.

Fri Jul 13 17:53:46 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * docs/valueranges.rst: Correct out-of-date reference to
          float_to_string, spotted by Enrico Zini.

Wed Jul 11 22:54:43 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * api/matchspy.cc,include/xapian/matchspy.h,tests/api_wrdb.cc:
          Move ValueAndFrequency out of the TopValueMatchSpy class - it
          doesn't seem to be possible to wrap it with swig without doing
          this, and it doesn't seem much less tidy.

Wed Jul 11 18:03:18 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * api/matchspy.cc,include/xapian/matchspy.h: Split MatchSpy into a
          base class (ValueCountMatchSpy), which just counts the values in
          the documents it sees, and a subclass (CategorySelectMatchSpy)
          which does the grouping into categories, and scores the
          categories.  Add another subclass (TopValueMatchSpy) which
          calculates a sorted vector holding the most frequent values.
        * tests/api_wrdb.cc: Update matchspy1 and matchspy2 to use
          CategorySelectMatchSpy instead of MatchSpy, and corresponding
          changes to the methods.  Add matchspy3 to test the
          TopValueMatchSpy.

Mon Jul 09 15:40:58 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/termgentest.cc: Fix copyright: everything I've done in 2007
          has been for Lemur.

Mon Jul 09 15:40:38 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/version_h.cc: Fix type in comment.

Fri Jul 06 12:14:48 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/enquire.h: Add note to register_match_decider()
          documentation comment of what this function is for, and also that
          it doesn't currently do anything (other than store the values
          passed to it in the enquire internals).

Thu Jul 05 20:52:52 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * docs/categorisation.rst: Fix typo.

Thu Jul 05 20:41:49 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/api_wrdb.cc: Rework matchspy2 to use approximate values to
          avoid failing on some platform due to differing precision.

Thu Jul 05 12:21:48 BST 2007  Olly Betts <olly@survex.com>

        * docs/categorisation.rst: Complete half sentence.

Thu Jul 05 12:17:20 BST 2007  Olly Betts <olly@survex.com>

        * docs/categorisation.rst: Add section on restricting by category
          values.

Thu Jul 05 04:47:18 BST 2007  Olly Betts <olly@survex.com>

        * docs/Makefile.am,docs/categorisation.rst: Add topic document
          discussing use of Xapian::MatchSpy.

Thu Jul 05 02:08:13 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian.h,tests/api_wrdb.cc: Restore MatchSpy stuff.

Thu Jul 05 01:38:38 BST 2007  Olly Betts <olly@survex.com>

        * HACKING: Note that RoadMap on the wiki needs updating for each
          release.

Thu Jul 05 01:03:05 BST 2007  Olly Betts <olly@survex.com>

        * AUTHORS: Update.

Thu Jul 05 00:31:00 BST 2007  Olly Betts <olly@survex.com>

        * NEWS: Minor tweaks and clarifications.

Thu Jul 05 00:29:53 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian.h,tests/api_wrdb.cc: Disable MatchSpy class for 1.0.2
          as it's not ready for release yet.

Wed Jul 04 21:20:59 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * NEWS: Update with release date for release 1.0.2

Wed Jul 04 21:09:18 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * AUTHORS: Add Tomek Jackowiak, for reporting bug #166 (missing
          Xapian::Query documentation).

Wed Jul 04 20:45:56 BST 2007  Olly Betts <olly@survex.com>

        * configure.ac: Updated version and library version for 1.0.2.

Wed Jul 04 20:36:07 BST 2007  Olly Betts <olly@survex.com>

        * api/matchspy.cc,include/xapian/matchspy.h,tests/api_wrdb.cc:
          Tidy up API for MatchSpy::build_numeric_ranges() and add tests.

Wed Jul 04 19:40:31 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * NEWS: Fully updated.

Wed Jul 04 18:33:59 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * NEWS: Move some of the changelog entries into news-style comments.

Wed Jul 04 17:50:19 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/api_wrdb.cc: SKIP_TEST() spell3 on windows - it doesn't
          work there due to trying to delete (and then overwrite) an open
          database.  We shouldn't be doing this, so add a long FIXME
          explaining what we should be doing instead.

Wed Jul 04 17:27:22 BST 2007  Olly Betts <olly@survex.com>

        * NEWS: Partly update.

Wed Jul 04 17:19:51 BST 2007  Olly Betts <olly@survex.com>

        * AUTHORS: Add Simon Tatham for spotting the -INFINITY issue, and for
          a lot of useful advice during the CVS to SVN transition.

Wed Jul 04 17:16:59 BST 2007  Olly Betts <olly@survex.com>

        * api/,include/xapian/queryparser.h,tests/queryparsertest.cc: Rename
          Xapian::NumberValueRangeProcessor::float_to_string() to
          Xapian::sortable_serialise() and
          Xapian::NumberValueRangeProcessor::string_to_float() to
          Xapian::sortable_unserialise().

Wed Jul 04 17:16:16 BST 2007  Olly Betts <olly@survex.com>

        * HACKING: Add rationale for 2 space indents for "public", etc.

Wed Jul 04 14:09:57 BST 2007  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Loops on integers and scale to doubles
          rather than looping on doubles and scaling to get integers.

Wed Jul 04 13:01:11 BST 2007  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: If the NumberValueRangeProcessor
          string encodings don't sort the same way, there's no need to report
          the string encodings in the error message as they are written to
          "tout" just before, along with the respective numbers they came
          from.  The string encodings can contain control characters, so are
          liable to corrupt the test failure message.

Wed Jul 04 12:25:15 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * api/valuerangeproc.cc: Fix encoding of extremely large, negative,
          non-IEEE representation to be -INFINITY, not +INFINITY.  Thanks
          to Simon Tatham for pointing this out.
        * include/xapian/queryparser.h: Add a documentation comment note
          that zero and -zero will be transformed to the same value.

Wed Jul 04 10:09:33 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * api/valuerangeproc.cc: Change encoding used for doubles to a much
          more compact scheme, and add support for +-INFINITY.  Also, some
          other tweaks to avoid unnecessary computation.
        * tests/queryparsertest.cc: Update test cases to expect new
          encoding of doubles, and add values for INFINITY and DBL_MAX and
          some other special numbers to the list of numbers that are
          specifically checked.

Wed Jul 04 03:29:10 BST 2007  Olly Betts <olly@survex.com>

        * api/matchspy.cc,include/xapian/matchspy.h,tests/api_wrdb.cc:
          Category score now explicitly weights for having nearer the
          requested number of categories.  Category score is now normalised
          so values should be roughly comparable between different sized
          collections.  Add untested code to build ranges.

Wed Jul 04 00:48:07 BST 2007  Olly Betts <olly@survex.com>

        * bin/xapian-compact.cc: Add new "--no-renumber" option to preserve
          document ids from source databases.  Fix bug in change to add
          support for spelling and synonym tables which was preventing any
          renumbering from happening!

Wed Jul 04 00:25:52 BST 2007  Olly Betts <olly@survex.com>

        * backends/inmemory/inmemory_database.cc,
          backends/inmemory/inmemory_database.h,tests/api_wrdb.cc: Fix bug in
          inmemory backend - using replace_document() to add a document with a
          specific document id above the highest currently used would create
          empty documents for all document ids in between.

Tue Jul 03 09:27:36 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * HACKING: Add note that protection level declarations in classes
          and structs should only be indented by 2 spaces.

Tue Jul 03 03:53:11 BST 2007  Olly Betts <olly@survex.com>

        * api/Makefile.mk,api/matchspy.cc,include/xapian/matchspy.h,
          tests/api_wrdb.cc: Add MatchSpy method to score how good a
          categorisation is.

Tue Jul 03 01:24:19 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: Replace `#include <xapian/stem.h>'
          with forward declaration of Stem.

Tue Jul 03 01:14:12 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/errorhandler.h: Replace `#include <xapian/error.h>'
          with forward declaration of Error.
        * api/errorhandler.cc: Now needs to explicitly `#include
          <xapian/error.h>'.

Tue Jul 03 01:08:30 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/dbfactory.h: Replace `#include <xapian/database.h>'
          with forward declarations of Database and WritableDatabase.

Tue Jul 03 00:59:57 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Remove `#include <xapian/error.h>'.

Mon Jul 02 23:25:55 BST 2007  Olly Betts <olly@survex.com>

        * include/Makefile.mk,include/xapian.h,include/xapian/matchspy.h,
          tests/api_wrdb.cc: Implement "MatchSpy" class to tally values
          in matching documents.

Mon Jul 02 18:15:18 BST 2007  Olly Betts <olly@survex.com>

        * api/omenquire.cc,include/xapian/enquire.h: Fix last change to
          preserve ABI compatibility.

Mon Jul 02 17:52:10 BST 2007  Olly Betts <olly@survex.com>

        * api/omenquire.cc,common/multimatch.h,common/omenquireinternal.h,
          include/xapian/enquire.h,matcher/multimatch.cc,net/remoteserver.cc,
          tests/api_db.cc: Add support for a "matchspy" - a MatchDecider which
          is documented to be tested on ever candidate document.  We plan to
          optimise the current matchdecider to be used as little as possible.

Mon Jul 02 17:35:12 BST 2007  Olly Betts <olly@survex.com>

        * tests/api_db.cc: Enhance matchfunctor1 to test that the functor
          returns ALL matching documents, not just that all documents returned
          match.

Mon Jul 02 16:36:57 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * common/omassert.h: Fix to avoid warning in gcc-snapshot; use
          do{}while(0) to protect assertions, and remove the old "if (a) {}
          else {fail}" constructions which tried to do the same job.

Mon Jul 02 14:56:58 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * bin/xapian-inspect.cc: Add missing #include of <stdio.h> - fixes
          gcc-2.95 compilation.

Mon Jul 02 14:54:50 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * queryparser/termgenerator_internal.h: Fix for gcc-2.95
          compilation.

Mon Jul 02 14:09:22 BST 2007  Olly Betts <olly@survex.com>

        * api/Makefile.mk,api/valuerangeproccompat.cc,
          include/xapian/queryparser.h: Put the new NumberValueRangeProcessor
          in a sub-namespace which we then import it from.  Restore the old
          NumberValueRangeProcessor implementation inside the library so that
          it is available to code linked against 1.0.0 or 1.0.1 to keep ABI
          compatibility.

Sun Jul 01 15:32:30 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: Clearer description of
          NumberValueRangeProcessor.  Don't document the number format in
          terms of strtod() - that's a bug, not a feature we want to be tied
          to.
        * include/xapian/query.h,include/xapian/queryparser.h: Use "@a" not
          "\a" for consistency with existing usage.

Sun Jul 01 10:09:42 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * matcher/localmatch.cc: When registering a term, check if it's
          empty, and if so use the document count as the term frequency,
          rather than calling the database to get the term frequency of an
          empty term (most database backends have an assertion that the
          term is not empty, and an empty term isn't a valid parameter to
          pass to get_termfreq() anyway).
        * matcher/multimatch.cc: For MatchAll queries, the "" term will not
          be found in the termlist of the top document, so check if a ""
          term is present in the query, and use it to increase the
          percent_scale if so.  This fixes an Assertion which checked that
          percent_scale was not 0.
        * tests/api_db.cc: Add test_matchall1() which tests running a query
          with a MatchAll query.
        * tests/api_nodb.cc: Rename test_emptyquery1 and test_emptyquery2
          to test_emptyquery2 and test_emptyquery3, respectively.  There
          was already a (different) test_emptyquery1 in api_anydb.cc.

Sat Jun 30 18:04:06 BST 2007  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Write `2.0' rather than `(double)2'.

Sat Jun 30 16:12:49 BST 2007  Olly Betts <olly@survex.com>

        * docs/valueranges.rst: Fix typo.  Fix ".. note:" to ".. note::" so
          it appears visibly in the HTML output rather than in an HTML
          comment!

Sat Jun 30 15:14:33 BST 2007  Olly Betts <olly@survex.com>

        * api/omdocument.cc,common/document.h,include/xapian/document.h:
          Add Xapian::Document::get_docid() method.

Sat Jun 30 04:00:57 BST 2007  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: If there's only one term in the query (a
          pretty common case) we don't need to look at the top document's
          termlist to determine that it matches all the query terms.

Sat Jun 30 00:37:09 BST 2007  Olly Betts <olly@survex.com>

        * INSTALL: Add note that zlib must be installed before you can build
          Xapian.

Fri Jun 29 22:40:58 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/: If doccount == lastdocid, all document ids up to
          lastdocid are used, so we provide a special really efficient version
          implementation of iterating all documents for this common case for
          flint.

Fri Jun 29 00:39:04 BST 2007  Olly Betts <olly@survex.com>

        * common/stringutils.h: Add startswith() and endswith() overloads
          which take a single character.
        * backends/flint/flint_spellingwordslist.cc,bin/xapian-inspect.cc:
          Use new forms.
        * backends/flint/flint_spellingwordslist.cc: Fix comment typo.

Thu Jun 28 21:43:49 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_spellingwordslist.cc: Another begins_with()
          which I somehow missed.

Thu Jun 28 19:51:03 BST 2007  Olly Betts <olly@survex.com>

        * api/valuerangeproc.cc,backends/flint/flint_alltermslist.cc,
          backends/flint/flint_synonym.cc,
          backends/inmemory/inmemory_alltermslist.cc,
          backends/quartz/quartz_alltermslist.cc,
          backends/quartz/quartz_metafile.cc,bin/xapian-inspect.cc,
          common/stringutils.h,tests/harness/testsuite.cc: Rename
          begins_with() to startswith() and ends_with() to endswith() for
          consistency with Python string operations.

Thu Jun 28 18:49:50 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Don't put a Z prefix on terms if the
          stemmer is "none", which matches what TermGenerator generates.

Thu Jun 28 02:22:04 BST 2007  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc: Don't SEGV when Query::MatchNothing is used
          with OP_AND_NOT (fixes bug#176).
        * tests/api_nodb.cc: Add regression test emptyquery2.
        * AUTHORS: Thank bug reporter (Krzysztof Klemm).

Wed Jun 27 13:05:55 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * NEWS: Updated.

Wed Jun 27 13:04:19 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * examples/copydatabase.cc: Add support for copying the spelling
          data.

Wed Jun 27 12:46:54 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * NEWS: Updated.

Wed Jun 27 12:13:50 BST 2007  Olly Betts <olly@survex.com>

        * bin/xapian-check.cc: Check spelling and synonym Btrees.

Wed Jun 27 12:10:47 BST 2007  Olly Betts <olly@survex.com>

        * bin/xapian-compact.cc: Add merging for spelling and synonym tables.

Wed Jun 27 12:09:34 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_spelling.cc: Fix PrefixCompressedStringItor to
          not ignore the last entry.
        * tests/api_wrdb.cc: Regression test (spell4).

Wed Jun 27 11:51:10 BST 2007  Olly Betts <olly@survex.com>

        * tests/api_wrdb.cc: Remove bogus comment.

Wed Jun 27 04:12:56 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_cursor.h: Make FlintCursor::after_end() const.

Tue Jun 26 22:31:24 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/api_wrdb.cc: Add test_spell3(), which tests spelling
          correction with multi databases, and the results of the iterator
          from Database::spellings_begin() with single and multi databases.

Tue Jun 26 20:51:13 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * api/omtermlistiterator.cc: Handle pruning, so that multi-database
          spelling word iterators work.  Pruning should arguably always
          have been handled, but it's never been possible for the TermList
          passed to TermIterator to prune before, so it's not been an
          issue.

Tue Jun 26 20:50:06 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * backends/flint/flint_spellingwordslist.h: Don't bother testing
          whether we found an entry which was exactly "W" - if we do, the
          database is corrupt, but the best recovery strategy would just be
          to continue at the next matching entry.

Tue Jun 26 20:26:03 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * api/omdatabase.cc: Remove mistaken skip_to("W") - should be done
          by open_spelling_wordlist() rather than here.
        * backends/flint/flint_spellingwordslist.h: Only call
          cursor->prev() if find_entry("W") finds an entry.

Tue Jun 26 17:46:27 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * backends/flint/flint_alltermslist.cc,
          backends/flint/flint_spellingwordslist.cc,
          backends/flint/flint_synonym.cc: Remove calls to abort() which
          are followed immediately by an Assert() which checks the same
          condition.

Tue Jun 26 17:26:02 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/database.h: Add spellings_begin() and
          spellings_end(), to iterate through the spelling correction
          target words.
        * api/omdatabase.cc: Implement spellings_begin(), using the newly
          added FreqAdderOrTermList to join the spellings lists.
        * common/database.h,backends/database.cc: Add
          open_spelling_wordlist() to get iterator of spelling targets, if
          any, with default implementation which returns NULL.
        * backends/flint/flint_database.h,backends/flint/flint_database.cc:
          Implement open_spelling_wordlist() for flint.
        * backends/flint/flint_spelling.h: Make merge_changes() public, so
          it can be called when a writable database needs to open a
          spelling wordlist.
        * backends/flint/flint_spellingwordslist.h,
          backends/flint/flint_spellingwordslist.cc: New files,
          implementing an iterator over the spelling targets.

Tue Jun 26 17:25:09 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * common/ortermlist.h,expand/ortermlist.cc: Add a
          "FreqAdderOrTermList", which adds the term frequencies of the
          sublists, rather than requiring that they're equal for terms
          which are in both.

Tue Jun 26 17:22:03 BST 2007  Olly Betts <olly@survex.com>

        * docs/admin_notes.rst: Update to mention spelling and synonym tables,
          and to document optional tables more clearly.

Tue Jun 26 16:23:25 BST 2007  Olly Betts <olly@survex.com>

        * tests/termgentest.cc: Add feature test for TermGenerator spelling
          integration.

Tue Jun 26 16:14:56 BST 2007  Olly Betts <olly@survex.com>

        * tests/termgentest.cc: Fix comment paste-o.

Tue Jun 26 16:11:11 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/termgenerator.h,queryparser/termgenerator.cc,
          queryparser/termgenerator_internal.cc,
          queryparser/termgenerator_internal.h: Add support for generating
          spelling data to TermGenerator class.

Tue Jun 26 15:22:12 BST 2007  Olly Betts <olly@survex.com>

        * bin/xapian-compact.cc: Don't skip "empty" source databases, as they
          may have spelling and/or synonym data.  Warn if more than one source
          database has spelling data and ignore all but the first.  Similarly
          warn and ignore for synonym data.

Tue Jun 26 13:52:15 BST 2007  Olly Betts <olly@survex.com>

        * examples/copydatabase.cc: Fix code which extracts the leafname to
          handle a trailing directory separator.
        * examples/copydatabase.cc: Copy synonym data across.  Print warning
          that spelling data isn't copied (as there's no API to access it
          currently).

Tue Jun 26 13:21:13 BST 2007  Olly Betts <olly@survex.com>

        * bin/xapian-compact.cc: Fix to compact spelling and synonym tables.

Tue Jun 26 02:20:50 BST 2007  Olly Betts <olly@survex.com>

        * tests/api_wrdb.cc: Fix randomly indented line.

Tue Jun 26 02:20:01 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/document.h: Change parameter name for
          Document::get_value() to match other parameter names in the class.

Tue Jun 26 02:19:16 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: FLAG_AUTO_MULTIWORD_SYNONYMS now
          implies FLAG_AUTO_SYNONYMS.

Tue Jun 26 02:18:02 BST 2007  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Add test for a single word synonym in
          multi-synonym mode.

Tue Jun 26 02:08:47 BST 2007  Olly Betts <olly@survex.com>

        * common/ortermlist.h,queryparser/termgenerator_internal.h: Fix
          warnings from Intel's C++ compiler.

Tue Jun 26 01:45:09 BST 2007  Olly Betts <olly@survex.com>

        * HACKING: Snapshots and releases are now bootstrapped with libtool
          1.5.24, which includes all the patches we were applying on top of
          1.5.22.
        * HACKING: Expand note about preferring pre-increment to
          post-increment to mention preferring it to adding one, and to cover
          decrementing too.

Tue Jun 26 01:34:41 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_spelling.cc: Fix bug appending spelling data to
          an existing trigram.

Tue Jun 26 01:34:07 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_database.cc: Fix handling of exceptions during
          commit.

Mon Jun 25 17:01:40 BST 2007  Olly Betts <olly@survex.com>

        * docs/spelling.rst: Update for Unicode spelling correction.

Mon Jun 25 15:41:43 BST 2007  Olly Betts <olly@survex.com>

        * api/editdistance.cc,api/editdistance.h,api/omdatabase.cc:
          Convert to UTF-32 before calculating edit distances.
        * tests/api_wrdb.cc: Add test coverage for Unicode spelling
          correction.

Mon Jun 25 14:03:34 BST 2007  Olly Betts <olly@survex.com>

        * tests/quartztest.cc: Remove tests for removed method
          QuartzPostList::get_collection_freq().

Mon Jun 25 12:32:07 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_spelling.cc: Replace abort() with exception
          throwing.

Mon Jun 25 03:01:20 BST 2007  Olly Betts <olly@survex.com>

        * tests/harness/backendmanager.cc: Track the fd used to communicate
          with a xapian-tcpsrv child process so we can close it when we reap
          the child pid.

Mon Jun 25 02:44:04 BST 2007  Olly Betts <olly@survex.com>

        * docs/valueranges.rst: Fix bad RST markup.

Sun Jun 24 23:24:26 BST 2007  Olly Betts <olly@survex.com>

        * tests/harness/backendmanager.cc: Fix memory leak in test harness
          launching of xapian-tcpsrv so that "apitest -b remotetcp" now passes
          under valgrind.

Sun Jun 24 19:39:59 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * docs/valueranges.rst: Add documentation for the
          NumberValueRangeProcessor, now that it is fixed.

Sun Jun 24 14:29:06 BST 2007  Olly Betts <olly@survex.com>

        * backends/remote/net_postlist.cc,backends/remote/net_postlist.h:
          Move NetworkPostList virtual methods out of the header.  Move the
          constructor into the header, since that can be inlined.

Sun Jun 24 14:15:43 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/,backends/multi/multi_postlist.cc,
          backends/multi/multi_postlist.h,backends/quartz/,
          backends/remote/net_postlist.cc,backends/remote/net_postlist.h,
          backends/remote/remote-database.cc,common/emptypostlist.h,
          common/postlist.h,common/remote-database.h: For Flint and Quartz,
          refactor so we no longer create a postlist just to find the termfreq
          or collection frequency.  These were the only places which used
          PostList::get_collection_freq(), so eliminate it (bug#124).

Sun Jun 24 09:40:51 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * msvc/genversion.pl: Add a script to generate the version.h file
          for MSVC builds by parsing configure.ac to extract the version
          number, and then performing the appropriate substitutions on
          msvc/version.h.in.  Shouldn't be used for tarball builds (because
          version.h already exists) or for builds which use configure.

Sun Jun 24 02:25:38 BST 2007  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: The check_at_least parameter to
          Enquire::get_mset() is now handled in a more efficient way - no
          extra memory is now required, and CPU overhead should be reduced
          (bug#174).

Sun Jun 24 02:00:07 BST 2007  Olly Betts <olly@survex.com>

        * docs/synonyms.rst,docs/Makefile.am: New "topic" document describing
          synonym support.
        * docs/Makefile.am: HTML documentation generated from RST files wasn't
          being installed.

Sun Jun 24 00:45:46 BST 2007  Olly Betts <olly@survex.com>

        * backends/remote/remote-database.cc,common/remote-database.h,
          common/remoteprotocol.h,common/submatch.h,docs/remote_protocol.html,
          matcher/,net/remoteserver.cc: Pass check_at_least to the remote
          server to reduce the amount of work required to produce the match
          on the remote server, and also reduce the serialised size of the
          returned MSet.

Sun Jun 24 00:17:18 BST 2007  Olly Betts <olly@survex.com>

        * tests/api_anydb.cc: More check_at_least tests.

Sat Jun 23 20:02:48 BST 2007  Olly Betts <olly@survex.com>

        * api/omdatabase.cc,tests/api_wrdb.cc: Add multi-database support
          for synonyms.

Sat Jun 23 18:50:59 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/database.h: Tiny fix to a documentation comment.

Sat Jun 23 17:35:37 BST 2007  Olly Betts <olly@survex.com>

        * common/ortermlist.h,expand/ortermlist.cc: Comment out unused method
          OrTermList::get_collection_freq().  The same dummy implementation
          is provided by the parent class (TermList).

Sat Jun 23 17:07:40 BST 2007  Olly Betts <olly@survex.com>

        * api/omdatabase.cc,backends/database.cc,backends/flint/,
          common/database.h,include/xapian/database.h,tests/api_wrdb.cc:
          Implement Database::synonym_keys_begin() to allow iteration over all
          the terms for which synonyms have been added.

Sat Jun 23 04:19:54 BST 2007  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Fix handling of check_at_least parameter -
          we weren't discarding matches above the requested MSet size
          correctly.
        * tests/api_anydb.cc: Add regression test checkatleast2.

Sat Jun 23 03:00:45 BST 2007  Olly Betts <olly@survex.com>

        * docs/queryparser.html: Document synonyms.

Sat Jun 23 02:50:55 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Unapply commented out fragments
          towards supporting '~' on phrases, which I didn't mean to apply.

Sat Jun 23 02:25:32 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h,queryparser/queryparser.lemony,
          tests/queryparsertest.cc: Add support for synonym operator ('~')
          to the QueryParser.

Sat Jun 23 01:52:51 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Fix two bugs in the query parser -
          now '+' and '-' work on bracketed subexpressions as documented.
        * tests/queryparsertest.cc: Add regression tests.

Sat Jun 23 01:47:30 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.cc: Use "using namespace std;".

Fri Jun 22 18:48:21 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_synonym.cc: Fix iteration of unflushed
          synonyms.

Fri Jun 22 18:21:39 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * docs/deprecation.rst: Fix typo.

Fri Jun 22 18:02:21 BST 2007  Olly Betts <olly@survex.com>

        * api/omdatabase.cc,backends/database.cc,backends/flint/,
          common/database.h,include/xapian/database.h,
          include/xapian/queryparser.h,queryparser/queryparser.lemony:
          Add support for storing synonyms for terms in a new optional Btree
          table in flint databases, and using them in the QueryParser.
        * tests/queryparsertest.cc: Feature tests for synonyms.

Fri Jun 22 17:58:37 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Removed superfluous "private:" in
          class State.  Make State::get_database() const.

Fri Jun 22 17:58:15 BST 2007  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Make sure .flint subdirectory exists.

Fri Jun 22 17:52:53 BST 2007  Olly Betts <olly@survex.com>

        * bin/xapian-inspect.cc: Don't die with an error if the user tries to
          move forward twice from the end.  Also, make "prev" from the end
          work.

Fri Jun 22 17:47:36 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lt: If an input token has a yyminor, report
          its name in the debug output.

Fri Jun 22 14:47:17 BST 2007  Olly Betts <olly@survex.com>

        * NEWS: Updated with changes since 1.0.1.

Thu Jun 21 21:12:49 BST 2007  Olly Betts <olly@survex.com>

        * backends/remote/remote-database.cc,common/remoteprotocol.h,
          common/remoteserver.h,net/remoteserver.cc: Protocol version
          increased to 30.2.  This difference from 30.1 is that
          MSG_DELETEDOCUMENT now send REPLY_DONE to allow DocNotFoundError
          to be propagated.  MSG_DELETEDOCUMENT now has a new number and
          the old number for MSG_DELETEDOCUMENT is now
          MSG_DELETEDOCUMENT_PRE_30_2 which is handled by the server so
          that older clients will continue to work.
        * docs/remote_protocol.html: Update.
        * tests/api_wrdb.cc: Add regression test for DocNotFoundError bug.

Thu Jun 21 17:22:53 BST 2007  Olly Betts <olly@survex.com>

        * api/omdatabase.cc,tests/queryparsertest.cc,docs/spelling.rst: Add
          support for spelling correction when using multiple databases.

Thu Jun 21 16:15:22 BST 2007  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Add feature tests for correcting spelling
          errors in the QueryParser.

Thu Jun 21 15:01:00 BST 2007  Olly Betts <olly@survex.com>

        * tests/api_wrdb.cc: Check the edit distance 3 words are found if
          asked for.

Thu Jun 21 14:59:15 BST 2007  Olly Betts <olly@survex.com>

        * api/omdatabase.cc,common/omdebug.h: Add some debug tracing for the
          spelling correction.

Thu Jun 21 13:45:12 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_spelling.cc,docs/spelling.rst: Generate
          "bookends" for four character words too, so that we suggest
          "fuor" -> "four".
        * tests/api_wrdb.cc: More testcases.

Thu Jun 21 13:08:07 BST 2007  Olly Betts <olly@survex.com>

        * docs/spelling.rst: Assorted minor improvements.  Add note about not
          detecting single character substitutions in two character words.

Thu Jun 21 13:02:57 BST 2007  Olly Betts <olly@survex.com>

        * tests/api_wrdb.cc: Check cases for single edits to a two character
          word work as expected.

Thu Jun 21 04:13:46 BST 2007  Olly Betts <olly@survex.com>

        * tests/api_wrdb.cc: Add test cases to check we find all single edit
          errors for a three letter word.

Thu Jun 21 04:08:11 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_spelling.h: Now that
          FlintSpellingTable::merge_changes() is only called from within the
          class, make it a private method.  discard_changes() is only used
          once, and from within the class, so just inline it as that's
          clearer.  Make the comment about the overridden methods a doxygen
          grouping comment,

Thu Jun 21 04:02:51 BST 2007  Olly Betts <olly@survex.com>

        * docs/spelling.rst: Update to mention "bookend" bigrams.

Thu Jun 21 03:56:52 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_spelling.cc: Generate "bookend" spelling
          entries for two and three letter terms, consisting of the prefix 'B'
          followed by the first and last letters.  This allows us to handle
          substitution or deletion of the middle character of a three letter
          word, or insertion in the middle of a two letter word.

Thu Jun 21 03:18:28 BST 2007  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Some doubles in the list which
          value_range_serialise1 tests have the same values on some platforms,
          so test that adjacent numbers and their string counterparts compare
          the same way rather than that both are "<".

Thu Jun 21 02:46:01 BST 2007  Olly Betts <olly@survex.com>

        * tests/api_wrdb.cc: Add "spell1" - a simple feature test for spelling
          based on Richard's python test.  Use TESTCASE() and END_OF_TESTCASES
          macros.

Wed Jun 20 21:57:01 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_database.cc: WritableDatabase::delete_document()
          no longer cancels pending changes if the document doesn't exist.
        * backends/quartz/quartz_database.cc: Same fix.

Wed Jun 20 20:53:52 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_database.cc: We may now need to flush even if
          there have been no documents added/replaced/deleted, as there may be
          changes to the spelling table.

Wed Jun 20 20:46:30 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_table.cc: Fix a function name in the debug
          loggging.

Wed Jun 20 20:39:43 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_spelling.cc: Fix FlintSpellingTermList not to
          report at_end() one entry too early.

Wed Jun 20 19:21:45 BST 2007  Olly Betts <olly@survex.com>

        * tests/harness/backendmanager.cc: Don't touch <dbdir>/log for flint
          as flint doesn't create a log like quartz does.

Wed Jun 20 17:10:29 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_database.cc,backends/flint/flint_spelling.h:
          Push special handling for spelling_table into the FlintSpellingTable
          class.  This fixes "is_modified()" to take into account unflushed
          changes held in memory.

Wed Jun 20 13:59:01 BST 2007  Olly Betts <olly@survex.com>

        * api/omdatabase.cc: Don't use RETURN() in methods which return void.

Wed Jun 20 11:56:30 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * api/editdistance.cc: Change an Assert in is_transposed() (which
          fails in some cases) to a test, since it seems legitimate that
          a value of pos2 <= 0 might be supplied to the function (though
          the answer will always be "false" in that case).

Wed Jun 20 02:38:51 BST 2007  Olly Betts <olly@survex.com>

        * api/omdatabase.cc: Fix two incorrect return types in debug logging.

Wed Jun 20 02:14:40 BST 2007  Olly Betts <olly@survex.com>

        * api/omdatabase.cc: Add missing implementations of
          WritableDatabase::add_spelling() and
          WritableDatabase::remove_spelling().

Wed Jun 20 00:58:46 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_spelling.h: Make the maps private.

Wed Jun 20 00:05:15 BST 2007  Olly Betts <olly@survex.com>

        * HACKING: Snapshots now bootstrapped with automake 1.10.

Wed Jun 20 00:03:42 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_spelling.cc,common/Makefile.mk,
          expand/Makefile.mk,expand/ortermlist.h: Move ortermlist.h from
          "expand/" to "common/" so we can included it from flint_spelling.cc
          without a relative path.

Tue Jun 19 22:41:08 BST 2007  Olly Betts <olly@survex.com>

        * api/,backends/database.cc,backends/flint/,common/database.h,
          docs/Makefile.am,docs/spelling.rst,include/xapian/database.h,
          include/xapian/queryparser.h,queryparser/queryparser.cc,
          queryparser/queryparser.lemony,queryparser/queryparser_internal.h:
          Add support for spelling correction.

Tue Jun 19 19:18:40 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_database.cc,backends/flint/flint_table.cc,
          backends/flint/flint_table.h: Add new method
          FlintTable::key_exists() so we don't need to create a cursor to
          check if a key exists in FlintDatabase::term_exists() (the other
          alternative previously was to read the key and tag and ignore the
          tag, but that could involve reading more blocks if the tag is
          long, and it could involve uncompressing the tag too).

Tue Jun 19 17:49:09 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/queryparsertest.cc: Cast the input to pow() to a double, to
          fix a problem on windows (which has several versions of pow(),
          and the version taking a float was being used by default,
          resulting in some of the tests overflowing the range of float).

Tue Jun 19 17:48:42 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * api/valuerangeproc.cc: Fix assertions, so that the code works
          with assertions turned on.

Tue Jun 19 12:35:46 BST 2007  Olly Betts <olly@survex.com>

        * matcher/branchpostlist.cc: Add missing #include <config.h>.
        * matcher/branchpostlist.cc,matcher/branchpostlist.h: Move other
          virtual method definitions out of the header.

Mon Jun 18 21:41:15 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * matcher/branchpostlist.h: Add missed copyright statement.

Mon Jun 18 21:36:31 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * matcher/branchpostlist.cc,matcher/branchpostlist.h: Add get_wdf()
          method to BranchPostList (which just sums the wdf, which is
          useful for a synonym postlist, which is the only situation in
          which this will be called).  Add the method definition in a
          separate file, as per the comment I just added to HACKING.
        * matcher/Makefile.mk: Add branchpostlist.cc

Mon Jun 18 21:33:56 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * HACKING: Add note about virtual methods (saying that the
          shouldn't be defined in header files).

Mon Jun 18 20:15:18 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * matcher/phrasepostlist.cc,matcher/phrasepostlist.h,
          matcher/exactphrasepostlist.cc,matcher/exactphrasepostlist.cc:
          Add get_wdf() methods to NearPostList, PhrasePostList and
          ExactPhrasePostList - these use a very rough approximation (but
          there's a big long comment justifying it).

Mon Jun 18 18:38:43 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * matcher/mergepostlist.cc,matcher/mergepostlist.h: Add copyright
          statements for previous commit (and update license while I'm at
          it).

Mon Jun 18 18:24:43 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * matcher/mergepostlist.cc,matcher/mergepostlist.h: Add get_wdf()
          method to MergePostList (just passes through the value from the
          current postlist).  Not currently needed, but the expected
          behaviour is obvious, and this will be needed if there's a
          synonym postlist higher in the query tree (when synonym postlists
          are implemented).  Also, correct a documentation comment typo.

Mon Jun 18 13:09:36 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * api/valuerangeproc.cc: Cast the first parameter to ldexp() to
          double to fix compilation on some platforms, and add a few more
          explanatory code comments to
          NumberValueRangeProcessor::string_to_float()

Mon Jun 18 11:33:49 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * api/valuerangeproc.cc: Add static methods to
          NumberValueRangeProcessor to serialise and unserialise doubles.
          Change the code which tests a term for being a number to use
          strtod, and accept any string which strtod thinks is a number.
          If NumberValueRangeProcessor accepts a range, it now converts the
          begin and end values to strings using the serialise method.
          Also, expand some of the code comments.
        * include/xapian/queryparser.h: Add documentation comments to
          NumberValueRangeProcessor.
        * tests/queryparsertest.cc: Update value_range2_queries to expect
          new serialised forms in its output.  Update test_qp_value_range3
          to test a wider range of values (including negative, fractional,
          and more-than-single-digit).

Mon Jun 18 03:36:38 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Fix comment typo, and add brackets
          to make intended precedence clearer.

Mon Jun 18 03:36:04 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: Tweak wording of a couple of
          documentation comments.

Mon Jun 18 02:00:31 BST 2007  Olly Betts <olly@survex.com>

        * docs/queryparser.html: Mention "AND NOT" as an alternative way to
          write "NOT".

Mon Jun 18 01:43:00 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Adjust precedence of boolean
          operators to match those in maths and programming languages.
          "NOT" now binds as tightly as "AND" (previously "AND NOT" would
          bind like "AND", but just "NOT" would bind like "OR"!)  Also
          "XOR" now binds more tightly than "OR", but less tightly than
          "AND" (previously it bound just like "OR").
        * tests/queryparsertest.cc: Add testcases for the new behaviour.

Mon Jun 18 01:16:18 BST 2007  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Better test coverage of handling of random
          double quotes in queries.

Sun Jun 17 16:17:34 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/unicode.h: Don't call operator++(0) from operator()
          as it does more work than we need.

Sun Jun 17 14:14:16 BST 2007  Olly Betts <olly@survex.com>

        * bin/xapian-inspect.cc: Fix so that Ctrl+D doesn't cause an infinite
          loop!

Sat Jun 16 22:19:11 BST 2007  Olly Betts <olly@survex.com>

        * bin/Makefile.mk,bin/xapian-inspect.cc,xapian-core.spec.in:
          New utility 'xapian-inspect' allowing interactive inspection of
          key/tag pairs in a flint Btree.  Useful for development and
          debugging, and an approximate replacement for quartzdump.

Sat Jun 16 17:03:57 BST 2007  Olly Betts <olly@survex.com>

        * docs/doxygen_api_conf.in,docs/doxygen_full_conf.in: Update for
          doxygen 1.5.2 (using "doxygen -u").

Sat Jun 16 10:17:32 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/Makefile.am: The "check-none" target should run all the
          tests which don't need a database, not just those in apitest: add
          internaltest, stemtest, queryparsertest and termgentest to the
          list of tests it runs.

Sat Jun 16 09:36:10 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * Makefile.am,bin/Makefile.mk,examples/Makefile.mk: Work around an
          apparent bug in automake which causes the entries in .libs
          subdirectories generated for targets of bin_PROGRAMS not to be
          removed on make clean.  (This was causing make distcheck to
          fail.)

Sat Jun 16 04:42:16 BST 2007  Olly Betts <olly@survex.com>

        * HACKING,Makefile.am,tests/Makefile.am,tests/apitest.cc,
          tests/harness/backendmanager.cc,tests/harness/backendmanager.h: In
          the testsuite, rename the "void" pseudo-backend to "none" to more
          clearly reflect what it is.  And rename the "remote" backend to
          "remoteprog", to better differentiate it from "remotetcp".
        * HACKING: Fix error - "apitest -b=flint" doesn't work - it must be
          "apitest -bflint".

Sat Jun 16 04:40:28 BST 2007  Olly Betts <olly@survex.com>

        * HACKING: Now using doxygen 1.5.2.

Sat Jun 16 02:08:20 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_table.cc: Fix to build with older zlib.  Not
          hugely important as zlib security fixes mean any well maintained
          box will be running a recent zlib, but the fix is trivial.

Fri Jun 15 19:39:03 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * HACKING: Document the new check-void, check-inmemory,
          check-remoteprog and check-remotetcp targets.

Fri Jun 15 19:34:13 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * Makefile.am,tests/Makefile.am: Add check-void, check-inmemory,
          check-remoteprog and check-remotetcp targets, to allow the tests
          for any of the backends to be performed in isolation.

Fri Jun 15 19:29:19 BST 2007  Olly Betts <olly@survex.com>

        * Makefile.am,configure.ac,xapian-core.spec.in,xapian.spec.in:
          Rename xapian.spec to xapian-core.spec to match tarball name.
          Append the user name to BuildRoot.

Fri Jun 15 14:51:13 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * net/progclient.cc: Open the file handle pointing to /dev/null as
          O_WRONLY instead of O_RDONLY: doesn't affect whether the test
          passes (since nothing gets written to stderr in theory anyway),
          but makes more sense.

Fri Jun 15 13:21:56 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * net/progclient.cc: Better fix - rather than leaving stderr open,
          we close it, and then reopen it pointing to /dev/null.

Fri Jun 15 12:55:07 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * net/progclient.cc: Don't close stderr in the child before we call
          execve() - with this change, apitest passes under valgrind with
          the remote database backend: before it, the child seemed to be
          exiting without writing anything to the socket, causing the test
          to fail with a NetworkError (due to an unexpected EOF).

Thu Jun 14 23:47:52 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_database.cc: Replace duplicated code with calls
          to existing method set_revision_number(new_revision).

Thu Jun 14 18:51:03 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_database.cc: Stop including <sys/utsname.h>
          which we don't use here.

Thu Jun 14 18:22:24 BST 2007  Olly Betts <olly@survex.com>

        * tests/Makefile.am: Fix typo from copy&paste.

Thu Jun 14 16:46:45 BST 2007  Olly Betts <olly@survex.com>

        * docs/admin_notes.rst: Update for the "lazy table" changes.  Correct
          the description of xapian-compact --multipass (only the postlist
          tables are merged in multiple passes), correct description of how
          to use xapian-check on a single table (no trailing '.' should be
          specified).  Change the "how to upgrade 0.9.x flint databases" to
          talk about 1.0.y rather than 1.0.0.

Thu Jun 14 16:25:55 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/: The value and position tables are now only created
          if there is anything to add to them.  So if you never use document
          values, there's no value_DB, value.baseA, or value.baseB.  This
          means the table doesn't need to be opened for searching (saving a
          file handle) and when flushing changes, we don't need to update
          baseA/baseB just to keep the revisions in step.  The flint database
          version has been increased, but the new code will happily open and
          read/update flint databases from Xapian 1.0.0 and 1.0.1.
        * bin/xapian-check.cc,bin/xapian-compact.cc: Update to handle
          databases without value and/or position tables.
        * tests/testdata/flint-1.0.1/: Empty example of a flint 1.0.1 format
          database.
        * tests/Makefile.am,tests/api_db.cc: Add check that a flint 1.0.1
          format database can be opened.

Wed Jun 13 22:40:15 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/queryparser.h: Document set_stemmer() and
          set_stemming_strategy() better - in particular, make it clear
          that the default value for the stemming strategy is STEM_NONE.

Wed Jun 13 17:16:52 BST 2007  Olly Betts <olly@survex.com>

        * HACKING: Wrap overlong line.

Wed Jun 13 16:47:07 BST 2007  Olly Betts <olly@survex.com>

        * msvc/version.h.in: Remote backend is now supported in the MSVC
          build.

Wed Jun 13 04:18:51 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_table.cc,backends/flint/flint_table.h:
          Eliminate dont_close_handle as it's always false.

Wed Jun 13 02:53:28 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_btreebase.cc,backends/flint/flint_btreebase.h:
          Remove unused FlintTable_base constructor.

Tue Jun 12 18:27:54 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_table.cc: Add fix to allow compilation on
          OpenBSD, which uses off_t instead of uLong for total_out in
          zlib.h.  Remove Assert() which is followed by a better check of
          the same condition.
        * AUTHORS: Add Julien Touche for help with this fix.

Tue Jun 12 13:34:59 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/harness/unixcmds.cc: On unix builds, set access permissions
          on copied directories to allow writes.  This fixes make
          distcheck, which was failing on tests because the copied
          directory was set to read-only, causing the later "rm -rf"
          command to fail.

Mon Jun 11 20:10:26 BST 2007  Olly Betts <olly@survex.com>

        * docs/overview.html: Fix typo.

Mon Jun 11 20:08:42 BST 2007  Olly Betts <olly@survex.com>

        * docs/Makefile.am: Ship and install internals.html.

Mon Jun 11 17:46:04 BST 2007  Olly Betts <olly@survex.com>

        * docs/Makefile.am,docs/doxygen_full_conf.in: Disable generation of
          PDF version of doxygen-collated documentation of internals.  It
          keeps overflowing TeX limits and it seems likely that most people
          would prefer the HTML version of this anyway.

Mon Jun 11 17:45:12 BST 2007  Olly Betts <olly@survex.com>

        * tests/internaltest.cc: Remove duplicated code.

Mon Jun 11 03:55:53 BST 2007  Olly Betts <olly@survex.com>

        * NEWS: Probably the final update for 1.0.1.

Mon Jun 11 03:47:37 BST 2007  Olly Betts <olly@survex.com>

        * examples/simpleindex.cc: Tweak the logic to be clearer.

Sun Jun 10 21:59:21 BST 2007  Olly Betts <olly@survex.com>

        * HACKING,configure.ac: Drop automake requirement to 1.8.3 to allow
          RPM spec file to work on SLES 9.

Sun Jun 10 21:48:51 BST 2007  Olly Betts <olly@survex.com>

        * configure.ac: Bump version to 1.0.1 and LIBRARY_VERSION_INFO to
          15:0:0.

Sun Jun 10 21:46:57 BST 2007  Olly Betts <olly@survex.com>

        * xapian.spec.in: Add "# norootforbuild" comment which SuSE's build
          scripts look for.  Rename "Source0:" to "Source:" as there's only
          one tarball now.  Add gcc-c++ and zlib-devel to "Build-Requires:".

Sun Jun 10 21:43:45 BST 2007  Olly Betts <olly@survex.com>

        * PLATFORMS: More updates.

Sun Jun 10 18:01:19 BST 2007  Olly Betts <olly@survex.com>

        * api/error.cc,generate-exceptions.in: Make Error::error_string member
          std::string rather than char * to avoid problems with double free()
          with copied Error objects.  Also, Error::get_description() now
          converts my_errno to error_string if it hasn't been already.
        * tests/internaltest.cc: Add regression tests for both bugs.

Sun Jun 10 13:33:21 BST 2007  Olly Betts <olly@survex.com>

        * tests/api_db.cc: New testcase in allterms6.

Sun Jun 10 13:20:37 BST 2007  Olly Betts <olly@survex.com>

        * xapian-config.in: Add special case check for host_os matching linux*
          or k*bsd-gnu since vanilla libtool doesn't identify them as needing
          link_all_deplibs_CXX=no.

Sun Jun 10 03:32:54 BST 2007  Olly Betts <olly@survex.com>

        * PLATFORMS: Updated from tinderbox.

Sun Jun 10 02:14:58 BST 2007  Olly Betts <olly@survex.com>

        * NEWS: Updated.

Sat Jun 09 17:28:32 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Add the unstem entry for boolean
          prefixed terms in Term::make_term() as we do for other terms.

Sat Jun 09 17:27:55 BST 2007  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Replace reference to Xapian "1.0" with
          "1.0.0".

Sat Jun 09 17:12:44 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony,queryparser/queryparser_internal.h:
          Factor out the code which actually parses a term into a separate
          method.

Fri Jun 08 23:31:23 BST 2007  Olly Betts <olly@survex.com>

        * tests/Makefile.am: Distribute tests/testdata/flint-0.9.9/.

Fri Jun 08 19:20:36 BST 2007  Olly Betts <olly@survex.com>

        * NEWS: Updated.

Fri Jun 08 18:55:43 BST 2007  Olly Betts <olly@survex.com>

        * examples/simplesearch.cc: Report "Matches 1-<N>:".

Fri Jun 08 18:46:02 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * api/omenquire.cc: Fix issue brought to my attention by Enrico
          Zini: if an uninitialised database is supplied to Enquire,
          performing a search will cause a segfualt.  It isn't completely
          clear whether using an uninitialised database should cause an
          error, or whether the search should return an empty result list,
          but for ease of implementation, and to avoid application errors
          going unnoticed, I've made Enquire's constructor report an
          InvalidArgumentError if the supplied database is uninitialised.
        * include/xapian/enquire.h: Document new exception case, and
          workaround if you want a search in this situation to return an
          empty result set, instead of getting an error.
        * tests/api_nodb.cc: Regression test for this fix.
        * AUTHORS: Mention Enrico Zini.

Fri Jun 08 18:33:19 BST 2007  Olly Betts <olly@survex.com>

        * NEWS: Updated.

Fri Jun 08 17:09:22 BST 2007  Olly Betts <olly@survex.com>

        * common/Makefile.mk: Distribute common/stringutils.h.

Thu Jun 07 20:44:36 BST 2007  Olly Betts <olly@survex.com>

        * tests/harness/unixcmds.cc: It appears we need to create the target
          directory for xcopy to behave as we want.

Thu Jun 07 19:34:18 BST 2007  Olly Betts <olly@survex.com>

        * tests/harness/unixcmds.cc: Fix typo to unbreak testsuite on Windows
          NT derivatives.

Thu Jun 07 19:02:36 BST 2007  Olly Betts <olly@survex.com>

        * backends/inmemory/inmemory_alltermslist.cc: Another tweak - don't
          call map::lower_bound() in the ctor at all.  Also, prevent skip_to()
          from moving backwards, since that behaviour is user-visible.

Thu Jun 07 18:36:49 BST 2007  Olly Betts <olly@survex.com>

        * common/stringutils.h: New header, providing inline functions
          begins_with() and ends_with() to check if a std::string has
          a given prefix or suffix.
        * api/valuerangeproc.cc,backends/flint/flint_alltermslist.cc,
          backends/inmemory/inmemory_alltermslist.cc,
          backends/quartz/quartz_alltermslist.cc,
          backends/quartz/quartz_metafile.cc,tests/harness/testsuite.cc:
          Make use of begins_with() and ends_with().
        * tests/harness/testsuite.cc: Tidy up guessing of srcdir.  In
          particular, fix comments to reflect that libtool won't create a
          wrapper script for the test programs on most platforms (because
          we now use --no-install when linking).
        * backends/inmemory/inmemory_alltermslist.cc: In the ctor, use
          std::map::lower_bound() to find the first term matching the
          given prefix, rather than iterating through from the start of
          the map.  Also, don't skip deleted terms here, but instead do
          that in next() - this avoids duplicating code, and the first
          operation might be skip_to() in which case we can avoid wasting
          effort.

Thu Jun 07 17:16:12 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Eliminate the QpQuery class and
          simplify various bits of the code.

Thu Jun 07 14:32:22 BST 2007  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Enhance qp_value_customrange1.

Thu Jun 07 14:31:40 BST 2007  Olly Betts <olly@survex.com>

        * docs/Makefile.am,docs/index.html,docs/valueranges.rst: Add document
          describing how to use Xapian::ValueRangeProcessor.

Thu Jun 07 14:16:01 BST 2007  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Add test of custom ValueRangeProcessor
          subclass (qp_value_customrange1).

Thu Jun 07 10:01:46 BST 2007  Olly Betts <olly@survex.com>

        * common/serialise.h,tests/harness/testsuite.h: Use XAPIAN_NORETURN()
          to mark functions which never return.

Thu Jun 07 01:28:00 BST 2007  Olly Betts <olly@survex.com>

        * NEWS: Update.

Thu Jun 07 01:02:22 BST 2007  Olly Betts <olly@survex.com>

        * examples/simpleexpand.cc: Fix off-by-one error when creating the
          fake RSet (picked up to 4 documents, not up to 5).

Wed Jun 06 17:17:05 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: Add documentation comments for
          ValueRangeProcessor and subclasses (mostly fixes bug#155, but
          I'd like to add an overview document too).

Wed Jun 06 16:04:08 BST 2007  Olly Betts <olly@survex.com>

        * tests/testdata/flint-0.9.9/: Minimal example of a Flint database
          from Xapian 0.9.9.
        * tests/api_db.cc: Use a real 0.9.9 flint database instead of faking
          it by fudging with the "iamflint" file in a current one.
          flintdatabaseformaterror1 now also checks for opening with the
          Database ctor as well as with Flint::open().  The writing test from
          flintdatabaseformaterror1 is now flintdatabaseformaterror2 which
          additionally tests opening with the WritableDatabase ctor as well as
          with Flint::open().  The old flintdatabaseformaterror2 is now
          flintdatabaseformaterror3.

Wed Jun 06 15:44:08 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_database.cc: Don't check for pre-0.6 databases
          here (since they'll be quartz format anyway - the check is just an
          overenthusiastic cut-and-paste from quartz).

Wed Jun 06 12:35:16 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * matcher/valuerangepostlist.cc: Avoid calling db->get_lastdocid()
          repeatedly in ValueRangePostList::next() - was taking 25% of the
          time for a particular test case.

Wed Jun 06 12:17:51 BST 2007  Olly Betts <olly@survex.com>

        * tests/harness/unixcmds.cc,tests/harness/unixcmds.h: Add "cp_R()"
          which does much the same as "cp -R" on Unix.

Wed Jun 06 12:12:50 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/Makefile: New stub makefile for include/xapian.
        * bin/Makefile.mk,examples/Makefile.mk,include/Makefile.mk: Distribute
          missing stub Makefile and dir_contents files.

Tue Jun 05 16:44:51 BST 2007  Olly Betts <olly@survex.com>

        * tests/harness/index_utils.cc: Back out linger line from r7758.
          Fix undefined behaviour in cases where a paragraph has <= 2
          characters.

Mon Jun 04 15:31:08 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/harness/backendmanager.cc,tests/harness/index_utils.cc:
          Revert the recent changes to the indexing code, and also the
          change from revision r7758 which was intended to fix a problem
          with eof handling on windows (which is what broke the indexing of
          etext.txt).  Then, change backendmanager.cc to test "!from.eof()"
          instead of "from" to check for eof - hopefully this will work on
          windows - if not, we can investigate further.

Mon Jun 04 13:13:29 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/harness/backendmanager.cc: Undo previous patch - only the
          patch to index_utils.cc was necessary; I mistakenly committed
          both files I'd been modifying.

Mon Jun 04 09:06:24 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/api_db.cc: Add a check to consistency1 that the full mset
          size is as big as it should be, to make sure that we notice in
          future if the indexing goes wrong again.

Mon Jun 04 08:59:22 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/harness/backendmanager.cc,tests/harness/index_utils.cc:
          Fix the indexing of the testdata, so that the "etext" example is
          properly indexed (previously, only the first line was being
          indexed, due to faulty end-of-file handling).  This only affects
          the "consistency1" test, which now runs a lot slower (but still
          passes, fortunately).

Fri Jun 01 23:47:42 BST 2007  Olly Betts <olly@survex.com>

        * examples/simpleexpand.cc: Rewrite based on new simplesearch.cc.

Fri Jun 01 00:50:00 BST 2007  Olly Betts <olly@survex.com>

        * examples/simpleindex.cc: Replacement "simpleindex" example which
          uses the TermGenerator class, which makes for a much smaller and
          simpler example.  It's also much more typical of what most users
          will want to do.

Thu May 31 23:01:47 BST 2007  Olly Betts <olly@survex.com>

        * examples/simplesearch.cc: Replacement "simplesearch" example which
          uses the QueryParser.  That makes for a simpler example, and it's
          much more typical of what most users will want to do.

Thu May 31 19:31:40 BST 2007  Olly Betts <olly@survex.com>

        * NEWS: Update.

Thu May 31 19:18:41 BST 2007  Olly Betts <olly@survex.com>

        * HACKING,configure.ac: Relax automake requirement to 1.9.2 to allow
          RPM building on RHEL 4.
        * HACKING: automake 1.10 seems to work fine with Xapian.

Thu May 31 03:04:42 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_database.cc,backends/quartz/quartz_database.cc:
          Check if the docid counter wraps and if it does throw DatabaseError
          (fixes bug#152).
        * tests/api_wrdb.cc: Add regression test (nomoredocids1).

Thu May 31 02:01:31 BST 2007  Olly Betts <olly@survex.com>

        * backends/dbfactory_remote.cc,backends/remote/remote-database.cc,
          common/progclient.h,common/remote-database.h,common/tcpclient.h,
          net/progclient.cc: Stop a non-writable remote database from calling
          dtor_called() when it is destroyed, since that causes MSG_FLUSH to
          be sent to the server (fixes bug#149).

Wed May 30 19:47:43 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/query.h: New accessor method
          Xapian::Query::Internal::get_parameter().
        * queryparser/queryparser.lemony: Multiple boolean prefixed terms
          with the same term prefix are now combined with OR before such
          groups are combined with AND.  Similarly for multiple value ranges
          on the same value (fixes bug#157).
        * include/xapian/queryparser.h: Document new handling of multiple
          boolean prefixed terms.
        * tests/queryparsertest.cc: Testcases for new handling of multiple
          boolean prefixed terms and value ranges.

Wed May 30 14:45:19 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * docs/deprecation.rst: Update comment about QueryParserError to
          point out that you'll need to compile conditionally to work with
          0.9.x

Wed May 30 14:33:29 BST 2007  Olly Betts <olly@survex.com>

        * NEWS: Update.  Put all the subheadings in the standard order used
          for previous releases.

Wed May 30 12:58:01 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/database.h,api/omdatabase.cc,backends/flint/,
          backends/inmemory/,backends/quartz/,
          backends/remote/remote-database.cc,
          common/database.h,common/remote-database.h,common/remoteprotocol.h,
          net/remoteserver.cc: Add a prefixed form of allterms_begin() and
          allterms_end(), which allows efficient iteration over only those
          terms which begin with the given prefix.  Requires bumping the
          remote protocol minor version number, but doesn't change any
          database formats.
        * queryparser/queryparser.lemony: Update the wildcard and partial
          query routines to use the prefixed form of allterms_begin().
          This fixes the performance problems noted in bug #153.
        * tests/api_db.cc: Add test_allterms6() to test the prefixed form
          of allterms iterators.

Wed May 30 12:23:25 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * backends/remote/remote-database.cc,common/remoteprotocol.h,
          docs/remote_protocol.html,net/remoteserver.cc: Apply patch from
          Olly (from bug #153) which implements minor version numbers for
          the remove protocol.  This will allow us to add new features to
          the protocol in future without forcing all clients to upgrade to
          exactly the same version as the servers.  Bump the major version
          to 30, since this is an incompatible change itself, though.

Wed May 30 12:12:14 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/query.h: Expand documentation of value range
          query constructor.

Wed May 30 10:28:39 BST 2007  Olly Betts <olly@survex.com>

        * docs/deprecation.rst: Improve entry for QueryParserError.

Wed May 30 01:30:35 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/,bin/xapian-compact.cc: Don't uncompress and
          recompress tags when compacting a database.  This speeds up
          xapian-compact rather a lot (by more than 50% in my quick test).

Tue May 29 20:58:13 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * queryparser/Makefile.mk: Fix multiple target rule for generating
          the queryparser source files in parallel builds, as described in
          HACKING, and as done for the SWIG rules in xapian-bindings.
        * queryparser/: Add queryparser_internal.lock and
          queryparser_internal.stamp to SVN ignores.

Tue May 29 18:30:25 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/queryparsertest.cc: Use TEST_STRINGS_EQUAL when comparing
          queries against their expected output, since this makes it much
          easier to see the differences.

Tue May 29 18:13:26 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * NEWS: Bring up-to-date.

Mon May 28 09:27:43 BST 2007  Olly Betts <olly@survex.com>

        * examples/copydatabase.cc: Fix to compile with GCC 2.95.

Mon May 28 01:28:23 BST 2007  Olly Betts <olly@survex.com>

        * examples/copydatabase.cc: Rewrite to take advantage of
          being able to iterate over all the documents in a database.

Sun May 27 12:20:03 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/termgenerator.h: Improve documentation comments
          for TermGenerator class.

Sun May 27 12:15:02 BST 2007  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_database.cc,bin/,examples/,net/tcpserver.cc,
          tests/api_db.cc,tests/harness/testsuite.cc,tests/harness/testutils.h,
          tests/queryparsertest.cc,tests/termgentest.cc: Make use of
          Xapian::Error::get_description(), which improves error reporting
          in a number of places.
        * tests/harness/testsuite.cc: If we get an exception with a long
          message in verbose mode, just report the whole message rather than
          reporting the truncated message followed by the whole message.
        * tests/queryparsertest.cc: Handle Xapian::QueryParserError specially
          (as we previously handled all Xapian::Error exceptions).  Other
          Xapian::Error exceptions now report the description not just the
          message.

Sun May 27 11:33:11 BST 2007  Olly Betts <olly@survex.com>

        * api/error.cc,generate-exceptions.in: Add new API method
          Xapian::Error::get_description() to allow removal of
          essentially duplicated code in many places.  Also useful for
          users for the same reason.

Sun May 27 09:56:21 BST 2007  Olly Betts <olly@survex.com>

        * generate-exceptions.in: Add vim modeline to force perl syntax
          highlighting.

Sat May 26 22:53:52 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * NEWS: Bring up-to-date.

Sat May 26 22:49:20 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * docs/deprecation.rst: Fix typo in deprecation list for the
          bindings pointed out by Thomas Waldmann.

Sat May 26 09:39:36 BST 2007  Olly Betts <olly@survex.com>

        * HACKING: Add note about reasons for avoiding std::pair<> with an STL
          class as one or both members.

Thu May 24 17:28:20 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * queryparser/Makefile.mk: $(top_builddir)/queryparser is only
          required in include path for maintainer mode, so make it so for
          neatness.

Tue May 22 11:04:04 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * queryparser/Makefile.mk: Add $(top_builddir)/queryparser to include
          path for VPATH builds, to fix a problem with depcomp (triggered
          when compiling with gcc-2.95).
        * NEWS: Keep up to date.

Mon May 21 13:38:58 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/queryparsertest.cc: Reduce the range of the test, so that
          it passes again, to let the autobuilders work and unbreak HEAD.

Mon May 21 10:26:01 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/queryparsertest.cc: Remove FIXME from test_qp_flag_partial1:
          I've checked that the results look correct.  New test
          test_qp_value_range3, to test the NumberValueRangeProcessors -
          currently fails because "10" is considered to be between "1" and
          "2".
        * include/xapian/query.h: Fix typo in documentation comment.

Mon May 21 10:09:34 BST 2007  Olly Betts <olly@survex.com>

        * tests/harness/testsuite.h: Put quotes around strings when reporting
          a failure in TEST_STRINGS_EQUAL().

Mon May 21 10:08:18 BST 2007  Olly Betts <olly@survex.com>

        * tests/internaltest.cc: New tests serialiseerror1 which checks that
          the handling of errno/error_string.
        * common/serialise.h: Make unserialise_error externally visible for
          new test.

Mon May 21 08:40:06 BST 2007  Olly Betts <olly@survex.com>

        * HACKING: Update release checklist.

Fri May 18 02:10:39 BST 2007  Olly Betts <olly@survex.com>

        * generate-exceptions.in: Fix grammatical errors in Error::get_errno()
          deprecation explanation.

Thu May 17 23:51:17 BST 2007  Olly Betts <olly@survex.com>

        * api/error.cc: Need <stdlib.h> for free() to build with GCC 4.3
          snapshot.

Thu May 17 23:11:53 BST 2007  Olly Betts <olly@survex.com>

        * NEWS: Fix line wrapping (ok, isn't wasn't final!)

Thu May 17 22:28:44 BST 2007  Olly Betts <olly@survex.com>

        * NEWS: Final update before release.

Thu May 17 19:10:27 BST 2007  Olly Betts <olly@survex.com>

        * configure.ac: Bump version to 1.0.0 and update LIBRARY_VERSION_INFO.

Thu May 17 19:10:11 BST 2007  Olly Betts <olly@survex.com>

        * NEWS: Minor wording tweak.

Thu May 17 19:06:34 BST 2007  Olly Betts <olly@survex.com>

        * docs/Makefile.am: Run rst2html with --strict --verbose options to
          reject .rst files with problems.
        * docs/deprecation.rst: Add more entries gleaned from the NEWS file.

Thu May 17 18:30:01 BST 2007  Olly Betts <olly@survex.com>

        * NEWS: Update with fixes from Jenny's proof-reading and a few other
          tweaks.

Thu May 17 18:27:53 BST 2007  Olly Betts <olly@survex.com>

        * AUTHORS: Update.

Thu May 17 18:25:39 BST 2007  Olly Betts <olly@survex.com>

        * PLATFORMS: Updates from the tinderbox.

Thu May 17 18:08:13 BST 2007  Olly Betts <olly@survex.com>

        * common/safesysstat.h: Need the 2 argument mkdir() wrapper for Mingw
          too.  Define S_ISDIR() and S_ISREG() if they aren't already defined
          rather than conditional on _MSC_VER.

Thu May 17 17:58:43 BST 2007  Olly Betts <olly@survex.com>

        * docs/admin_notes.rst: "flint-check" -> "xapian-check".

Thu May 17 17:46:36 BST 2007  Olly Betts <olly@survex.com>

        * NEWS: Update for Xapian 1.0.0.

Thu May 17 17:41:15 BST 2007  Olly Betts <olly@survex.com>

        * docs/: Update documentation for 1.0.0; add new document describing
          new term generation strategy as implemented by TermGenerator class;
          link in "lost" documents to the index page.

Thu May 17 03:54:36 BST 2007  Olly Betts <olly@survex.com>

        * exception_data.pm: Fix to work with Perl 5.6.

Thu May 17 01:20:16 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * backends/multi/multi_alltermslist.cc: Check that iterators are
          not at_end() before calling skip_to() on them.

Thu May 17 00:49:03 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_btreebase.cc,backends/flint/flint_table.cc,
          backends/quartz/btree.cc,common/Makefile.mk,
          common/msvc_posix_wrapper.cc,common/msvc_posix_wrapper.h: Use
          msvc_posix_wrapper.h functions for all __WIN32__ builds, not just
          for MSVC.

Wed May 16 23:55:46 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * api/omdatabase.cc: Fix return type in debug macro in
          replace_document().

Wed May 16 23:45:20 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/apitest.cc: Add collfreq and allterms tests to the tests
          for the remote and remotetcp backends.  They all pass.

Wed May 16 15:11:00 BST 2007  Olly Betts <olly@survex.com>

        * configure.ac: Need to try -zdll for mingw as well.

Wed May 16 14:45:23 BST 2007  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Add two more testcases.

Wed May 16 14:32:46 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony,tests/queryparsertest.cc: Fix
          double-free on invalid range query.

Wed May 16 10:08:02 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/queryparsertest.cc: Add some more test cases to the value
          range processor.  These currently fail with a SIGSEGV message.

Wed May 16 02:22:17 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/termgenerator_internal.cc: Fix handling of stemming of
          prefixed terms.
        * tests/termgentest.cc: Fix testcases.

Wed May 16 01:54:25 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/termgentest.cc: Add a test for parsing of capitalised words
          with a prefix, which currently fails.

Wed May 16 01:09:39 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/termgenerator.h,queryparser/termgenerator.cc: Add
          a method to get the current document from the term generator.
          Helps avoid users having to pass around a structure encapsulating
          the generator and the document assigned to it.

Wed May 16 00:50:07 BST 2007  Olly Betts <olly@survex.com>

        * docs/deprecation.rst: Add <xapian/output.h>.

Tue May 15 22:46:39 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/termgentest.cc: Use resize(0) instead of clear(), for g++2.95

Tue May 15 20:25:07 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * net/remoteconnection.cc: Add a comment noting why we test
          __STDC_SECURE_LIB__ even though its an undocumented macro.

Tue May 15 20:14:51 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/termgentest.cc: Add several more tests - some converted
          from the query tests, some more initial tests, and some number
          tests.

Tue May 15 18:31:21 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/termgenerator_internal.cc: Revert previous change - we
          need to generate Zibm and Zpc from text `I.B.M. P.C.' or else a
          search for `ibm pc' won't match.

Tue May 15 18:22:44 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/termgenerator_internal.cc: Sort out stemming of
          initials.

Tue May 15 18:04:17 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/termgentest.cc: Add some more tests, and rework the array
          of tests so that there's just a single string holding any options
          we want to set for the following tests.

Tue May 15 16:49:17 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/Makefile.am,tests/termgentest.cc: Add new test file, for
          testing the term generator.  Only has a single test so far.

Tue May 15 16:20:20 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/unicode.h: Make single parameter ctor explicit.

Tue May 15 16:00:24 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/termgenerator_internal.cc: Add special handling for
          acronyms/initialisms, so I.B.M -> term ibm, etc.

Tue May 15 14:07:27 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/termgenerator.h,queryparser/termgenerator.cc: Add
          a set_termpos() method, too.

Tue May 15 13:54:34 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/database.h: Document the issue of the monotonic
          docid counter wrapping around.

Tue May 15 10:58:37 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/termgenerator.h,queryparser/termgenerator.cc: Add
          get_termpos() method to get the current value of the termpos.
          Makes it easier to integrate with different term generators.

Tue May 15 03:44:50 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony,queryparser/termgenerator_internal.cc:
          Include '.', ',', and a few other characters in terms if they are
          between two decimal digits.
        * queryparser/termgenerator_internal.cc: Don't stem terms which start
          with a number.
        * tests/queryparsertest.cc: Update results for real world queries to
          match new results (better in every case but one!)

Tue May 15 01:24:08 BST 2007  Olly Betts <olly@survex.com>

        * HACKING: Fix a few typos.  Add "feisty" to the list of debs to
          build.

Tue May 15 00:51:35 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * HACKING: Document that the bootstrap script should be run from
          srcdir, and that the generated configure can be run from a
          different builddir.  Tidy up a few other lines.

Mon May 14 23:52:33 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony,queryparser/termgenerator_internal.cc:
          Expand check_infix to include some of characters Unicode does.
        * tests/queryparsertest.cc: Update the single test query which now
          parses differently.

Mon May 14 23:42:53 BST 2007  Olly Betts <olly@survex.com>

        * tests/harness/testsuite.h: New macro TEST_STRINGS_EQUAL() which
          displays the strings on separate lines so the differences can
          be clearly seen.
        * tests/queryparsertest.cc: Use TEST_STRINGS_EQUAL().

Mon May 14 20:14:17 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Make the "uses string sort" warning in
          the documentation for the methods which enable sorting by value
          more prominent, and fix several miscellaneous typos.

Mon May 14 19:28:21 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/dir_contents: Update to mention TermGenerator.

Mon May 14 19:12:12 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Fix handling of WILDCARD_TERM and
          PARTIAL_TERM for prefixed terms.
        * tests/queryparsertest.cc: Add test coverage for this.

Mon May 14 18:02:22 BST 2007  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Add more testcases for wildcarded queries.

Mon May 14 17:39:30 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Fix handling of partial queries.

Mon May 14 16:49:46 BST 2007  Olly Betts <olly@survex.com>

        * net/remoteconnection.cc: closesocket() seems to work equally as
          well as CloseHandle() but it's what we use elsewhere and Charlie
          thinks it's a better choice here too so use that instead.  Rename
          the wrapper call from close_fd_or_handle() to close_fd_or_socket().
          And mark close_fd_or_socket() as "inline" under UNIX, since it
          should always be inlined.

Mon May 14 15:30:13 BST 2007  Olly Betts <olly@survex.com>

        * tests/api_anydb.cc: Add FIXME about moving wildquery1.

Mon May 14 15:21:59 BST 2007  Olly Betts <olly@survex.com>

        * bin/xapian-progsrv.cc: Improve comments.

Mon May 14 11:29:14 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * net/remoteconnection.cc: Deal with invalid parameter exceptions
          on windows when closing file descriptors or handles.

Mon May 14 05:04:16 BST 2007  Olly Betts <olly@survex.com>

        * tests/api_anydb.cc: Fix wildquery1 to work with the new term
          stemming scheme.

Sun May 13 19:15:17 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/unicode.h: Count control characters as whitespace
          (which is certainly what we want for TAB, CR, LF, and FF).

Sun May 13 17:50:19 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/unicode.h: Add CONNECTOR_PUNCTUATION to is_wordchar()
          - this category includes '_' and characters which fulfil similar
          roles.
        * queryparser/queryparser.lemony,queryparser/termgenerator_internal.cc:
          No longer need to special case '_'.
        * queryparser/queryparser.lemony: Test for Unicode "whitespace" rather
          than just ASCII.

Sun May 13 04:43:37 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Normalise Unicode characters used
          for apostrophe to ASCII apostrophe.

Sun May 13 03:56:17 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/unicode.h,unicode/tclUniData.cc: Update Unicode
          routines to use Unicode 5.0.0 and support characters outside the BMP
          (so we now support all Unicode characters in the latest version of
          the standard).
        * tests/api_unicode.cc: Add test unicode1 which performs some simple
          tests of the categorisation function, include one which tests for a
          character added in Unicode 5.0.0.

Sat May 12 06:01:50 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Update comment.

Sat May 12 04:23:01 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Improve description of Term class.

Sat May 12 04:16:47 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Update to implement the new stemming
          scheme.
        * tests/queryparsertest.cc: Update testcases, and check that the new
          parses are all reasonable.

Sat May 12 04:03:55 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/unicode.h: Xapian::Unicode::get_category() now checks
          for characters outside the BMP, and assumes they're of category
          OTHER_LETTER.  Remove BMP check from all functions which use
          Xapian::Unicode::get_category().

Sat May 12 04:02:52 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: Fix typo in comment.

Fri May 11 05:45:38 BST 2007  Olly Betts <olly@survex.com>

        * net/remoteserver.cc: Make "Server is read-only" be of type
          InvalidOperationError not NetworkError.  This is arguably more
          appropriate anyway, but in particular it avoids a worrying looking
          (but harmless) warning when a read-only connection is closed, due
          dtor_called() calling flush() on a read-only database.

Fri May 11 01:35:31 BST 2007  Olly Betts <olly@survex.com>

        * docs/Makefile.am: Disable more documentation rules if
          MAINTAINER_NO_DOCS is true.

Thu May 10 23:01:13 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * net/remoteconnection.cc: Remove definition of unused macro
          XAPIAN_MSVC_INVALID_PARAMETER_HANDLER.

Thu May 10 19:24:23 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Try quoting qualified identifiers in
          #pragma deprecated.

Thu May 10 15:58:37 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Give full scope in '#pragma deprecated'
          to try to avoid false positives.

Thu May 10 14:53:08 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Use '#pragma deprecated' to work around
          MSVC stupidity (you get a warning for deprecating a declaration).

Thu May 10 13:42:49 BST 2007  Olly Betts <olly@survex.com>

        * configure.ac: Some GCC 3.x versions produce bogus warnings, so only
          automatically enable -Werror on --enable-maintainer-mode under GCC
          if we're using GCC >= 4.0.  Most developers will be using GCC 4.x
          soon if they aren't already anyway.
        * HACKING: Update documentation in line with the above.  Mention that
          we also enable -Werror for Intel's C++ compiler.

Thu May 10 05:06:22 BST 2007  Olly Betts <olly@survex.com>

        * configure.ac: Detect __WIN32__ by running the preprocessor so we
          don't get confused by building mingw in a cygwin environment.

Thu May 10 04:52:21 BST 2007  Olly Betts <olly@survex.com>

        * net/tcpserver.cc: Exit with EX_UNAVAILABLE if the mutex tells us
          xapian-tcpsrv is already running on this port.

Thu May 10 04:44:10 BST 2007  Olly Betts <olly@survex.com>

        * common/Makefile.mk,common/safe.cc,common/safeunistd.h: Pulling
          in safewindows.h from safeunistd.h causes clashes with NEAR
          in the QueryParser, so use a helper function to call Sleep
          and just call that from the header.

Thu May 10 04:36:19 BST 2007  Olly Betts <olly@survex.com>

        * net/tcpserver.cc: Fix compilation error.

Thu May 10 04:26:31 BST 2007  Olly Betts <olly@survex.com>

        * common/tcpserver.h,net/tcpserver.cc: Just pass the mutex to
          get_listening_socket() by reference to avoid MSVC warnings.

Thu May 10 04:19:13 BST 2007  Olly Betts <olly@survex.com>

        * common/safeunistd.h: Use Sleep() instead of _sleep() as the latter
          gives deprecation warnings.  Sadly that means that safeunistd.h
          now has to pull in safewindows.h.

Thu May 10 04:07:53 BST 2007  Olly Betts <olly@survex.com>

        * common/tcpserver.h,net/tcpserver.cc: Keep track of the mutex so
          we can release it right after we close the listening socket.
          Throw an error if we fail to get the mutex to avoid a possible
          race condition (we might end up with the socket listening but
          without the mutex locked).  Always call closesocket() on the
          listening socket under __WIN32__ to ensure resources are released.

Thu May 10 02:48:31 BST 2007  Olly Betts <olly@survex.com>

        * net/tcpserver.cc: Use a mutex under Cygwin and WIN32 to allow use to
          use Microsoft's broken SO_REUSEADDR on our listening socket, but
          avoid being able to run two copies of xapian-tcpsrv on the same port
          at once (tweaked patch from MarkH).
        * net/tcpserver.cc: Don't try to set SO_EXCLUSIVEADDRUSE if a previous
          setsockopt() call failed as we might stomp on the error code.

Thu May 10 02:15:20 BST 2007  Olly Betts <olly@survex.com>

        * Makefile.am,bin/Makefile.mk,configure.ac,docs/Makefile.am,
          examples/Makefile.mk: Add new Automake conditional
          "MAINTAINER_NO_DOCS" to allow use to disable references to built
          documentation in maintainer builds if --disable-documentation is
          specified.  This allows Mark's buildbot to work without installing
          so many tools, some of which aren't packaged for Cygwin.

Thu May 10 02:03:44 BST 2007  Olly Betts <olly@survex.com>

        * Makefile.am: Build rules for running generate-exceptions should be
          controlled by MAINTAINER_MODE not DOCUMENTATION_RULES, part II.

Thu May 10 01:49:42 BST 2007  Olly Betts <olly@survex.com>

        * docs/deprecation.rst: Add Error::get_type().

Thu May 10 01:25:37 BST 2007  Olly Betts <olly@survex.com>

        * api/error.cc,generate-exceptions.in: Add new constructors which
          allow error_string to be set directly, for use by the Xapian::Error
          unserialising code.
        * generate-exceptions.in: Xapian::Error::get_type() now returns
          const char * not std::string.
        * backends/quartz/quartz_database.cc: Fix code to handle changed
          return type of Xapian::Error::get_type().
        * net/serialise.cc: Include error_string in the serialisation.
        * common/remoteprotocol.h,docs/remote_protocol.html: Bump protocol
          version to 29 because of change in Xapian::Error serialisation.

Wed May 09 14:42:33 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Renaming match_nothing_
          member of QpQuery to match_nothing.  Comment out unused
          QpQuery::get_description().  Add FIXME comment about
          apparently redundant logic (now's not really the time
          to be fiddling with such things).

Wed May 09 14:27:02 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Update to match new TermGenerator
          class.  '_' is now a term character, not a phrase generator.  We
          only keep a suffix which has 3 or fewer characters, and we no longer
          count '-' as a suffix character.
        * tests/queryparsertest.cc: Update test cases to match new behaviour.
          In almost every case the new rules give a better result.

Wed May 09 14:15:38 BST 2007  Olly Betts <olly@survex.com>

        * languages/compiler/space.c: Add sanity check to b_to_s(),
          highlighted by MSVC warning.

Wed May 09 14:06:24 BST 2007  Olly Betts <olly@survex.com>

        * tests/btreetest.cc: Return filesize as off_t to avoid MSVC warning
          about truncating from 64 to 32 bits (the filesize will never be
          more than a few K here, so this is essentially a cosmetic issue).

Wed May 09 04:04:03 BST 2007  Olly Betts <olly@survex.com>

        * common/tcpserver.h,net/tcpserver.cc: Always starting the server in a
          new thread in "one-shot" mode is trickier than it looked, so revert
          that change for now.  Always call closesocket() on our sockets under
          __WIN32__.

Wed May 09 01:53:43 BST 2007  Olly Betts <olly@survex.com>

        * common/tcpserver.h,net/tcpserver.cc: Make UNIX signal handling
          functions and WIN32 CrtlHandler static.  TcpServer::run() is now
          generic, calling an OS-specific TcpServer::run_once().  Now we
          always run the server in a new thread in "one-shot" mode, which
          gives better code coverage in apitest as it runs more like a normal
          xapian-tcpsrv would.  CtrlHandler now lets the OS handle the event
          if it doesn't have a socket to close, or if closesocket() fails.

Wed May 09 01:42:33 BST 2007  Olly Betts <olly@survex.com>

        * net/remoteconnection.cc: DWORD is unsigned, so received can't be
          negative - tidy up the ReadFile() loop taking this into account.

Wed May 09 01:28:48 BST 2007  Olly Betts <olly@survex.com>

        * net/remoteconnection.cc: ReadFile() doesn't set errno, so remove
          test for EINTR which is just a hangover from the UNIX code.

Tue May 08 23:50:33 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/termgenerator_internal.cc: Treat '_' as a word character
          which seems to be the correct thing to do in general.  Generate
          unstemmed terms with positional information for all words without a
          prefix, and stemmed terms without positional information for
          non-stopwords with a 'Z' prefix.  This means we can implement exact
          phrase search, and prefixing stemmed forms (rather than unstemmed
          as Omega < 1.0 does) means fewer terms with the prefix.  Only
          stemming non-stopwords cuts a significant amount of the database
          size in my tests.

Tue May 08 18:22:30 BST 2007  Olly Betts <olly@survex.com>

        * net/tcpserver.cc: Fix remaining use of handle_one_request in
          __WIN32__-specific code.

Tue May 08 18:10:12 BST 2007  Olly Betts <olly@survex.com>

        * api/error.cc: Really fix it...

Tue May 08 17:38:04 BST 2007  Olly Betts <olly@survex.com>

        * api/error.cc: Fix another paste-o!

Tue May 08 17:28:29 BST 2007  Olly Betts <olly@survex.com>

        * api/error.cc: Remove bogus statement in __WIN32__ case left over
          from cut-and-paste.

Tue May 08 17:10:53 BST 2007  Olly Betts <olly@survex.com>

        * common/tcpserver.h,net/tcpserver.cc: Rename
          TcpServer::handle_one_request() to
          TcpServer::handle_one_connection() (to make it clearer that it
          handles a connection rather than a single MSG/REPLY exchange), and
          use it in UNIX builds too to avoid duplicating its code.  Catch
          NetworkTimeoutError here and report it if we're in verbose mode.
        * net/remoteserver.cc: If we catch NetworkTimeoutError then try to
          propagate it only if we can send it right away, then rethrow it
          to close the connection and let the caller log it.  If we catch
          any other NetworkError then just rethrow it.

Tue May 08 16:52:50 BST 2007  Olly Betts <olly@survex.com>

        * common/noreturn.h: Add missing '#endif'.

Tue May 08 16:19:05 BST 2007  Olly Betts <olly@survex.com>

        * common/Makefile.mk,common/noreturn.h: New header which defines
          XAPIAN_NORETURN() to allow functions which don't return to be
          marked as such so the compiler can take this into account when
          generating code.
        * api/error.cc,tests/harness/backendmanager.cc: Remove any trailing
          "\r\n" from the output of FormatMessage().

Tue May 08 16:16:55 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/deprecated.h: Use `__attribute__((__deprecated__))'
          instead of `__attribute__((deprecated))' so we're even robust
          against some clown doing `#define deprecated foo'.

Tue May 08 16:15:30 BST 2007  Olly Betts <olly@survex.com>

        * bin/quartzcheck.cc,tests/harness/backendmanager.cc: In these files
          we have to disable XAPIAN_DEPRECATED() since we need to be able to
          use Quartz::open() - move this to the start of the #include block
          to avoid problems with any intermediate header implicitly including
          <xapian.h>.

Tue May 08 14:51:37 BST 2007  Olly Betts <olly@survex.com>

        * HACKING: Move section on "Configure Options" to a more logical spot
          just before "Makefile Portability".  Add section on how to use
          XAPIAN_DEPRECATED() noting the issue with GCC 3.3.5 not allowing
          it to be used on an inline method definition.
        * include/xapian/deprecated.h: Add pointers to HACKING and
          docs/deprecated.rst.

Tue May 08 13:57:17 BST 2007  Olly Betts <olly@survex.com>

        * generate-exceptions.in: We can't use XAPIAN_DEPRECATED() on
          a function definition with GCC 3.3.5, so use it on a declaration
          and then define inline but out of the class.

Tue May 08 13:45:48 BST 2007  Olly Betts <olly@survex.com>

        * net/tcpserver.cc: We must call closesocket() (instead of just
          close()) under __WIN32__ or else the socket remains in the
          CLOSE_WAIT state.

Tue May 08 12:17:19 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * docs/deprecation.rst: Add Error::get_errno() to the deprecation
          list for the bindings, too.

Tue May 08 10:09:27 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * docs/deprecation.rst: Change the xapian_version functions to be
          marked for removal in 1.1.0, and also note them in the bindings
          section.

Tue May 08 04:27:37 BST 2007  Olly Betts <olly@survex.com>

        * backends/remote/remote-database.cc,common/remote-database.h: The
          timeout parameter to RemoteDatabase wasn't being used, instead the
          client would wait indefinitely for the server to respond.

Tue May 08 04:16:45 BST 2007  Olly Betts <olly@survex.com>

        * generate-exceptions.in: Initialise error_string in Xapian::Error
          ctor.

Tue May 08 03:48:47 BST 2007  Olly Betts <olly@survex.com>

        * api/error.cc: Fix compilation when HAVE_HSTRERROR isn't defined.

Tue May 08 02:35:04 BST 2007  Olly Betts <olly@survex.com>

        * api/error.cc,bin/xapian-tcpsrv.cc,examples/delve.cc,
          generate-exceptions.in,tests/harness/testsuite.cc: Error subclasses
          now store the error_string in the class, converting it from the
          error code in my_errno lazily.  Also, get_error_string() now returns
          const char *.

Tue May 08 01:34:56 BST 2007  Olly Betts <olly@survex.com>

        * Makefile.am: Build rules for running generate-exceptions should be
          controlled by MAINTAINER_MODE not DOCUMENTATION_RULES.

Tue May 08 01:23:22 BST 2007  Olly Betts <olly@survex.com>

        * bin/xapian-tcpsrv.cc,docs/deprecation.rst,generate-exceptions.in,
          net/tcpserver.cc,tests/harness/testsuite.cc: Deprecate
          Error::get_errno() in favour of Error::get_error_string().  We can't
          pass errno values from remote server to client as they aren't
          portable and the server and client may be running on entirely
          different platforms!
        * generate-exceptions.in: Mark as generated with @configure_input@.

Tue May 08 01:20:43 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_database.cc,backends/flint/flint_lock.h: Make
          FlintLock's dtor release the lock (if held) which avoids the need
          for any special handling in FlintDatabase.

Mon May 07 21:15:33 BST 2007  Olly Betts <olly@survex.com>

        * tests/harness/unixcmds.cc: Use O_BINARY when opening a file to
          "touch" it.

Mon May 07 17:28:43 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * backends/flint/flint_database.cc: Add try{}catch(...){} block to
          ensure that lock is released if an exception occurs in the
          FlintDatabase() constructor.
        * tests/api_db.cc: Add regression test for releasing lock on error
          in constructor.

Mon May 07 11:10:33 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * HACKING: Update section on multiple output rules to detail the
          workaround described in the automake manual.

Mon May 07 10:03:50 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * backends/flint/flint_database.cc,backends/flint/flint_database.h,
          backends/flint/flint_version.cc,backends/quartz/,exception_data.pm,
          include/xapian/database.h,tests/api_db.cc: Throw
          DatabaseVersionError instead of DatabaseOpeningError when database
          version is unsupported.  This is a new error class, which is a
          subclass of DatabaseOpeningError, so most existing scripts
          shouldn't need changing, but makes it easy for application
          writers to determine whether a database needs upgrading or
          whether the problem is something else.  Should fix #144.

Mon May 07 09:22:01 BST 2007  Olly Betts <olly@survex.com>

        * net/progclient.cc: Under __WIN32__, use byte mode on pipes because
          message mode fails for message > 256 bytes, and use "overlapped"
          mode so we don't block waiting for a reply so that timeouts work.
          (Patch from Mark Hammond).

Mon May 07 03:03:10 BST 2007  Olly Betts <olly@survex.com>

        * tests/api_anydb.cc,tests/apitest.cc,tests/harness/: Now
          TEST_EQUAL_DOUBLE() should work everywhere.  Move the helper
          function out of the header.  Use TEST_EQUAL_DOUBLE() instead
          of doubles_are_equal_enough() and weights_are_equal_enough()
          which do much the same job.

Mon May 07 01:13:29 BST 2007  Olly Betts <olly@survex.com>

        * tests/harness/testsuite.h: Report extra info to try to work out why
          MSVC build is failing expandweights1.

Mon May 07 00:26:59 BST 2007  Olly Betts <olly@survex.com>

        * tests/harness/testsuite.h: Another tweak to TEST_EQUAL_DOUBLE().

Sun May 06 22:30:26 BST 2007  Olly Betts <olly@survex.com>

        * docs/quickstart.html: Remove reference to DA databases since the
          muscat36 backend has been removed.  Update to recommend GCC 3.3
          or later, as we do elsewhere.  Change references to "quartz" to
          say "flint", or remove them.

Sun May 06 16:02:28 BST 2007  Olly Betts <olly@survex.com>

        * configure.ac: Set version to mythical 0.9.99.

Sun May 06 15:06:01 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/api_db.cc: Add test_flintdatabaseformaterror1() which
          checks what happens when an old-format flint database is opened.
          It generates the old-format database by making a fake "iamflint"
          file containing an old version number.

Sun May 06 04:00:39 BST 2007  Olly Betts <olly@survex.com>

        * expand/ortermlist.cc: Remove incorrect assertion check in
          OrTermList::next(), replacing it with anexplanatory comment.

Sun May 06 02:42:30 BST 2007  Olly Betts <olly@survex.com>

        * net/remoteconnection.cc: Fix typo.

Sun May 06 02:39:23 BST 2007  Olly Betts <olly@survex.com>

        * net/remoteconnection.cc: Aha!  Richard's patch failed to compile
          because stdlib.h was in "#ifndef __WIN32__" not "#ifdef __WIN32__".

Sun May 06 02:27:18 BST 2007  Olly Betts <olly@survex.com>

        * net/remoteconnection.cc: Protect _set_invalid_parameter_handler, etc
          by _MSC_VER >= 1400 (MSVC 2005) and __STDC_SECURE_LIB__ (undocumented
          but cribbed from the Python sources).  Refactor into a handy class
          (MSVCIgnoreInvalidParameter) which just needs to be instantiated in
          the scope where you want to allow invalid parameters to be passed.

Sun May 06 01:42:06 BST 2007  Olly Betts <olly@survex.com>

        * net/remoteconnection.cc: Rework use of _invalid_parameter_handler to
          only apply when _MSC_VER is defined, to fix the mingw build.

Sat May 05 22:30:01 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * net/remoteconnection.cc: Under __WIN32__, add an invalid
          parameter handler which ignores the error and use it for the
          calls to _get_osfhandle() which are sometimes expected to fail.
          Requires stdlib.h according to msdn, so also #include that.

Sat May 05 20:43:29 BST 2007  Olly Betts <olly@survex.com>

        * bin/xapian-progsrv.cc,bin/xapian-tcpsrv.cc,common/remoteconnection.h,
          common/remoteserver.h,common/tcpserver.h,net/remoteserver.cc,
          net/tcpserver.cc: Open a fresh copy of the database(s) on each
          connection to a xapian-tcpsrv rather than relying on being able to
          share a database across fork() or between threads (which we don't
          promise will work).  Largely based on patch from Mark Hammond.
          Fixes some of bug#141 and all of bug#142.

Sat May 05 02:19:39 BST 2007  Olly Betts <olly@survex.com>

        * api/omdatabase.cc: Use RETURN() not return in methods with debug
          logging.

Sat May 05 02:19:11 BST 2007  Olly Betts <olly@survex.com>

        * bin/xapian-compact.cc: Fix typo in comment.

Fri May 04 23:59:54 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_version.cc: Remove the "u" suffix from
          FLINT_VERSION as it's confusing in the "wrong format version"
          error message and doesn't seem needed in the code.

Fri May 04 23:56:32 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * backends/flint/: Revert patch from revision 8426 (except for the
          bit which removed the unused prototypes), to avoid the
          possibility that it introduces bugs into the code just before
          1.0.0.  The patch is attached to bug #143 for later reference.

Fri May 04 23:50:39 BST 2007  Olly Betts <olly@survex.com>

        * examples/delve.cc: Report the error string if we catch Xapian::Error
          while trying to open a database.

Fri May 04 22:50:54 BST 2007  Olly Betts <olly@survex.com>

        * docs/intro_ir.html: Fix a few typos; elaborate on a few points.

Fri May 04 20:07:44 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * queryparser/termgenerator_internal.cc: Fix bug in termgenerator -
          arguments to add_posting were the wrong way round.

Fri May 04 20:00:40 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/termgenerator_internal.cc: Limit term length, handle
          infix and suffix characters, and convert apostrophes to ASCII
          representation.

Fri May 04 19:47:43 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/unicode.h: Fill in remaining missing documentation
          comments.

Fri May 04 19:30:56 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/termgenerator.h: Add convenience version of
          index_text() and index_text_without_positions() which take a
          std::string instead of a Utf8Iterator.

Fri May 04 17:11:11 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * unicode/utf8itor.cc: Fix segfault bug in Utf8Iterator::operator*().
          If this was called when the iterator had reached end, invalid
          memory was accessed because p was compared to end, p will always
          be set to NULL when the iterator reaches the end.  No regression
          test, but the smoketest tests I'm implementing in the bindings
          will exercise this code.

Fri May 04 16:29:51 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/unicode.h: Add documentation comments to
          Utf8Iterator, so I don't have to work out how it works again.

Fri May 04 14:55:32 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/unicode.h: Add assign() function which takes a
          string, for symmetry with the constructors.  Also makes
          implementing the bindings easier.

Fri May 04 13:04:52 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * include/Makefile.mk: Add termgenerator.h to distribution
          tarballs.

Fri May 04 03:41:56 BST 2007  Olly Betts <olly@survex.com>

        * tests/harness/testsuite.h: Test against pow(10, -DBL_DIG) rather
          than DBL_EPSILON.  DBL_EPSILON is a little bit smaller, but we use
          DBL_DIG for displaying the numbers and it looks stupid to say two
          numbers which are displayed identically should be nearly the same!

Fri May 04 03:33:51 BST 2007  Olly Betts <olly@survex.com>

        * HACKING: Fix reference to --enable-maitainer-mode and documentation
          rebuilding.

Fri May 04 03:32:57 BST 2007  Olly Betts <olly@survex.com>

        * configure.ac: Fix now erroneous references to tools "required in
          maintainer mode" to "required to build documentation".

Fri May 04 01:49:05 BST 2007  Olly Betts <olly@survex.com>

        * HACKING: Document --enable-documentation.

Fri May 04 01:38:44 BST 2007  Olly Betts <olly@survex.com>

        * Makefile.am,bin/Makefile.mk,configure.ac,docs/Makefile.am,
          examples/Makefile.mk: Add new configure option
          "--enable-documentation" which enables the make rules to rebuild the
          documentation.  By default this follows the setting of
          "--enable-maintainer-mode" (so giving much the same behaviour as
          currently), but the documentation rules can now be controlled
          independently.  Also, if documentation isn't being built, the
          configure probes for tools required to rebuild it are no longer run
          which should shorten configure time a bit for end-users building
          releases.

Thu May 03 22:07:39 BST 2007  Olly Betts <olly@survex.com>

        * common/remoteserver.h: Remove unused default values for
          active_timeout_ and idle_timeout_ parameters.  Fix repeated typo
          in documentation comments ('millisrconds' -> 'milliseconds').

Thu May 03 15:05:24 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian.h,include/xapian/termgenerator.h,queryparser/:
          Initial cut of TermGenerator class.

Thu May 03 15:04:09 BST 2007  Olly Betts <olly@survex.com>

        * generate-exceptions.in: Hide the internal constructors of generated
          error classes in the doxygen-generated API docs.

Thu May 03 04:37:51 BST 2007  Olly Betts <olly@survex.com>

        * expand/ortermlist.cc,expand/ortermlist.h: Fix compilation error when
          --enable-assertions is used.

Thu May 03 03:57:42 BST 2007  Olly Betts <olly@survex.com>

        * common/safeunistd.h: Provide a POSIX-compatible sleep() function.
        * common/utils.h: Remove inferior POSIX-compatible sleep() function.

Thu May 03 03:17:02 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/: Mark all @internal member variables and functions
          which aren't private with @private so doxygen doesn't document them.

Thu May 03 02:33:09 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/: Mark DocIDWrapper, RefCntBase, RefCntPtr,
          TermNameWrapper, and TermPosWrapper as "@internal" so that they don't
          show up in the doxygen-generated API documentation.  In particular,
          this makes the class collaboration diagrams much more useful.
        * include/xapian/errorhandler.h: Declare the class in namespace Xapian
          rather than with namespace Xapian:: since the latter seems to
          confuse doxygen.

Thu May 03 02:31:33 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/unicode.h: Fix wrapping of comment.

Thu May 03 00:05:23 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * backends/flint/: Remove unused (and unimplemented) declarations
          of begin_transaction_(), commit_transaction_() and
          cancel_transaction_() from FlintWritableDatabase class.  Tidy up
          handling of metainfo (total_length and lastdocid) to avoid
          repeatedly parsing the special record, and make it easier to
          store additional metainfo in future.
          Also, remove code which ensures that there is always a special
          record - this was added in revision 5459 when the special record
          was stored in the record table, so that the number of documents
          in the database could always be calculated by subtracting 1 from
          the number of entries in the record table.  Now that the special
          record is stored in the postlist table, this is no longer
          necessary.

Wed May 02 17:56:39 BST 2007  Olly Betts <olly@survex.com>

        * backends/dbfactory_remote.cc,include/xapian/dbfactory.h:
          Remote::open_writable() now defaults to no (active) timeout.  The
          connection timeouts for Remote::open() and Remote::open_writable()
          now default to 10 seconds rather than defaulting to the same as
          the active timeout (which defaults to 10 seconds).

Wed May 02 16:00:22 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * common/safeunistd.h,tests/harness/backendmanager.cc: Fix
          compilation on windows - safeunistd.h was undefining ssize_t
          and thus overriding the definition in config.h, and include
          safewindows.h for backendmanager.cc

Wed May 02 15:34:33 BST 2007  Olly Betts <olly@survex.com>

        * common/safeunistd.h: Don't define ssize_t here for MSVC - do it in
          config.h instead.  This avoids pulling in <windows.h> which will
          hopefully fix another macro redefinition warning under MSVC.

Wed May 02 15:20:56 BST 2007  Olly Betts <olly@survex.com>

        * common/safewindows.h: Define NOGDI before including windows.h to
          prevent it from defining a macro called "ERROR" which collides with
          the generated queryparser sources, causing a warning in the MSVC
          build.

Wed May 02 14:38:33 BST 2007  Olly Betts <olly@survex.com>

        * common/termlist.h: Forward declare ExpandStats as "class" not
          "struct" for consistency with the actual declaration.

Wed May 02 14:30:41 BST 2007  Olly Betts <olly@survex.com>

        * configure.ac: Try '-lzlib' for zlib, which mingw reportedly needs.

Wed May 02 14:21:40 BST 2007  Olly Betts <olly@survex.com>

        * common/remoteconnection.h,include/xapian/dbfactory.h,
          net/remoteserver.cc: A timeout of `0' in the remote backend now
          means "no timeout" (code patch from Mark Hammond).

Wed May 02 04:17:28 BST 2007  Olly Betts <olly@survex.com>

        * Makefile.am,api/,backends/alltermslist.cc,backends/flint/,
          backends/inmemory/inmemory_database.cc,
          backends/inmemory/inmemory_database.h,
          backends/multi/multi_termlist.cc,backends/multi/multi_termlist.h,
          backends/quartz/,backends/remote/net_termlist.cc,
          backends/remote/net_termlist.h,backends/remote/remote-database.cc,
          common/,expand/,matcher/: Split expand functionality out of
          "matcher" subdirectory into new "expand" subdirectory since it's
          not really connected to query matching and the matcher subdirectory
          is one of the largest.  Rewrite OrTermList, eliminating
          BranchTermList entirely.  Alter expand to pass in an object (of
          class Xapian::Internal::ExpandWeight) which accumulates statistics
          instead of returning OmExpandBits objects which we then have to
          merge (and eliminating the need for LeafTermList entirely).  Query
          expansion for multiple databases should now give results more like
          that for a single database with the same documents (if
          USE_EXACT_TERMFREQ is used, the results should be the same).  Debug
          logging from expand is now all of type EXPAND (some was of types
          MATCHER and WTCALC before).

Wed May 02 03:35:17 BST 2007  Olly Betts <olly@survex.com>

        * docs/deprecation.rst: Add deprecation info for Omega too.

Wed May 02 00:24:13 BST 2007  Olly Betts <olly@survex.com>

        * tests/api_anydb.cc: Add test expandweights1 as a regression test for
          the previous commit.
        * tests/harness/testsuite.h: Set the precision for TEST_EQUAL_DOUBLE
          so we don't claim two numbers to be different yet display them the
          same!

Tue May 01 23:27:10 BST 2007  Olly Betts <olly@survex.com>

        * backends/remote/net_termlist.cc,backends/remote/remote-database.cc,
          common/remoteprotocol.h,docs/remote_protocol.html,
          net/remoteserver.cc: Fix handling of the document length in the
          termlist for the remote backend.

Tue May 01 23:17:28 BST 2007  Olly Betts <olly@survex.com>

        * tests/api_db.cc: Several tests were marked as "local db only" for
          historical reasons.  Enable them for remote backends too.
        * backends/remote/net_postlist.cc,tests/api_db.cc: Fix a bug in
          NetworkPostList::skip_to() which apitest's postlist4 reveals.

Tue May 01 21:00:26 BST 2007  Olly Betts <olly@survex.com>

        * api/omtermlistiterator.cc,api/omvalueiterator.cc,
          backends/multi/multi_alltermslist.cc: Add explicit
          `#include "omassert.h"'.
        * backends/multi/multi_alltermslist.cc: Remove all explicit
          std:: qualifiers and add `using namespace std;'.

Tue May 01 20:56:10 BST 2007  Olly Betts <olly@survex.com>

        * common/multialltermslist.h: Add explicit std:: qualifiers for
          string, for consistency with std::vector in this header.

Tue May 01 15:19:53 BST 2007  Olly Betts <olly@survex.com>

        * matcher/branchpostlist.h: Don't check for NULL pointer before
          calling delete.

Tue May 01 02:29:10 BST 2007  Olly Betts <olly@survex.com>

        * common/document.h,common/documentterm.h,common/multialltermslist.h,
          matcher/rset.cc,queryparser/queryparser.cc: Add some explicit
          includes for headers which were previously only implicitly included
          (in preparation for a forthcoming change which removes some of the
          implicit inclusions).

Tue May 01 01:20:53 BST 2007  Olly Betts <olly@survex.com>

        * backends/database.cc,bin/quartzcheck.cc,docs/deprecation.rst,
          include/xapian/dbfactory.h,tests/api_db.cc,
          tests/harness/backendmanager.cc,tests/quartztest.cc: Deprecate
          the Quartz backend and related functions and utilities.

Fri Apr 27 12:56:13 BST 2007  Olly Betts <olly@survex.com>

        * tests/Makefile.am: Pass '-no-install' when linking test programs,
          since we don't ever install them.  This means libtool doesn't need
          to generate shell script wrappers on most platforms.  Also prefer
          '$(ldflags)' to '@ldflags' as the former allows the user to override
          when they run 'make' which is sometimes useful.

Fri Apr 27 03:44:15 BST 2007  Olly Betts <olly@survex.com>

        * docs/intro_ir.html: Add links for the various researchers mentioned
          by name.

Thu Apr 26 17:57:10 BST 2007  Olly Betts <olly@survex.com>

        * docs/bm25.html,docs/intro_ir.html: Assorted documentation
          improvements.

Thu Apr 26 15:43:24 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * docs/deprecation.rst: Update with changes to Python bindings.

Thu Apr 26 06:01:45 BST 2007  Olly Betts <olly@survex.com>

        * common/expandweight.h,matcher/expandweight.cc: Better handling of
          expand with multiple databases.

Wed Apr 25 18:35:13 BST 2007  Olly Betts <olly@survex.com>

        * api/omenquire.cc: Delete nonsensical comment.

Wed Apr 25 17:41:58 BST 2007  Olly Betts <olly@survex.com>

        * docs/deprecation.rst: Use the collective term "features" rather than
          overloading the term "functions".  Casual readers may miss the
          definition altogether, and even dedicated readers will probably
          already have a strong mental image of what a "function" is in the
          context of an API.

Wed Apr 25 14:52:11 BST 2007  Olly Betts <olly@survex.com>

        * docs/intro_ir.html: Improve the look of the formulae.

Wed Apr 25 03:56:18 BST 2007  Olly Betts <olly@survex.com>

        * common/omqueryinternal.h,languages/generate-allsnowballheaders.in,
          matcher/msetcmp.h,queryparser/queryparser_internal.h: Add missing
          multiple inclusion guards.

Wed Apr 25 03:12:50 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser_internal.h: Don't include <config.h> in
          a header file.

Wed Apr 25 03:05:09 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.cc: Initialise `internal' member inline
          for consistency with other classes.

Tue Apr 24 04:55:45 BST 2007  Olly Betts <olly@survex.com>

        * configure.ac: Add missing ')' to the error messages when zlib stuff
          isn't found.

Tue Apr 24 02:56:57 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_database.h,
          backends/inmemory/inmemory_database.h,
          backends/quartz/quartz_database.h: MSVC doesn't handle using
          properly.

Tue Apr 24 01:25:34 BST 2007  Olly Betts <olly@survex.com>

        * matcher/bm25weight.cc,matcher/expandweight.cc: Fix typo in comments:
          'releveant' -> 'relevant'.

Mon Apr 23 23:00:23 BST 2007  Olly Betts <olly@survex.com>

        * api/omenquire.cc,docs/deprecation.rst,include/xapian/enquire.h,
          tests/api_anydb.cc,tests/api_db.cc: Deprecate
          Enquire::include_query_terms and Enquire::use_exact_termfreq in
          favour of capitalised versions Enquire::INCLUDE_QUERY_TERMS and
          Enquire::USE_EXACT_TERMFREQ (for consistency with our other
          manifest constants, and general C/C++ conventions).

Mon Apr 23 18:14:20 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_table.cc,backends/quartz/btree.cc: Support for
          VLAs in C++ is a GCC extension, so eliminate the need for them.

Mon Apr 23 16:32:07 BST 2007  Olly Betts <olly@survex.com>

        * docs/: svn:ignore deprecation.html. svn:ignore apidoc.pdf and
          sourcedoc.pdf rather than *.pdf.

Mon Apr 23 16:08:53 BST 2007  Olly Betts <olly@survex.com>

        * tests/quartztest.cc: Resolve FIXME about MapTermList.

Mon Apr 23 16:06:38 BST 2007  Olly Betts <olly@survex.com>

        * api/valuerangeproc.cc,backends/flint/flint_check.cc,
          backends/flint/flint_table.cc,backends/quartz/btree.cc,
          backends/quartz/btreecheck.cc,bin/xapian-tcpsrv.cc,examples/,
          languages/steminternal.h,tests/harness/testsuite.cc,
          tests/harness/testsuite.h,tests/stemtest.cc: Fix compilation with
          GCC 4.3 snapshot.

Mon Apr 23 15:20:55 BST 2007  Olly Betts <olly@survex.com>

        * common/safeunistd.h: Comment tweaks.

Mon Apr 23 11:54:14 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * common/safeunistd.h: Include <process.h> on windows to get
          getpid() instead of using a #define.

Mon Apr 23 11:30:56 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * api/maptermlist.h: Fix typo in error message.

Mon Apr 23 11:08:01 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * api/maptermlist.h: Throw an InvalidOperationError() if
          MapTermList::get_termfreq() is called, instead of simply having
          Assert(false): this gets called if a term iterator is accessed
          for a freshly created Document, and the get_termfreq() method is
          called on it.  The error message is specific to this situation,
          since this is the only place in which MapTermList is used.

Mon Apr 23 03:22:54 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_database.cc,backends/flint/flint_lock.cc,
          backends/flint/flint_lock.h: Report why we failed to get a write
          lock on a flint database.

Mon Apr 23 01:44:13 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_version.cc: Update the flint format version
          since older flint versions can't read compressed tags.

Mon Apr 23 01:25:25 BST 2007  Olly Betts <olly@survex.com>

        * configure.ac: Probe for zlib.h and -lz.
        * backends/flint/,bin/xapian-compact.cc: Use zlib to compress tags
          in the record and termlist tables.
        * tests/Makefile.am,tests/runtest.in,tests/valgrind.supp: Add a
          valgrind suppression for zlib (a known issue - for speed zlib
          deliberately reads past the end of the buffer in some cases).

Sun Apr 22 04:24:06 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/: Remove documentation for blocksize_ parameters
          which were removed some time ago.

Sun Apr 22 00:02:13 BST 2007  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Track the minimum weight required to be
          considered for the MSet separately from the minimum item which
          could be considered.  Trying to combine the two is causing subtle
          bugs (fixed bug#86).

Sun Apr 22 00:00:39 BST 2007  Olly Betts <olly@survex.com>

        * HACKING: Add notes about the files Omega uses from xapian-core.

Sat Apr 21 23:49:58 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.cc: Clear the stoplist when we parse a new
          query.
        * tests/queryparsertest.cc: Add regression test.

Sat Apr 21 23:27:33 BST 2007  Olly Betts <olly@survex.com>

        * Makefile.am,common/Makefile.mk,getopt/: Move getopt.cc from getopt/
          to common/.  Having a whole directory for a single source file
          is a bit extravagant, and putting it in common/ allows us to share a
          copy with omega easily.

Sat Apr 21 21:38:20 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_database.cc,backends/quartz/quartz_database.cc,
          backends/quartz/quartz_log.cc,common/omdebug.h,common/safeunistd.h,
          tests/harness/testsuite.cc: safeunistd.h now defines getpid() to
          GetCurrentProcessId() for MSVC, and we now include this where we
          want to use getpid() rather than conditionally defining getpid().

Sat Apr 21 04:13:12 BST 2007  Olly Betts <olly@survex.com>

        * configure.ac: Explicitly set AM_CXXFLAGS to an empty value to start
          with to avoid issues if it's set in the environment.  Cache the
          results of the test to see if the C++ compiler actually works, and
          in the XAPIAN_TEST_LINKER_FLAG macro.
        * configure.ac, include/xapian/visibility.h: Add --disable-visibility
          option to configure to completely disable use of -fvisibility.
        * INSTALL: Document all --enable-backend-* options explicitly.
          Document how to disable use of -fvisibility and
          -Bsymbolic-functions should you want/need to.  Improve wording in
          a few places.

Fri Apr 20 19:20:23 BST 2007  Olly Betts <olly@survex.com>

        * HACKING,configure.ac: Revert to requiring autoconf 2.59 so that the
          .spec file for building RPMs can run `autoreconf' to work around a
          libtool bug.

Fri Apr 20 18:12:51 BST 2007  Olly Betts <olly@survex.com>

        * docs/deprecation.rst: Document return type of ExpandDecider::Apply()
          and MatchDecider::Apply() in C# is now bool instead of int.

Fri Apr 20 18:01:18 BST 2007  Olly Betts <olly@survex.com>

        * xapian.spec.in: Package xapian-check and its man page.

Fri Apr 20 14:38:00 BST 2007  Olly Betts <olly@survex.com>

        * docs/deprecation.rst: Note changed return type of
          ExpandDecider::operator() and MatchDecider::operator().

Fri Apr 20 14:28:39 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: MatchDecider::operator() now returns
          `bool' not `int'.  Remove declaraction of ExpandDecider.
        * include/xapian/expanddecider.h: Move declaration of ExpandDecider
          to here.  ExpandDecider::operator() now returns `bool' not `int'.
          ExpandDeciderAnd now names parameters `first' and `second' and
          documents the order in which they are applied (useful if you have
          an expensive and a cheap test).  ExpandDeciderAnd can now take
          parameters by reference instead of pointer.
        * api/Makefile.mk,include/xapian/enquire.h,api/omenquire.cc,
          api/expanddecider.cc: New home for definitions of virtual methods of
          ExpandDecider and subclasses.
        * api/omenquire.cc,common/expand.h,matcher/expand.cc: Eliminate
          internal class ExpandDeciderAlways - just test pointer against NULL
          instead.
        * tests/api_anydb.cc,tests/api_db.cc: Update for change in return
          type from MatchDecider::operator() and ExpandDecider::operator().

Fri Apr 20 10:35:09 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * HACKING: Add note on rules with multiple targets.

Thu Apr 19 19:02:42 BST 2007  Olly Betts <olly@survex.com>

        * PLATFORMS: Remove reports for 0.7.* and demote reports for 0.8.* to
          "older reports" status.  All SF compilefarm machines are now "no
          longer available", so update the symbols and key to reflect this.

Thu Apr 19 13:27:59 BST 2007  Olly Betts <olly@survex.com>

        * HACKING: Fix vim magic comment.  Add space after URL to stop
          '::' getting glued to it.

Thu Apr 19 11:36:19 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * HACKING: Turn syntax highlighting off, since it's broken for the
          restructured text in this file anyway.

Thu Apr 19 03:26:28 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_database.h,
          backends/inmemory/inmemory_database.h,
          backends/quartz/quartz_database.h:
          The trick of importing base class methods with 'using' breaks
          compilation with GCC 2.95 which doesn't issue the warning we're
          trying to avoid, so add a preprocessor check,

Thu Apr 19 03:20:31 BST 2007  Olly Betts <olly@survex.com>

        * common/progclient.h,net/progclient.cc: Always use pid_t not int for
          holding a process id.

Thu Apr 19 01:08:57 BST 2007  Olly Betts <olly@survex.com>

        * docs/deprecation.rst: Update '#callable' footnote.

Thu Apr 19 00:07:02 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_database.h,
          backends/inmemory/inmemory_database.h,
          backends/quartz/quartz_database.h: Add using declarations to
          subclasses of Xapian::Database::Internal which don't override the
          term forms of delete_document() and replace_document() to prevent
          compiler warnings about these methods being hidden.

Wed Apr 18 23:22:29 BST 2007  Olly Betts <olly@survex.com>

        * net/remoteconnection.cc: Remove code which can't actually be
          reached, which fixes a warning in the mingw build.

Wed Apr 18 23:07:45 BST 2007  Olly Betts <olly@survex.com>

        * api/omenquire.cc,common/multimatch.h,common/omenquireinternal.h,
          include/xapian/enquire.h,matcher/Makefile.mk,
          matcher/biaspostlist.h,matcher/multimatch.cc,net/remoteserver.cc:
          Remove Enquire::set_bias().
        * docs/deprecation.rst: Update wrt Enquire::set_bias().  Fix typo.

Wed Apr 18 18:51:42 BST 2007  Olly Betts <olly@survex.com>

        * configure.ac: Require autoconf 2.60 or newer.  Drop docdir
          compatibility hack which is no longer required.
        * HACKING: Document requirement.  Fix typo (or out-of-date info) for
          automake requirement (we require 1.9.5 not 1.8.5).

Wed Apr 18 18:27:35 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * docs/deprecation.rst: Note the deprecation of get_description()
          methods for Python.

Wed Apr 18 14:57:03 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * HACKING: Minimal changes to make this into valid restructured
          text.

Wed Apr 18 11:27:57 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * configure.ac: Require autoconf version 2.59c or later:
          AC_TYPE_SSIZE_T isn't present in earlier versions.

Wed Apr 18 11:08:13 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * docs/deprecation.rst: Fix table formatting error

Wed Apr 18 01:32:48 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * docs/deprecation.rst: Update with methods which have been removed
          from the bindings.

Wed Apr 18 00:24:00 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * docs/deprecation.rst: Move methods which have just been removed
          from the list of deprecated methods to the list of removed
          methods.

Tue Apr 17 23:58:53 BST 2007  Olly Betts <olly@survex.com>

        * api/omdocument.cc,api/omenquire.cc,api/omquery.cc,include/xapian/,
          languages/stem.cc,tests/api_db.cc: Remove methods we're deprecating
          for 1.0.

Tue Apr 17 23:50:06 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * docs/deprecation.rst: Note that is_empty() is not deprecated for
          PHP after all!

Tue Apr 17 22:17:41 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: GCC 2.95 doesn't support
          std::string::clear(), so use resize(0) instead.
        * HACKING: Document the above issue in a reworked section on C++
          STL features.  Update the section on safeXXX.h headers.

Tue Apr 17 22:07:39 BST 2007  Olly Betts <olly@survex.com>

        * common/safesysselect.h: Correct typo in #error message.

Tue Apr 17 19:18:00 BST 2007  Olly Betts <olly@survex.com>

        * configure.ac: Factor out code to test for a linker flag into macro
          XAPIAN_TEST_LINKER_FLAG.  With g++, use XAPIAN_TEST_LINKER_FLAG to
          see if -Bsymbolic-functions is supported (it requires a very recent
          version of ld currently).  This option reduces the size and load
          time of the shared library by resolving references within the
          library when it's created.  Currently untested on a box which
          supports -Bsymbolic-functions.

Tue Apr 17 12:01:46 BST 2007  Olly Betts <olly@survex.com>

        * unicode/utf8itor.cc: Tidy up code layout.

Tue Apr 17 02:06:39 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/unicode.h,unicode/utf8itor.cc: Make nonascii_to_utf8
          a public method.  Make get_case_type(), get_category(), and
          get_delta() internal, but provide a public get_category() function
          which takes a Unicode character value.

Tue Apr 17 02:05:32 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/Makefile.mk: Distribute flint_check.h.

Tue Apr 17 01:47:05 BST 2007  Olly Betts <olly@survex.com>

        * tests/api_posdb.cc: The remote backend now supports all database
          operations, so merge localpositionaldb_tests into
          positionaldb_tests.
        * tests/: Remove the trivial separate api_XXXdb.h headers, some of
          which were out-of-step with their respective .cc sources.  Instead
          just keep the array external declarations in apitest.h.
        * tests/apitest.h,tests/api_transdb.cc: Move TESTCASE and
          END_OF_TESTCASES macros into header.
        * tests/api_db.cc: Remove test collapsekey2 - it's only relevant for
          the Muscat 3.6 backend, so it's unused now that has been removed.
        * tests/: Add unicode tests, adapted from Omega's utftest.

Tue Apr 17 00:14:16 BST 2007  Olly Betts <olly@survex.com>

        * Makefile.am,include/Makefile.mk,include/xapian.h,
          include/xapian/unicode.h,queryparser/,unicode/: Expose Unicode and
          UTF-8 related classes and functions as a public API.

Mon Apr 16 16:06:22 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * docs/deprecation.rst: Bring document fully up-to-date, listing
          all the planned deprecations for the bindings.  Also, include the
          full upgrade notes in the listings, so they can be preserved
          accessibly for posterity.  I even retrieved the notes for the
          already-removed QueryParser::set_stemming_options from 0.9.10.

Mon Apr 16 11:36:18 BST 2007  Olly Betts <olly@survex.com>

        * net/tcpclient.cc: Call WSAGetLastError() instead of socket_errno()
          when we want to compare the result against WSAEWOULDBLOCK.

Mon Apr 16 11:19:21 BST 2007  Olly Betts <olly@survex.com>

        * common/remoteconnection.h,common/safewinsock2.h: Need to negate the
          POSIX error codes we define in terms of winsock ones.

Fri Apr 13 16:24:29 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * docs/doxygen_api_conf.in: Turn on XML output, so that we can use
          it to populate docstrings for the python bindings.

Fri Apr 13 11:38:39 BST 2007  Olly Betts <olly@survex.com>

        * backends/Makefile.mk,backends/alltermslist.cc,common/alltermslist.h:
          Split AllTermsList into header and code.  AllTermsList::get_wdf()
          now throws InvalidOperationError() rather than asserting in a
          debug build and returning 0 in a non-debug build.
        * backends/Makefile.mk: Correct list for "how to add a new backend".

Fri Apr 13 10:17:46 BST 2007  Olly Betts <olly@survex.com>

        * api/version.cc: Simpler and cleaner fix - the prototypes for the
          version functions had moved from xapian/version.h to xapian.h so we
          were including the wrong header and not seeing the prototypes with
          visibility markup!

Fri Apr 13 09:29:17 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * api/version.cc: Add visibility annotations to definitions of
          version functions: the annotation apparently needs to be applied
          to the definition as well as the declaration or it is ignored:
          possibly the annotation on the declaration is ignored anyway,
          but it should be kept there for documentation purposes in any
          case.  Fixes link error with bindings under gcc 4.1.

Fri Apr 13 01:39:57 BST 2007  Olly Betts <olly@survex.com>

        * common/remoteconnection.h,net/progclient.cc,net/remoteconnection.cc:
          GetLastError() has an unsigned return type, so need to cast to int
          before negating.

Fri Apr 13 01:39:20 BST 2007  Olly Betts <olly@survex.com>

        * docs/deprecation.rst: Add xapian_version_string() and friends.

Fri Apr 13 01:24:53 BST 2007  Olly Betts <olly@survex.com>

        * tests/api_nodb.cc: More 'tout' output.

Fri Apr 13 01:19:20 BST 2007  Olly Betts <olly@survex.com>

        * api/Makefile.mk,api/error.cc,bin/xapian-tcpsrv.cc,
          common/remoteconnection.h,common/safeerrno.h,configure.ac,
          generate-exceptions.in,net/,tests/harness/testsuite.cc: On
          MS Windows, if Xapian::Error::my_errno is the result of
          GetLastError() or WSAGetLastError(), negate it (the error codes can
          overlap with errno codes).  On UNIX, put h_errno negated in my_errno
          if a call to gethostbyname() fails.  Add
          Xapian::Error::get_error_string() method which decodes my_errno
          in the appropriate way to give a string, and use this instead of
          strerror(error.get_errno()).

Fri Apr 13 01:17:08 BST 2007  Olly Betts <olly@survex.com>

        * languages/generate-allsnowballheaders.in: win32 makefiles don't keep
          the snowball header list in sorted order like we do, so fix that
          here.  Also allow for '\' as path separator.

Fri Apr 13 00:58:09 BST 2007  Olly Betts <olly@survex.com>

        * tests/api_nodb.cc: Add "tout" debug output to stemlangs1.

Thu Apr 12 21:37:04 BST 2007  Olly Betts <olly@survex.com>

        * tests/Makefile.am: Add support for QUIET= and QUIET=y arguments to
          "make".

Thu Apr 12 21:35:50 BST 2007  Olly Betts <olly@survex.com>

        * docs/Makefile.am: Use a substitution for RSTHTML (like we do for the
          snowball generated sources).

Thu Apr 12 20:41:18 BST 2007  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc: Add validate_query() calls to the "term" and
          "value range" constructors.

Thu Apr 12 20:00:14 BST 2007  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc,include/xapian/query.h: Only validate a
          Query object when it's either constructed or changed to avoid O(n^2)
          behaviour in some cases.

Thu Apr 12 19:59:13 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Fix nasty function casting for argument to
          qsort - it's (at least technically) not portable.

Thu Apr 12 17:47:47 BST 2007  Olly Betts <olly@survex.com>

        * configure.ac: Fix GCC version test to only turn on
          -fvisibility=hidden for GCC >= 4.

Thu Apr 12 16:47:56 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_btreebase.h,backends/flint/flint_cursor.h,
          backends/flint/flint_table.h,backends/quartz/,common/,configure.ac,
          generate-exceptions.in,include/Makefile.mk,include/xapian.h,
          include/xapian/: Add visibility annotations to the library, which
          when using GCC >= 4 reduces the size and load time of the library
          and increase the runtime speed a little.  Under x86_64, the stripped
          library is 6.4% smaller (1.5% smaller with debug information).

Thu Apr 12 16:45:57 BST 2007  Olly Betts <olly@survex.com>

        * api/version.cc: Add missing "#include <config.h>".

Thu Apr 12 13:41:52 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/quartztest.cc: Put removedir() function back for now to fix
          build.

Thu Apr 12 13:02:30 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * net/progclient.cc: Some (but not all) versions of MSVC need
          "#include <io.h>" to get the _open_osfhandle identifier.  Add it.

Thu Apr 12 12:00:34 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * backends/remote/net_postlist.cc: Include config.h

Thu Apr 12 11:54:50 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * backends/multi/multi_termlist.cc: Include config.h to get system
          specific defines.
        * common/safesysstat.h: Change signature of mkdir to take mode_t
          instead of int, to match unixy definition.

Thu Apr 12 10:19:49 BST 2007  Olly Betts <olly@survex.com>

        * configure.ac: Probe for mode_t.

Thu Apr 12 01:10:18 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_positionlist.cc: Move BitReader class inside
          Xapian namespace to avoid namespace pollution.
        * bin/xapian-check.cc: Include BitReader::decode_interpolative()
          - previously we were relying on using the copy from the library.

Thu Apr 12 01:02:53 BST 2007  Olly Betts <olly@survex.com>

        * common/safesysstat.h: Under __WIN32__, provide a POSIX-like mkdir()
          wrapper which takes 2 arguments, but ignores the file mode, so we
          can just call mkdir with a mode argument everywhere.
        * common/utils.h: Remove special case handling of mkdir.
        * bin/xapian-compact.cc: Replace uses of om_tostring() with a call
          to sprintf.  No longer need to `#include "utils.h"'.

Thu Apr 12 00:44:18 BST 2007  Olly Betts <olly@survex.com>

        * api/,backends/inmemory/inmemory_positionlist.cc,common/,matcher/,
          net/remoteconnection.cc,net/serialise.cc: omdebug.h only includes
          omassert.h for the trivial "STRINGIZE" macro, so just duplicate
          that rather than pulling in an extra header everywhere.  Then fix
          up the two dozen files which were relying on this implicit
          inclusion!

Thu Apr 12 00:10:48 BST 2007  Olly Betts <olly@survex.com>

        * tests/harness/testsuite.cc: Tweak #ifdef XAPIAN_DEBUG_VERBOSE to
          include DEBUGLINE() for clarity (no change in behaviour).

Wed Apr 11 23:36:10 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Fix regression introduced by
          Richard's change, and restructure to make the handling for each case
          more obvious.
        * tests/queryparsertest.cc: Add a couple of testcases for the
          regression.
        * queryparser/queryparser_internal.h: Remove reference to "bool" in
          comment which no longer applies.

Wed Apr 11 21:25:36 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * queryparser/queryparser_internal.h: Refactor boolean "flag"
          member in BoolAndString class into an enum of possible prefix
          types.  Rename "flag" to "type".  Rename BoolAndString to
          PrefixInfo.
        * queryparser/queryparser.cc: Change add_prefix() and
          add_boolean_prefix() to match changes to queryparser_internal.h
        * queryparser/queryparser.lemony: Refactor handling of prefixed
          terms to match queryparser_internal, and to use a switch()
          structure: no functional changes, but code is considerably more
          readable (I hope).

Wed Apr 11 21:13:31 BST 2007  Olly Betts <olly@survex.com>

        * tests/api_db.cc,tests/quartztest.cc: Rework quartztest's "open1"
          into API level tests for quartz and flint in apitest.

Wed Apr 11 14:01:31 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * docs/deprecation.rst: Remove documentation of the "#define
          XAPIAN_DEPRECATED(D) D" hack, and clarify documentation on how
          long we support deprecated functions.

Wed Apr 11 09:25:55 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * docs/Makefile.am,docs/deprecation.rst: Add initial draft of
          deprecation policy document, with list of all API items currently
          marked for deprecation.
        * HACKING: Add note about keeping deprecation.rst up-to-date when
          making a release.

Tue Apr 10 19:07:24 BST 2007  Olly Betts <olly@survex.com>

        * configure.ac: --enable-quiet now uses AS_HELP_STRING.

Tue Apr 10 18:53:32 BST 2007  Olly Betts <olly@survex.com>

        * tests/harness/index_utils.cc: Return the empty document we already
          have rather than constructing another.

Tue Apr 10 17:45:11 BST 2007  Olly Betts <olly@survex.com>

        * net/remoteconnection.cc: Fix typo in comment.

Tue Apr 10 17:35:57 BST 2007  Olly Betts <olly@survex.com>

        * tests/harness/backendmanager.cc: Fix "if" to "is" typo in 3
          comments.

Tue Apr 10 16:46:09 BST 2007  Olly Betts <olly@survex.com>

        * tests/harness/backendmanager.cc: Define XAPIAN_TCPSRV and
          XAPIAN_PROGSRV under UNIX too, and use them everywhere.

Tue Apr 10 16:33:48 BST 2007  Olly Betts <olly@survex.com>

        * tests/harness/backendmanager.h: Remove "BackendManager::" from
          method declaration.

Tue Apr 10 15:35:50 BST 2007  Olly Betts <olly@survex.com>

        * configure.ac: Define HAVE_SOCKETPAIR if we have socketpair().

Tue Apr 10 15:29:49 BST 2007  Olly Betts <olly@survex.com>

        * net/progclient.cc: Fix #endif placement so it compiles on UNIX.

Tue Apr 10 14:18:06 BST 2007  Olly Betts <olly@survex.com>

        * net/remoteconnection.cc: Remove debugging code.

Tue Apr 10 12:57:51 BST 2007  Olly Betts <olly@survex.com>

        * backends/dbfactory_remote.cc,common/progclient.h,net/progclient.cc,
          net/remoteconnection.cc,tests/api_db.cc,tests/apitest.cc,
          tests/harness/backendmanager.cc,tests/harness/backendmanager.h:
          Add support for the "prog" variant of the remote backend (patch
          started by me, finished by Mark Hammond).

Tue Apr 10 12:23:46 BST 2007  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc,backends/inmemory/inmemory_database.cc,
          backends/quartz/quartz_alldocspostlist.cc,matcher/localmatch.cc,
          matcher/multimatch.cc,tests/harness/testutils.cc: Prefer
          `CONTAINER.empty()' to `CONTAINER.size() == 0'.

Tue Apr 10 12:09:45 BST 2007  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc: Tighten up an assertion.

Mon Apr 09 20:56:23 BST 2007  Olly Betts <olly@survex.com>

        * configure.ac,tests/harness/backendmanager.cc,tests/runsrv.in,
          tests/runtest.in: Run the remote backend server using new "runsrv"
          script instead of "runtest".  This doesn't echo anything to stdout,
          and if valgrind is in use, runs the remote server under
          "--tool=none" which is much quicker than using valgrind's default
          memcheck tool (we need to run the remote server under valgrind
          because valgrind's emulation of excess FP precision isn't exact and
          otherwise we get tests failing because of these differences).

Mon Apr 09 20:24:30 BST 2007  Olly Betts <olly@survex.com>

        * tests/api_anydb.cc,tests/api_nodb.cc: Move test poscollapse2 to the
          "no database" category, since it doesn't require a database!

Mon Apr 09 18:04:40 BST 2007  Olly Betts <olly@survex.com>

        * docs/remote_protocol.html: Correct documentation - MSG_REOPEN gives
          a response of REPLY_UPDATE.

Mon Apr 09 15:08:44 BST 2007  Olly Betts <olly@survex.com>

        * ./: svn:eol-style not svn:eolstyle.

Mon Apr 09 15:00:30 BST 2007  Olly Betts <olly@survex.com>

        * ./: Set svn:eolstyle to native for most text files.

Mon Apr 09 14:50:40 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_database.cc: Delete the corresponding entry
          (if any) from doclens in delete_document().  Add assertion to
          add_document_() that the corresponding entry in doclens isn't
          already set, but in a non-debug build overwrite any existing
          entry as that's more likely to be correct.
        * backends/quartz/quartz_database.cc: Ditto.

Mon Apr 09 14:08:55 BST 2007  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_database.cc: Just assign to doclens[did].

Mon Apr 09 14:06:58 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_database.cc: Just assign to doclens[did].

Mon Apr 09 11:29:22 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * backends/quartz/quartz_database.cc: Apply same change to quartz.

Mon Apr 09 11:24:31 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * backends/flint/flint_database.cc: Fix bug with document lengths
          in replace document.  Was using doclens.insert() to set the new
          document length, but this has no effect if the entry already
          exists.  This fixes replacedoc3 for flint (and thus for remote
          databases), but the same change is needed for quartz.
        * backends/flint/flint_postlist.cc: Add some debugging lines.

Mon Apr 09 01:43:02 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * backends/flint/: Add some more debugging messages to help track
          down the problem with document lengths shown up by previous
          change.

Mon Apr 09 01:40:34 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/api_wrdb.cc: Add asserts to check that the value of
          get_doclength() on the database and on the posting list are
          correct.  Currently fails with the value from the posting list
          for the document which has been replaced (or sooner if assertions
          are turned on).

Sun Apr 08 23:24:20 BST 2007  Olly Betts <olly@survex.com>

        * Makefile.am,configure.ac: `./configure --enable-quiet' allows you to
          specify at configure time to pass `--quiet' to libtool.  Now you can
          override this at make-time by using `make QUIET=' (to turn off
          `--quiet') or `make QUIET=y' (to turn on `--quiet').

Sun Apr 08 23:23:50 BST 2007  Olly Betts <olly@survex.com>

        * HACKING: Mention AssertEqParanoid and AssertNeParanoid.

Sun Apr 08 22:45:45 BST 2007  Olly Betts <olly@survex.com>

        * common/omassert.h: Add AssertEqParanoid and AssertNeParanoid macros.
        * backends/flint/flint_table.cc,backends/inmemory/inmemory_database.cc,
          backends/multi/multi_postlist.cc,backends/quartz/btree.cc: Use them.
        * backends/multi/multi_postlist.cc: Add extra assertions to
          MultiPostList::get_doclength().

Sun Apr 08 22:16:11 BST 2007  Olly Betts <olly@survex.com>

        * configure.ac: Fix typos: `AC_CHECK_SSIZE_T' -> `AC_TYPE_SSIZE_T';
          `AC_CHECK_PID_T' -> `AC_TYPE_PID_T'.

Sun Apr 08 22:04:54 BST 2007  Olly Betts <olly@survex.com>

        * HACKING: Snapshots and releases are now generated with autoconf 2.61.

Sun Apr 08 21:42:03 BST 2007  Olly Betts <olly@survex.com>

        * configure.ac: Use AC_CHECK_SSIZE_T instead of our own test.  Add
          AC_CHECK_PID_T for any platforms which don't have `pid_t'.
        * net/tcpserver.cc: Use `pid_t' instead of `int'.
        * common/progclient.h,net/progclient.cc: Cleaner rewritten version of
          progclient.h.

Sun Apr 08 19:59:43 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_lock.cc: If kill() fails, don't bother calling
          waitpid().

Sun Apr 08 19:41:11 BST 2007  Olly Betts <olly@survex.com>

        * net/remoteconnection.cc: Don't explicitly pass "0" for errno.

Sun Apr 08 16:58:58 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * queryparser/queryparser.lt: Fix warnings in debugging builds on
          gcc 4.1 due to comparison of signed and unsigned types.  Also,
          use the ParseTokenName function instead of explicitly doing a
          range check each time an entry is looked up in yyTokenName, and
          add a ParseRuleName function for looking up things in yyRuleName,
          and use it similarly.

Sun Apr 08 15:55:42 BST 2007  Olly Betts <olly@survex.com>

        * configure.ac: Fix lingering references to enable_debug.

Sun Apr 08 15:48:13 BST 2007  Olly Betts <olly@survex.com>

        * tests/api_anydb.cc,tests/api_wrdb.cc: Remove hacks to automatically
          SKIP tests which failed because of lack of support for some features
          by the remote backend.

Sun Apr 08 15:14:11 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony,queryparser/queryparser.lt: More
          tweaks.

Sun Apr 08 15:04:49 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * queryparser/queryparser.lt: Always include "omdebug.h", and put
          one of the pieces of debugging code in #ifdef
          XAPIAN_DEBUG_VERBOSE, to fix non-logging message builds.

Sun Apr 08 14:23:06 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * docs/remote_protocol.html: Update for protocol version 27 by
          adding documentation for MSG_POSTLIST and replies.  Also, fix a
          typo.

Sun Apr 08 13:50:20 BST 2007  Olly Betts <olly@survex.com>

        * common/omdebug.h,queryparser/queryparser.lemony,
          queryparser/queryparser.lt: Hook the debug tracing in the lemon
          generated parser into Xapian's debug logging framework.

Sun Apr 08 12:35:29 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * backends/remote/,common/remote-database.h,common/remoteprotocol.h,
          common/remoteserver.h,net/remoteserver.cc: Implement postlists
          for the remote database.  Increases
          XAPIAN_REMOTE_PROTOCOL_VERSION to 27.

Sun Apr 08 12:33:02 BST 2007  Olly Betts <olly@survex.com>

        * HACKING,INSTALL,configure.ac: Rename --enable-debug* - conflating the
          options to "turn on assertions" and "turn on logging" still confuses
          me to the extent I need to read the documentation every time I use
          them.  `--enable-debug[=partial]' become `--enable-assertions';
          `--enable-debug-verbose' becomes `--enable-log' and
          `--enable-debug=full' becomes `--enable-assertions --enable-log'.
          For now the old options give an error telling you the new
          equivalent.

Sun Apr 08 10:45:40 BST 2007  Olly Betts <olly@survex.com>

        * configure.ac: Eliminate use_quiet - just use enable_quiet instead.

Fri Apr 06 19:06:07 BST 2007  Olly Betts <olly@survex.com>

        * net/progclient.cc: Close stderr of the spawned backend program.

Fri Apr 06 18:59:24 BST 2007  Olly Betts <olly@survex.com>

        * net/progclient.cc: msecs_timeout_ -> msecs_timeout.

Fri Apr 06 18:12:36 BST 2007  Olly Betts <olly@survex.com>

        * net/remoteconnection.cc: Fix comment grammar.

Fri Apr 06 18:10:31 BST 2007  Olly Betts <olly@survex.com>

        * net/remoteconnection.cc: Deal with the exceptional case first.

Fri Apr 06 17:51:20 BST 2007  Olly Betts <olly@survex.com>

        * net/remoteconnection.cc: Use string::append(ptr, size) in preference
          to string::append(ptr, ptr + size).

Fri Apr 06 11:45:39 BST 2007  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc,backends/flint/flint_database.cc,
          backends/flint/flint_database.h,backends/flint/flint_postlist.cc,
          backends/inmemory/inmemory_database.cc,
          backends/inmemory/inmemory_database.h,
          backends/quartz/quartz_database.cc,backends/quartz/quartz_database.h,
          backends/quartz/quartz_postlist.cc,
          backends/remote/remote-database.cc,common/database.h,
          common/remote-database.h: Refactor to eliminate do_open_post_list
          and any unnecessary call to term_exists().

Fri Apr 06 11:44:25 BST 2007  Olly Betts <olly@survex.com>

        * tests/api_wrdb.cc: Just use TEST on a boolean value rather than
          TEST_EQUAL against true/false.

Fri Apr 06 08:53:46 BST 2007  Olly Betts <olly@survex.com>

        * net/remoteserver.cc: Remove "N" which we calculate but never use!

Fri Apr 06 08:17:00 BST 2007  Olly Betts <olly@survex.com>

        * backends/flint/Makefile.mk,backends/flint/flint_check.cc,
          backends/flint/flint_check.h,bin/Makefile.mk,bin/xapian-check.cc:
          Fix xapian-check not to use libquartzcheck.la.

Fri Apr 06 07:20:47 BST 2007  Olly Betts <olly@survex.com>

        * bin/Makefile.mk,bin/xapian-check.cc: Add new "xapian-check" program
          which performs consistency checks on a flint database.

Fri Apr 06 06:25:36 BST 2007  Olly Betts <olly@survex.com>

        * bin/quartzcheck.cc: Test if this is a quartz database by looking at
          "meta" not "record_DB".  If "record_DB" is >= 2GB and we don't have
          a LFS aware stat function then stat can fail even though the file is
          there.  Also open the database explicitly as a Quartz database for
          extra robustness.

Fri Apr 06 06:23:33 BST 2007  Olly Betts <olly@survex.com>

        * AUTHORS: Thank Daniel Ménard.

Thu Apr 05 18:20:53 BST 2007  Olly Betts <olly@survex.com>

        * tests/harness/testsuite.cc: No need to explicitly initialise
          std::string to ""; not doing so results in a smaller object
          file.

Thu Apr 05 18:20:12 BST 2007  Olly Betts <olly@survex.com>

        * common/remoteprotocol.h: Note other changes in protocol version 26.

Thu Apr 05 17:34:10 BST 2007  Olly Betts <olly@survex.com>

        * tests/runtest.in: Pass "--leak-resolution=high" to valgrind to
          prevent unrelated leak reports related to STL classes from being
          combined.

Thu Apr 05 17:26:39 BST 2007  Olly Betts <olly@survex.com>

        * tests/api_wrdb.cc: Remove stray line left over from debugging.

Thu Apr 05 16:47:36 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/internaltest.cc: Fix test_serialiselength2: implementation
          was correct, but test was failing.  Needed special casing for n=0
          and 1, and was using arguments to string::append(size_type,
          charT) the wrong way round (stupid C++ API).  Also, make it check
          the return value of decode_length(), since we know what the
          answer ought to be.

Thu Apr 05 14:26:30 BST 2007  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc,backends/remote/remote-database.cc,
          common/serialise.h,net/remoteserver.cc,net/serialise.cc,
          tests/internaltest.cc: Add a flag parameter to decode_length()
          to indicate if the decoded value indicates the length of a
          string in the protocol stream, and if it does, check it against
          p_end - p after the length has been decoded (fixes bug#117).

Thu Apr 05 14:08:02 BST 2007  Olly Betts <olly@survex.com>

        * tests/api_wrdb.cc: In test uniqueterm1, check the document length
          after every delete or replace for better coverage.

Thu Apr 05 12:41:04 BST 2007  Olly Betts <olly@survex.com>

        * net/serialise.cc: Encode deltas between docids (rather than the
          docids themselves) in the RSet serialisation which reduces the
          size of the encoding if a lot of large docids with small gaps
          between them are present.
        * backends/remote/remote-database.cc,net/remoteserver.cc: Encode
          deltas between termpositions in REPLY_POSITIONLIST, for similar
          reasons.  No need to encode the term length for
          MSG_DELETEDOCUMENTTERM as it's the last (indeed only) item, and more
          consistent not to.
        * common/remoteprotocol.h: Bump protocol version to 26.
        * docs/remote_protocol.html: Document the new messages
          MSG_DELETEDOCUMENTTERM and MSG_REPLACEDOCUMENTTERM.  Correct
          reference to REPLY_DOCUMENT to REPLY_DOCDATA.  Fix documentation for
          MSG_QUERY to include the serialised Weight and RSet objects.  Fix
          "copy and paste" error in the description of Flush (should of course
          be MSG_FLUSH not MSG_CANCEL).  Update for changes above.

Thu Apr 05 12:18:19 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * backends/database.cc: Keep a RefCntPtr to the LeafPostList used
          in implementations of delete_document and replace_document with a
          unique term, so that the postlist isn't leaked.

Thu Apr 05 11:56:57 BST 2007  Olly Betts <olly@survex.com>

        * backends/database.cc: Database::Internal can't call the
          PostingIterator(PostingIterator::Internal*) ctor (at least under
          g++ 3.3.5) because it isn't a friend (only class Database is).
          Can't seem to forward define Database::Internal to make
          Database::Internal a friend so just use LeafPostList directly
          as that seems less bad than pulling in the whole of database.h
          or making PostingIterator::internal public.

Thu Apr 05 08:27:26 BST 2007  Olly Betts <olly@survex.com>

        * HACKING: Need to run svn-tag-release on ixion.

Thu Apr 05 01:50:10 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * backends/remote/remote-database.cc,common/remote-database.h,
          common/remoteprotocol.h,common/remoteserver.h,net/remoteserver.cc:
          Implement unique term variants of delete and replace document for
          the remote database.  Involves adding two new message types to the
          protocol (and therefore bumping the protocol version to 25), and
          overriding the standard implementations of delete_document(term)
          and replace_document(term) in RemoteDatabase.
        * tests/api_wrdb.cc: Correct text in SKIP_TEST() message.

Thu Apr 05 01:04:19 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * api/omdatabase.cc,backends/database.cc,common/database.h: Move
          implementation of delete_document and replace_document with a
          unique_term from WritableDatabase to Xapian::Database::Internal.
          This will allow it to be overridden for databases which need a
          special implementation (such as the remote database).

Tue Apr 03 14:30:45 BST 2007  Olly Betts <olly@survex.com>

        * common/remote-database.h: Remove unused and undefined method
          RemoteDatabase::get_spawned_socket().

Tue Apr 03 09:18:51 BST 2007  Olly Betts <olly@survex.com>

        * tests/harness/backendmanager.cc: Under __WIN32__, launch
          xapian-tcpsrv as a child process communicating via a pipe and handle
          the port being already in use by trying the next port up (as we do
          under UNIX).

Tue Apr 03 06:50:48 BST 2007  Olly Betts <olly@survex.com>

        * net/tcpserver.cc: For __WIN32__ and __CYGWIN__, use
          SO_EXCLUSIVEADDRUSE (if available) on on listening sockets for
          xapian-tcpsrv.

Tue Apr 03 04:37:02 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/positioniterator.h,include/xapian/postingiterator.h:
          Fix mangled comment start in (C) headers.

Tue Apr 03 03:27:12 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/,generate-exceptions.in: Mark the following
          constructors 'explicit': DocIDWrapper(docid), TermPosWrapper(const
          std::string &), Query::Internal(const std::string &), Database(const
          std::string &), all Error subclass constructors taking const
          std::string &.  Only the Database and Error subclass changes should
          be able to affect user code at all.
        * include/xapian/,api/omenquire.cc: Make the following methods
          'const': RSet::contains(MSetIterator), Enquire::get_query().  This
          shouldn't affect the validity of any user code.

Mon Apr 02 11:44:26 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * HACKING: Add note on "Building from SVN on Windows with MSVC"

Mon Apr 02 11:32:51 BST 2007  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc: Fix assertion to allow for OP_VALUE_RANGE.

Mon Apr 02 11:14:10 BST 2007  Olly Betts <olly@survex.com>

        * autoconf/rjb_find_stlport.m4: Fix check that the user didn't say
          `./configure --with-stlport-compiler' (without `=gcc' or similar
          after it).

Mon Apr 02 10:38:35 BST 2007  Olly Betts <olly@survex.com>

        * tests/api_db.cc,tests/apitest.cc: Under __WIN32__ disable tests
          which require the prog variant of the remote backend.

Mon Apr 02 09:44:13 BST 2007  Olly Betts <olly@survex.com>

        * net/tcpserver.cc: Don't use SO_REUSEADDR under __CYGWIN__ or
          __WIN32__ as it has incorrect semantics.

Mon Apr 02 09:37:14 BST 2007  Olly Betts <olly@survex.com>

        * tests/harness/backendmanager.cc: Pull `1239' out as `DEFAULT_PORT'.
          On Windows, cycle through 10 ports starting at DEFAULT_PORT so that
          we can have multiple databases open at once.  Add a monotonic count
          to the name of the log file created from the output of each
          xapian-tcpsrv to avoid failures because the log file is already
          open.

Mon Apr 02 07:41:57 BST 2007  Olly Betts <olly@survex.com>

        * tests/api_anydb.cc: Avoid having the same database open twice at
          once.  Xapian itself copes, but the BackendManager class in the test
          harness struggles in the remotetcp case under mingw.

Mon Apr 02 07:14:13 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Make Enquire constructor explicit since
          it can take a single parameter (of type Database).

Mon Apr 02 02:32:23 BST 2007  Olly Betts <olly@survex.com>

        * net/tcpserver.cc: Add "#error" if neither HAVE_FORK nor __WIN32__
          is defined (otherwise we'd failed with a rather obscure link error
          much later!)

Mon Apr 02 01:54:20 BST 2007  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Remove unused variable left over from
          recent change.

Mon Apr 02 01:22:56 BST 2007  Olly Betts <olly@survex.com>

        * net/tcpserver.cc: Actually remove SOCKOPT_OPTIONS_TYPE.

Mon Apr 02 01:16:03 BST 2007  Olly Betts <olly@survex.com>

        * net/tcpclient.cc,net/tcpserver.cc: Pass the 4th parameter of
          setsockopt() as char* which works whether the function actually
          takes char* or void* (since C++ allows implicit conversion from
          char* to void*).  Only call socket_errno() after gethostbyname()
          under __WIN32__ - on UNIX the error code is in h_errno (with
          incompatible values to errno) and we don't want to confuse things by
          reporting some random value of errno.

Mon Apr 02 00:44:56 BST 2007  Olly Betts <olly@survex.com>

        * tests/harness/backendmanager.cc: Factor out localhost address into
          LOCALHOST.  Use new xapian-tcpsrv --interface option to only listen
          for connections on localhost.  Run xapian-tcpsrv with "start /B" on
          MS Windows (this stops the "flickbook of console windows" effect).

Mon Apr 02 00:41:31 BST 2007  Olly Betts <olly@survex.com>

        * common/Makefile.mk,common/safesyssocket.h: Oops, I checked
          in safesysselect.h as safesyssocket.h!

Mon Apr 02 00:30:54 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: Fix SimpleStopper::add to take
          `const std::string &' not `const std::string'.

Mon Apr 02 00:20:45 BST 2007  Olly Betts <olly@survex.com>

        * bin/xapian-tcpsrv.cc,net/tcpserver.cc: Add "--interface" option to
          allow the hostname or address of the interface to listen on to be
          specified (default is the previous behaviour of listening on all
          interfaces).
        * net/remoteconnection.cc,net/tcpclient.cc,common/safesysselect.h:
          Factor out portability code for sys/select.h.
        * common/Makefile.mk: Ship common/safesysselect.h.
        * net/tcpserver.cc: Rename parameter of run_thread from "_param" to
          "param_" (identifiers with leading underscores are reserved for the
          compiler).
        * common/tcpclient.h,net/tcpclient.cc,common/tcpserver.h: Rewrite
          headers with comments which are actually accurate and up-to-date!
          TcpClient ctor is small so put inline in the header.  Pass
          std::string by const reference.
        * common/tcpclient.h,common/tcpserver.h: TcpClient and TcpServer
          classes now inherit from WinsockInitializer under __WIN32__ (as
          a mixin class) instead of having a member of type WinsockInitializer
          (the member is initialised too late, at least under mingw).

Sun Apr 01 19:14:11 BST 2007  Olly Betts <olly@survex.com>

        * common/omdebug.cc: Fix retrying of write to retry the part of
          the string not already written!

Sun Apr 01 18:37:15 BST 2007  Olly Betts <olly@survex.com>

        * common/remoteconnection.h: Note in comments about use as a "mixin"
          class.

Sun Apr 01 17:42:19 BST 2007  Olly Betts <olly@survex.com>

        * tests,examples,bin: Add .exe versions of built executables to
          svn:ignore.

Sun Apr 01 16:28:26 BST 2007  Olly Betts <olly@survex.com>

        * common/omdebug.cc: Remove unused '#include <stdio.h>' - we switched
          to using unbuffered I/O for logging long ago!

Sun Apr 01 15:21:04 BST 2007  Olly Betts <olly@survex.com>

        * common/safewinsock2.h: No, don't typedef socklen_t here - we use
          SOCKLEN_T everywhere and have `#define SOCKLEN_T int' in
          config.h.win32.

Sun Apr 01 13:32:21 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * common/omdebug.cc: Include necessary headers to get O_CREAT and
          friends defined (according to documentation in linux manpage),
          to fix compile error.  Also, don't ignore the return value of
          write() to fix compile warning (and to ensure that the whole
          output gets written if possible).

Sun Apr 01 13:19:52 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * queryparser/queryparser.cc: Fix Assert() on a RefCountPtr to
          check the value of the pointer, to fix compile with asserts
          turned on.

Sun Apr 01 12:57:06 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * common/safewinsock2.h: Define socklen_t under MS compiler (since
          Olly reported build success with mingw, presumably it's not
          needed there).

Sun Apr 01 06:42:14 BST 2007  Olly Betts <olly@survex.com>

        * languages/Makefile.mk: $(snowball_algorithms:.sbl=.cc) is portable
          according to the automake list so use that so we only need to list
          the .sbl sources.

Sun Apr 01 05:53:29 BST 2007  Olly Betts <olly@survex.com>

        * common/tcpserver.h,net/tcpserver.cc: TcpServer's port member
          variable is set but never used so remove it.

Sun Apr 01 03:27:30 BST 2007  Olly Betts <olly@survex.com>

        * bin/Makefile.mk,examples/Makefile.mk: Add $(EXEEXT) to dependency on
          binaries in man page generation rules so they work on Windows.

Sat Mar 31 22:17:55 BST 2007  Olly Betts <olly@survex.com>

        * common/multimatch.h,matcher/multimatch.cc: When using a MatchDecider
          with remote database(s), don't rerun the MatchDecider on documents
          which a remote server has already checked.

Sat Mar 31 10:44:26 BST 2007  Olly Betts <olly@survex.com>

        * tests/harness/backendmanager.cc: Sort out path to xapian-tcpsrv
          under mingw.  If neither HAVE_FORK nor __WIN32__ is defined,
          make compilation fail with a suitable #error.

Sat Mar 31 10:17:06 BST 2007  Olly Betts <olly@survex.com>

        * api/Makefile,backends/Makefile,backends/flint/Makefile,
          backends/inmemory/Makefile,backends/multi/Makefile,
          backends/quartz/Makefile,backends/remote/Makefile,bin/Makefile,
          common/Makefile,examples/Makefile,getopt/Makefile,include/Makefile,
          languages/Makefile,matcher/Makefile,net/Makefile,
          queryparser/Makefile,tests/harness/Makefile: Don't pass $(MAKEFLAGS)
          on the command line to $(MAKE) when invoking the top level Makefile
          from a static Makefile.  It's passed automatically anyway, and also
          $(MAKEFLAGS) doesn't have a leading '-' so "make -s" tries to do
          "make s" at the top level.

Sat Mar 31 09:28:06 BST 2007  Olly Betts <olly@survex.com>

        * tests/api_nodb.cc: Fix end of loop handling.

Sat Mar 31 09:03:26 BST 2007  Olly Betts <olly@survex.com>

        * tests/api_nodb.cc: Fix to compile.

Sat Mar 31 07:53:25 BST 2007  Olly Betts <olly@survex.com>

        * common/safewindows.h,common/safewinsock2.h: safewindows.h is
          included by a lot of files so we want to keep it lightweight
          so split winsock2.h related stuff into safewinsock2.h.
        * common/remoteconnection.h: Move WinsockInitializer here.
        * common/safeerrno.h: #include "safewinsock2.h" not <winsock2.h>.

Sat Mar 31 07:19:06 BST 2007  Olly Betts <olly@survex.com>

        * common/remoteserver.h: Stop trying to include "remoteserver.h"
          because that's the SAME HEADER!

Sat Mar 31 07:16:23 BST 2007  Olly Betts <olly@survex.com>

        * common/tcpclient.h,common/tcpserver.h: Fix comments - the class is
          called WinsockInitializer not WinsockInitialiser.

Sat Mar 31 06:54:22 BST 2007  Olly Betts <olly@survex.com>

        * net/progclient.cc: Don't compile any code from this file if
          __WIN32__ is defined (for mingw).

Sat Mar 31 06:52:27 BST 2007  Olly Betts <olly@survex.com>

        * tests/api_nodb.cc: Simplify code in test_stemlangs1().

Sat Mar 31 06:22:26 BST 2007  Olly Betts <olly@survex.com>

        * net/remoteconnection.cc: Use const_cast to avoid GCC warning
          about casting away const.  Use string::data() rather than
          string::c_str() since we don't need a terminating zero byte.

Sat Mar 31 06:20:07 BST 2007  Olly Betts <olly@survex.com>

        * backends/dbfactory_remote.cc: Suppress "unused parameter" warnings.

Sat Mar 31 06:17:35 BST 2007  Olly Betts <olly@survex.com>

        * net/tcpserver.cc: Make global variable and function used only in
          this file static.  Don't call delete on a void* (that's undefined
          behaviour) - delete the cast version of the pointer instead.

Sat Mar 31 06:17:20 BST 2007  Olly Betts <olly@survex.com>

        * AUTHORS: Add a number of bug reporters I missed before.

Sat Mar 31 04:49:27 BST 2007  Olly Betts <olly@survex.com>

        * configure.ac: Clean up handling of --enable-backend-* options.  Let
          mingw try to build the remote backend.

Sat Mar 31 03:47:49 BST 2007  Olly Betts <olly@survex.com>

        * tests/internaltest.cc: Don't compile test_serialisequery1
          if the remote backend is disabled to avoid an "unused
          function" warning (we were already disabling the use of
          it).

Fri Mar 30 22:43:27 BST 2007  Olly Betts <olly@survex.com>

        * HACKING: Correct several inaccuracies: --enable-debug and
          --enable-debug=partial don't cause the build system to compile in
          debugging symbols (configure defaults to adding "-g" for GCC, while
          for other compilers you must enable them by hand).  Also,
          --enable-debug doesn't "produce warnings", but causes
          Xapian::AssertionError to be thrown.  Add explanation for why
          --enable-debug=partial" exists.  CC_FOR_BUILD is now needed for
          snowball as well as lemon.

Fri Mar 30 19:53:05 BST 2007  Olly Betts <olly@survex.com>

        * common/utils.cc: Avoid GCC warning on format string "%I64d".

Fri Mar 30 16:48:46 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * common/tcpserver.h,net/tcpserver.cc: Patch from Mark Hammond:
          implement for windows.

Fri Mar 30 16:21:03 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * common/tcpclient.h,net/tcpclient.cc: Patch from Mark Hammond:
          implement for windows.

Fri Mar 30 15:52:57 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/harness/backendmanager.cc: Patch from Mark Hammond:
          implement launcher for tcpserver, so that remotetcp tests can run
          on windows.

Fri Mar 30 15:42:49 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * common/safewindows.h: Include xapian/error.h so
          WinsockInitialiser can throw an exception.

Fri Mar 30 14:59:40 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * More code from Mark Hammond's patch
        * common/remoteconnection.h: Add explicit destructor and (for
          windows compiles) a declare a helper method to calculate the
          number of milliseconds until a timeout.
        * net/remoteconnection.cc: Implement windows versions for functions
          which need it: constructor and destructor now do create and close
          the overlapped IO stuff, read_at_least() and send_message() have
          windows specific implementations.

Fri Mar 30 13:05:27 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * More code adapted from Mark Hammond's patch
        * common/safewindows.h: When remote databases are compiled in,
          include the winsock stuff, and define some useful bits and pieces
          for using it.
        * common/remoteconnection.h: Add a member to RemoteConnection on
          windows to hold an overlapped IO structure.
        * net/progclient.cc: Don't include winsock stuff directly (it's now
          brought in by "safewindows.h"), and don't include <sys/wait.h> on
          windows.
        * net/remoteserver.cc: Ignore more SIGPIPE stuff on windows.

Fri Mar 30 12:37:15 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * Patch from Mark Hammond
        * backends/dbfactory_remote.cc: Ignore code to handle SIGPIPE on
          windows, where it doesn't exist.
        * backends/remote/remote-database.cc: Raise UnimplementedError on
          windows if a progclient backend is requested.

Fri Mar 30 12:11:50 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/harness/testsuite.cc: Fix srcdir guessing on windows -
          search for windows style directory separators, and remove .exe
          suffix from executable name.  Adapted from Mark Hammond's patch.

Thu Mar 29 18:32:18 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * Changes related to Mark Hammond's patch:
        * common/safeerrno.h: Define a new inline function "socket_errno()"
          which returns an error number relating to the last error caused
          by a socket function on platforms which make such a distinction,
          and the value of errno on other platforms.
        * net/tcpclient.cc,net/tcpserver.cc: Use the socket_errno()
          function instead of checking the value of errno.  Also, check for
          WSAEWOULDBLOCK instead of EINPROGRESS on windows.

Thu Mar 29 15:36:45 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * bin/xapian-tcpsrv.cc,tests/harness/testsuite.cc: First of many
          parts of a large patch from Mark Hammond working towards enabling
          remote databases on windows.  When displaying errors which might
          be socket errors, display the error number as well as the output
          of strerror - on windows, strerror doesn't display useful
          information for socket errors.
        * AUTHORS: Add Mark Hammond

Thu Mar 29 06:07:35 BST 2007  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc: Unserialisation shouldn't reject a
          serialised query which ends after a termname.
        * tests/internaltest.cc: Add regression test.

Wed Mar 28 17:17:42 BST 2007  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Add feature tests for "prefer_mdy" and
          "epoch" arguments of DateValueRangeProcessor.

Wed Mar 28 04:52:34 BST 2007  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Add more test cases for parsing of value
          ranges.

Wed Mar 28 04:18:14 BST 2007  Olly Betts <olly@survex.com>

        * languages/compiler/generator.c,languages/compiler/header.h,
          languages/steminternal.cc,languages/steminternal.h: For among with
          functions (only used by finnish and lovins stemmers currently),
          change to generating an array of unsigned byte offsets into an array
          of function pointers rather than just an array of function pointers
          - this generally requires a lot less space.

Wed Mar 28 03:28:37 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Fix parsing of `hello a..b'.
        * tests/queryparsertest.cc: Add regression test for above.  Refactor
          qp_value_range1 to use a table of queries.

Wed Mar 28 00:35:50 BST 2007  Olly Betts <olly@survex.com>

        * languages: Update svn:ignore for recent romanian changes.

Wed Mar 28 00:08:11 BST 2007  Olly Betts <olly@survex.com>

        * api/valuerangeproc.cc: Need #include <stdio.h> for snprintf or
          sprintf.

Tue Mar 27 23:53:18 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Fix infinite loop in value range
          processing.  Fix value range to work as a filter when used with a
          probabilistic query.
        * tests/queryparsertest.cc: Add regression tests for the above two
          issues.  Refactor qp_value_range2 to use a table of queries.

Tue Mar 27 22:09:57 BST 2007  Olly Betts <olly@survex.com>

        * api/valuerangeproc.cc: Assume that the start date is before the
          end date to help decide ambiguous cases.

Tue Mar 27 21:49:15 BST 2007  Olly Betts <olly@survex.com>

        * api/valuerangeproc.cc: Refactor to simplify and reduce duplication.

Tue Mar 27 21:41:38 BST 2007  Olly Betts <olly@survex.com>

        * configure.ac: datarootdir is new in 2.60 too, so use datadir when
          setting docdir for 2.59.

Tue Mar 27 18:39:11 BST 2007  Olly Betts <olly@survex.com>

        * api/Makefile.mk,api/valuerangeproc.cc,include/xapian/queryparser.h:
          Move NumberValueRangeProcessor::operator()() out of the header as
          it's too complex for sane inlining.  Implement handling of dmy and
          mdy dates and epochs for 2 digit years.
        * tests/queryparsertest.cc: Add tests.

Tue Mar 27 11:57:53 BST 2007  Richard Boulton <richard@lemurconsulting.com>

        * languages/romanian.sbl: Add Martin Porter's new romanian stemming
          algorithm.
        * languages/romanian1.sbl,languages/romanian2.sbl: Remove old
          romanian stemming algorithms.
        * languages/Makefile.mk: Replace romanian1 and romanian2 by
          romanian.
        * languages/stem.cc: Use romanian stemmer when asked for "ro" or
          "romanian".  No longer give a stemmer for "romanian1" or
          "romanian2".

Tue Mar 27 04:50:36 BST 2007  Olly Betts <olly@survex.com>

        * languages/german2.sbl: Copy over "hop 3" in utf-8 case from
          snowball's latest version.

Tue Mar 27 04:44:52 BST 2007  Olly Betts <olly@survex.com>

        * tests/stemtest.cc: Remove lower casing of dictionary words before
          stemming - instead we'll make sure the dictionary is already the
          right case.

Tue Mar 27 04:28:10 BST 2007  Olly Betts <olly@survex.com>

        * languages/compiler/analyser.c,languages/compiler/generator.c,
          languages/compiler/header.h,languages/steminternal.cc,
          languages/steminternal.h: Add handling of among with functions.
          We use a "shim" functions for each method we want to call in
          this way.  The shim function is passed the "this" pointer and
          calls a particular method on this.  Split the functions into
          an optional separate array, since they're not used by most of
          the stemming algorithms.
        * languages/Makefile.mk,languages/stem.cc: Enable the finnish
          and lovins stemmers.

Tue Mar 27 04:24:37 BST 2007  Olly Betts <olly@survex.com>

        * languages/steminternal.cc: Fix typo bug in slice_to - if we needed
          to increase the capacity of a snowball string variable, we trashed
          the variable with p (bug discovered while trying to enable the
          finnish stemmer).

Tue Mar 27 02:55:51 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: Implement handling of ISO format dates
          in DateValueRangeProcessor.
        * tests/queryparsertest.cc: Add feature tests.

Tue Mar 27 01:47:36 BST 2007  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: Implement prefix and suffix handling
          for NumberValueRangeProcessor.
        * tests/queryparsertest.cc: Add feature tests.

Mon Mar 26 22:26:48 BST 2007  Olly Betts <olly@survex.com>

        * queryparser/utf8itor.h: Add is_currency() predicate function.
        * queryparser/queryparser.lemony: Rejig parsing of RANGE_START to
          allow all characters which are likely to be required.
        * tests/queryparsertest.cc: Test RANGE_START can contain "/".
        * queryparser/queryparser.lemony: Set "syntax=yacc" for vim, which
          give fairly decent syntax highlighting.

Mon Mar 26 15:43:50 BST 2007  Olly Betts <olly@survex.com>

        * configure.ac: Use m4 comments not shell (dnl not #).

Mon Mar 26 15:41:41 BST 2007  Olly Betts <olly@survex.com>

        * configure.ac: Add code to ensure that docdir is set for autoconf
          2.59 (starting from 2.60, it is defined as standard).
        * docs/Makefile.am: Use docdir for installing docs.

Sun Mar 25 15:41:16 BST 2007  Olly Betts <olly@survex.com>

        * bin/xapian-compact.cc: Prune unused docids off the start of each
          source database's range of docid.

Sat Mar 24 23:07:42 GMT 2007  Olly Betts <olly@survex.com>

        * include/xapian/base.h: Add a note explaining why it's OK that
          RefCntBase doesn't have a virtual destructor.

Sat Mar 24 01:30:17 GMT 2007  Olly Betts <olly@survex.com>

        * HACKING,configure.ac: Bump the automake required version to 1.9.5.
          It was in Debian sarge, so any modern Linux distro should include
          packages, and we've actually been bootstrapping with 1.9.6 for ages.

Thu Mar 22 00:53:35 GMT 2007  Olly Betts <olly@survex.com>

        * configure.ac: Disable probes for f77 more completely by preventing
          the probe code from even appearing in configure.  Similarly
          eliminate the code for gcj and rc probes - in total these changes
          reduce the size of configure by 209KB (~25%).

Fri Mar 09 14:28:01 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * Makefile.am: Add include/xapian/error.h to list of headers to
          install.

Thu Mar 08 17:16:08 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * generate-exceptions.in,exception_data.pm: Split definitions of
          the exception hierarchy into a separate file, so it can be reused
          elsewhere.
        * Makefile.am: Add exception_data.pm as a dependency for generating
          error.h, and add it to EXTRA_DIST.

Fri Mar 09 06:42:40 GMT 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_cursor.cc,backends/flint/flint_cursor.h: We
          always ignore the return value from FlintCursor::get_key() because
          we only call it when it shouldn't fail, so restructure the code so
          it can't fail and change the return value to void.

Fri Mar 09 06:33:09 GMT 2007  Olly Betts <olly@survex.com>

        * configure.ac: Suppress another aCC warning.

Thu Mar 08 20:39:46 GMT 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony,tests/queryparsertest.cc: Allow
          arbitrary characters in a range end (anything except whitespace
          and ')').

Thu Mar 08 19:46:46 GMT 2007  Olly Betts <olly@survex.com>

        * Makefile.am,languages/Makefile.mk: Depend on the autoconf
          substituted version of a script, not the template version.  The
          only thing we substitute is @PERL@, but configure won't update
          a substituted file which hasn't changed so it's better to put
          the dependency on the script itself where it belongs.

Thu Mar 08 17:09:21 GMT 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony,tests/queryparsertest.cc: Keep any
          non-whitespace, non-term prefix for a term in case it turns out
          to be the start of a range, so "$50..100" works.

Thu Mar 08 16:21:14 GMT 2007  Olly Betts <olly@survex.com>

        * HACKING: Add my "create docs/GNUmakefile" trick to avoid doxygen
          delays.

Thu Mar 08 16:13:39 GMT 2007  Olly Betts <olly@survex.com>

        * HACKING: A few more coding guidelines.

Thu Mar 08 14:26:21 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * HACKING: Adjust wording to indicate that the build system is
          indended not to break after SVN updates.

Thu Mar 08 07:34:22 GMT 2007  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h,tests/queryparsertest.cc: Add simple
          implementations of DateValueRangeProcessor and
          NumberValueRangeProcessor and add qp_value_range2 to check that
          chaining ValueRangeProcessor subclasses works as intended.

Thu Mar 08 06:06:15 GMT 2007  Olly Betts <olly@survex.com>

        * docs/overview.html: Fix links to error classes in generated API
          documentation.

Thu Mar 08 05:37:13 GMT 2007  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h,queryparser/queryparser.cc,
          queryparser/queryparser.lemony,queryparser/queryparser_internal.h,
          tests/queryparsertest.cc: Add the ability to parse "value ranges"
          to the QueryParser (e.g. "10..50") which translate into a Query
          with operator OP_VALUE_RANGE.

Thu Mar 08 04:27:54 GMT 2007  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h,queryparser/queryparser.cc: Remove
          QueryParser::set_stemming_options() which has been deprecated
          since 0.9.0.

Thu Mar 08 03:37:07 GMT 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_lock.cc: Handle write failing to send a single
          byte down down the pipe to tell the parent we've got the lock (a
          potential bug noticed by _FORTIFY_SOURCE!)  Handle read() failing
          with an unexpected error on the parent side by failing the lock
          attempt rather than risking an infinite loop.

Thu Mar 08 02:52:26 GMT 2007  Olly Betts <olly@survex.com>

        * include/xapian/types.h: Rewritten, with more accurate documentation
          comments.  Add constant Xapian::BAD_VALUENO which is -1 cast to
          Xapian::valueno.
        * api/omenquire.cc,include/xapian/enquire.h,matcher/multimatch.cc: Use
          Xapian::BAD_VALUENO instead of Xapian::valueno(-1).

Thu Mar 08 01:47:08 GMT 2007  Olly Betts <olly@survex.com>

        * docs/Makefile.am: Try putting apidoc/html in EXTRA_DIST instead of
          using dist-hook.

Wed Mar 07 23:16:52 GMT 2007  Olly Betts <olly@survex.com>

        * docs/Makefile.am: Stop shipping docs/apidoc/latex/* in the
          xapian-core tarballs since it's just useless bloat.  Removing it
          more than halves the size of the tarball (55% reduction!)

Wed Mar 07 22:07:31 GMT 2007  Olly Betts <olly@survex.com>

        * tests/runtest.in: If we aren't using valgrind, turn on
          MALLOC_CHECK_ and MALLOC_PERTURB_ for glibc.

Wed Mar 07 20:02:31 GMT 2007  Olly Betts <olly@survex.com>

        * INSTALL: CVS -> SVN.

Wed Mar 07 20:00:37 GMT 2007  Olly Betts <olly@survex.com>

        * configure.ac: Define _FORTIFY_SOURCE in config.h if GCC is in use
          and it's not already set.  That way the user can easily override.
        * INSTALL: Document this.

Wed Mar 07 19:53:15 GMT 2007  Olly Betts <olly@survex.com>

        * INSTALL: Remove reference to muscat36 backend.

Wed Mar 07 17:37:07 GMT 2007  Olly Betts <olly@survex.com>

        * configure.ac: Note GCC and glibc versions needed for _FORTIFY_SOURCE
          support.

Wed Mar 07 16:29:02 GMT 2007  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Increase the length allowed for the filename
          in an error message, as it was being truncated which makes for a
          confusing error message and stops editors jumping to the line with
          the error in.

Wed Mar 07 15:57:15 GMT 2007  Olly Betts <olly@survex.com>

        * common/Makefile.mk: Ship common/msvc_posix_wrapper.h and
          common/msvc_posix_wrapper.cc.

Wed Mar 07 10:01:31 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * configure.ac: Add -D_FORTIFY_SOURCE to AM_CXXFLAGS for GCC
          builds.  According to glibc CVS support for this was added in
          October 2004, but it doesn't seem to be documented very well,
          other than in features.h.  This adds some extra checking for
          array bounds, partially at compile time, but doesn't currently
          find any problems (or cause any noticeable slowdown).

Wed Mar 07 04:49:01 GMT 2007  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc: Include str_parameter in swap() and the copy
          constructor.
        * tests/api_anydb.cc: get_mset(0, 20) not get_mset(1, 20)!  Also check
          that we didn't miss any documents which should match the filter, not
          just that we didn't get any documents which shouldn't.

Wed Mar 07 03:07:49 GMT 2007  Olly Betts <olly@survex.com>

        * tests/harness/unixcmds.h: Fixed reverse sense include guard test.
        * tests/api_db.cc: Still need #include "utils.h".
        * tests/harness/backendmanager.cc: Update for rmdir.h -> unixcmds.h
          and rmdir() -> rm_rf().

Wed Mar 07 02:22:30 GMT 2007  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc,backends/quartz/quartz_database.cc,
          backends/quartz/quartz_log.cc,common/utils.h,net/remoteconnection.cc,
          net/tcpclient.cc,tests/api_db.cc,tests/btreetest.cc,tests/harness/,
          tests/quartztest.cc: Rename rmdir() to rm_rf() since it does the
          same as "rm -rf" not "rmdir".  The "touch()" function is only used
          in the testsuite so move it from common/utils.h into
          tests/harness/rmdir.cc and rename rmdir.cc to unixcmds.cc.
          common/utils.h no longer include safefcntl.h, so add explicit
          includes to the files which were previous relying on utils.h pulling
          it in.

Wed Mar 07 02:21:18 GMT 2007  Olly Betts <olly@survex.com>

        * xapian.spec.in: Include ChangeLog.examples.

Wed Mar 07 02:17:59 GMT 2007  Olly Betts <olly@survex.com>

        * docs/index.html,docs/internals.html: Create a separate index page
          for the "internal" documentation.

Tue Mar 06 23:47:58 GMT 2007  Olly Betts <olly@survex.com>

        * common/utils.cc,common/utils.h: Remove map_string_to_value() which
          is no longer used.
        * common/utils.h: Remove prototype for rmdir() which I failed to
          remove with the earlier commit.

Tue Mar 06 22:51:51 GMT 2007  Olly Betts <olly@survex.com>

        * tests/harness/rmdir.cc: Fix rmdir() on Unix to not be O(n^2) in the
          worst case.

Tue Mar 06 22:46:30 GMT 2007  Olly Betts <olly@survex.com>

        * docs/Makefile.am: Use the "inline test || echo" idiom to merge the
          VPATH and non-VPATH cases for distributing and installing the HTML
          apidocs.

Tue Mar 06 22:13:03 GMT 2007  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc: Fix Query::get_description() on an
          OP_VALUE_RANGE query.

Tue Mar 06 09:03:33 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * HACKING: Note on running preautoreconf and autoreconf to keep SVN
          builds working.
        * PLATFORMS: Update with success reports for windows builds.

Tue Mar 06 01:57:23 GMT 2007  Olly Betts <olly@survex.com>

        * tests/internaltest.cc: Comment out the "unsigned long long" testcase
          in tostring1 since the library doesn't currently have (or need) the
          utility function for that case.

Tue Mar 06 01:49:55 GMT 2007  Olly Betts <olly@survex.com>

        * common/utils.cc,tests/btreetest.cc,tests/harness/,
          tests/quartztest.cc: rmdir() is only used in the test suite, and not
          in the library code, so move it into the testsuite.  Also, bow out
          early if the pathname passed is empty, and on Unix protect against
          filenames which start with "-".

Mon Mar 05 02:52:49 GMT 2007  Olly Betts <olly@survex.com>

        * configure.ac: Suppress more unhelpful aCC warnings.

Mon Mar 05 02:15:29 GMT 2007  Olly Betts <olly@survex.com>

        * tests/internaltest.cc: Add testcase autoptr1 which tests that an
          autoptr correctly handles self-assignment.

Mon Mar 05 02:05:53 GMT 2007  Olly Betts <olly@survex.com>

        * tests/internaltest.cc: Rename "omtostring1" to "tostring1" (we don't
          want to perpetuate references to "om"!)  Add more test cases to this
          test.

Mon Mar 05 01:18:17 GMT 2007  Olly Betts <olly@survex.com>

        * configure.ac: Update in line with 0.9.10.

Sun Mar 04 23:58:29 GMT 2007  Olly Betts <olly@survex.com>

        * AUTHORS: Add reporters of bugs fixed in 0.9.10 to the "thanks" list.

Sun Mar 04 00:44:17 GMT 2007  Olly Betts <olly@survex.com>

        * api/errorhandler.cc,include/xapian/errorhandler.h: Move virtual
          dtor for ErrorHandler out of the header.  Same reasons as previous
          commit.

Sun Mar 04 00:40:44 GMT 2007  Olly Betts <olly@survex.com>

        * api/omenquire.cc,include/xapian/enquire.h,matcher/Makefile.mk,
          matcher/weight.cc: Move virtual method definitions out of headers
          for MatchDecider, ExpandDecider, Weight, BoolWeight.  This fixes
          warnings from aCC, and it's rare that the compiler would be able
          to inline a virtual method anyway.

Sat Mar 03 21:40:43 GMT 2007  Olly Betts <olly@survex.com>

        * configure.ac: For HP's aCC, we no longer need to suppress warning
          #336 (empty translation unit) since dummy.cc is history.  But we
          do want to suppress a couple of frequently reported "remarks" which
          are unavoidable and don't indicate a problem.  Experimentally, add
          "+wlint" for "link-like" warnings.

Sat Mar 03 21:38:52 GMT 2007  Olly Betts <olly@survex.com>

        * include/xapian.h,include/xapian/version_h.cc: Move function
          prototypes into a non-generated header.
        * configure.ac,msvc/version.h.in: Generate version.h suitable for use
          with MSVC.
        * Makefile.am: Distribute msvc/version.h.

Sat Mar 03 19:49:11 GMT 2007  Olly Betts <olly@survex.com>

        * tests/harness/backendmanager.cc: Rework how we start and handle
          xapian-tcpsrv - it's now started by exec from a child process.
          This means that the mechanism to try higher port numbers works
          reliably, and we no longer leak file descriptors (which was causing
          tests to fail on some platforms).

Sat Mar 03 19:46:03 GMT 2007  Olly Betts <olly@survex.com>

        * bin/xapian-tcpsrv.cc: Put "e.get_errno()" in a variable for clearer
          code.

Sat Mar 03 16:01:17 GMT 2007  Olly Betts <olly@survex.com>

        * common/msvc_posix_wrapper.cc: Change `#include <fcntl.h>' to
          `#include "safefcntl.h"' (currently makes no difference on
          Windows, but it's more consistent to always use the safeXXX
          headers).
        * common/msvc_posix_wrapper.cc: Merge two ECHILD cases.
        * common/msvc_posix_wrapper.cc: Make sure dwCreationDisposition
          is initialised even if flags has a bogus value.
        * common/msvc_posix_wrapper.cc: Be consistent and always use O_CREAT,
          etc, instead of sometimes using the MS alternative forms _O_CREAT,
          etc.

Sat Mar 03 03:25:05 GMT 2007  Olly Betts <olly@survex.com>

        * generate-exceptions.in: The GCC visibility docs aren't clear whether
          you need to make *thrown* exception types visible, or also *caught*
          exception types.  But I've just been having odd problems catching
          Xapian::DocNotFoundError with "const Xapian::Error &", so let's mark
          the exception virtual baseclass Xapian::Error as visible too.

Fri Mar 02 22:34:04 GMT 2007  Olly Betts <olly@survex.com>

        * languages/Makefile.mk,languages/generate-allsnowballheaders.in:
          Convert unreadable make rule for generating allsnowballheaders.h
          to a perl script.
        * configure.ac: Substitute languages/allsnowballheaders.

Fri Mar 02 14:31:11 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/internaltest.cc: Add a test for om_tostring(), mainly
          aimed at 64 bit types on windows platforms.  Mingw builds report
          a warning in this code, which merits further investigation - see
          Bug #112 for details.

Fri Mar 02 14:15:44 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * common/msvc_posix_wrapper.cc: Improve accuracy of emulation of
          posix open, and fix a bug which caused it to misinterpret the
          "flags" argument - files were always being opened for writing:
          O_RDONLY is 0, so the old test (flags & O_RDONLY) always
          failed.

Fri Mar 02 12:44:33 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * common/msvc_posix_wrapper.cc: Fix whitespace issues.

Fri Mar 02 12:18:42 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * HACKING: Add note about how to generate ChangeLog timestamps
          using the unix date command - and I've started generating them in
          the same format as Olly is. (I hope.)

Fri Mar  2 11:49:11 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * common/msvc_posix_wrapper.h,common/safeerrno.h,
          common/msvc_posix_wrapper.cc,backends/quartz/btree.cc,
          backends/flint/flint_table.cc,backends/flint/flint_btreebase.cc:
          Move MSVC specific code for opening files into
          msvc_posix_wrapper.cc, and just leave a few conditional includes
          and function calls elsewhere.

Thu Mar 01 22:51:42 GMT 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Add casts to U_isupper(), etc to
          suppress warnings from aCC.
        * queryparser/queryparser.lemony: Use U_isdigit() instead of
          C_isdigit(), etc - the truncation to a char can cause false
          positives.
        * tests/queryparsertest.cc: Add a (rather contrived) regression test
          for the above change.

Thu Mar 01 21:49:37 GMT 2007  Olly Betts <olly@survex.com>

        * queryparser/utf8itor.h: Add cast to suppress warning from aCC.

Thu Mar  1 15:27:09 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * common/utils.c,common/utils.h: For windows, add an om_tostring()
          function for 64 bit integers: time() and GetProcessId() return
          these, and without this, backends/quartz/quartz_log.cc reports
          an error.

Thu Mar  1 13:48:46 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * queryparser/queryparser.lemony: Fix handling of hated wildcards
          which don't expand to any terms.

Thu Mar  1 13:45:04 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/queryparsertest.cc: Fix last two test cases for hated
          wildcards to check for exactly what should be returned.

Thu Mar  1 12:02:04 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * common/safeerrno.h: Some of Microsoft's C++ compiler versions
          earlier than 2005 do not have _set_errno, so #define it in this
          case.

Thu Mar 01 04:28:23 GMT 2007  Olly Betts <olly@survex.com>

        * backends/quartz/btree.h: Correct comment ("read" -> "write").

Thu Mar 01 04:21:52 GMT 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_table.h: Correct comment ("read" -> "write").

Thu Mar 01 01:30:02 GMT 2007  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Add some test cases for hated wildcards
          which don't expand to any terms.

Thu Mar 01 01:21:42 GMT 2007  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc: Complete truncated comment.  Prefer
          preincrement to postincrement.

Wed Feb 28 20:13:35 GMT 2007  Olly Betts <olly@survex.com>

        * api/omdocument.cc: Really tweak OmDocumentTerm::add_position() so
          that adding position 0 to an empty termlist takes the shortcut.

Wed Feb 28 15:04:25 GMT 2007  Olly Betts <olly@survex.com>

        * common/safeerrno.h: Correct <safeerrno.h> to "safeerrno.h" in
          message in #error directive.

Wed Feb 28 14:59:29 GMT 2007  Olly Betts <olly@survex.com>

        * include/xapian/query.h: Removed documentation comment for
          Xapian::Query::Internal which is no longer relevant (Query objects
          are now immutable once constructed, so parameters can no longer be
          set separately).

Wed Feb 28 02:42:31 GMT 2007  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc: Add support for serialising OP_VALUE_RANGE
          queries.  Add support for OP_VALUE_RANGE queries to
          Query::get_description().  If an OP_VALUE_RANGE query has a start
          bound strictly greater than its end bound, simplify it by knowing
          that it can't match anything.
        * common/remoteprotocol.h,docs/remote_protocol.html: Bump remote
          protocol version to 24.

Wed Feb 28 01:15:00 GMT 2007  Olly Betts <olly@survex.com>

        * api/omquery.cc,api/omqueryinternal.cc,include/xapian/query.h,
          matcher/: Add new Query operator OP_VALUE_RANGE which allows
          a query to be filtered by checking if a value lies between
          two limits.
        * tests/api_anydb.cc: Add feature test valuerange1.

Wed Feb 28 01:07:53 GMT 2007  Olly Betts <olly@survex.com>

        * tests/harness/testsuite.cc: Only hook the testsuite into valgrind if
          env var XAPIAN_TESTSUITE_VALGRIND is set, to make it simple to run a
          test program under valgrind normally.
        * tests/runtest.in: Set XAPIAN_TESTSUITE_VALGRIND if automatically
          running a test program under valgrind.

Tue Feb 27 23:51:34 GMT 2007  Olly Betts <olly@survex.com>

        * tests/Makefile.am: Turn subdir-objects back on here so that the
          harness objects end up in the harness subdirectory.

Tue Feb 27 22:45:04 GMT 2007  Olly Betts <olly@survex.com>

        * examples/delve.cc: Rename "-k" to "-V" since "keys" were renamed to
          "values" long ago.  Keep "-k" as an alias for now, but don't
          advertise it.  Add handling so "-V3" shows value #3 for every
          document in the database.

Tue Feb 27 21:35:35 GMT 2007  Olly Betts <olly@survex.com>

        * tests/Makefile.am,tests/remotetest.cc: Get rid of remotetest since
          it no longer does anything.

Tue Feb 27 21:28:28 GMT 2007  Olly Betts <olly@survex.com>

        * tests/api_db.cc,tests/remotetest.cc: Move netstats1 from remotetest
          to apitest.  It will now run for "remotetcp" as well as "remote".

Tue Feb 27 21:27:17 GMT 2007  Olly Betts <olly@survex.com>

        * tests/harness/backendmanager.cc,tests/harness/backendmanager.h:
          Inline trivial getter and setter methods in the header.  Make
          getter method const.

Tue Feb 27 20:22:58 GMT 2007  Olly Betts <olly@survex.com>

        * examples/delve.cc: Change to not stem terms by default.  Add
          "-s/--stemmer" option to allow a stemmer to be specified.

Tue Feb 27 17:50:13 GMT 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_table.cc: Test revision_supplied rather than
          revision_ so that behaviour matches comments.

Tue Feb 27 16:58:56 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/api_wrdb.cc: Enhance crashrecovery1 to check that the
          readers reference a database with the expected number of
          documents.  This checks that the base files which were removed
          were the correct ones to leave the current database valid.

Tue Feb 27 16:54:31 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * backends/quartz/btree.cc,backends/quartz/btree.h,
          backends/quartz/quartz_database.cc: Apply fix for opening
          databases while under heavy modification to quartz, using Olly's
          attachment to bug #108:
          http://www.xapian.org/cgi-bin/bugzilla/attachment.cgi?id=43
          Verified with loadtest that this resolves the issue.

Tue Feb 27 13:12:31 GMT 2007  Olly Betts <olly@survex.com>

        * tests/harness/backendmanager.h: Add get_dbtype() method to allow the
          current backend type to be read.
        * tests/apitest.cc,tests/apitest.h: Add get_dbtype() function to allow
          BackendManager::get_dbtype() to be called by tests.
        * tests/api_wrdb.cc: Add new test crashrecovery1 to verify that the
          backend can recover from the latest revision missing some of the
          base files.

Tue Feb 27 12:45:00 GMT 2007  Olly Betts <olly@survex.com>

        * tests/harness/backendmanager.cc: Fix how we start xapian-progsrv
          when running under valgrind.

Tue Feb 27 11:34:22 GMT 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_database.cc: Remove the old throw for
          DatabaseOpeningError so the new throw for DatabaseModifiedError will
          actually be used.

Tue Feb 27 09:22:52 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * flint_table.cc,flint_table.h,flint_database.cc: If a database is
          being frequently modified (ie, transactions committed extremely
          frequently), flint can fail open all the tables at a consistent
          revision on the first attempt.  The code to handle this in
          flint_database.cc was not firing because flint_table.cc was
          reporting all failures to open a table for reading by throwing an
          exception.  This commit changes flint_table.cc to report failure
          to open at a specific revision by returning false.

          In addition, there was a bug in flint_database.cc which caused
          the attempts to re-try opening a database in this situation to
          fail.  This is now fixed.

          Finally, flint_database.cc now throws a DatabaseModified error if
          100 attempts to reopen the database fail because of continual
          modifications - previously, it would have thrown a
          DatabaseOpening error.

          There is no easy regression test - but my "loadtest.cc" program
          attached to bug #108 shows the problem (if you comment out the
          code which ignores DatabaseOpeningErrors).

Tue Feb 27 01:25:00 GMT 2007  Olly Betts <olly@survex.com>

        * docs/doxygen_api_conf.in,docs/doxygen_full_conf.in: Need to
          define DOXYGEN so that the previous change to the generated
          errordispatch.h works.  Remove obsolete macros from
          EXPAND_AS_DEFINED and PREDEFINED.
        * docs/doxygen_full_conf.in: Increase MAX_DOT_GRAPH_WIDTH from
          800 to 1024 to match doxygen_api_conf.in.

Tue Feb 27 00:41:47 GMT 2007  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Fix warning with SGI's CC.

Tue Feb 27 00:35:06 GMT 2007  Olly Betts <olly@survex.com>

        * generate-exceptions.in: Wrap errordispatch.h in "#ifndef DOXYGEN"
          and "#endif" because doxygen gets confused by a header full of
          code.

Mon Feb 26 21:53:41 GMT 2007  Olly Betts <olly@survex.com>

        * tests/findheaders.pl: Remove long unused perl script.

Mon Feb 26 19:23:50 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/api_wrdb.c: test_emptyterm2 used to delete a writable
          database whilst the database was open.  Unfortunately, this
          doesn't work on windows (and it doesn't seem to be easy to make
          it work), so this patch changes the test to close each database
          before opening the next writable database at the same path.
          Fortunately, this seems to be the only test which behaves like
          this.  Also, added a note to the win32 README file to document
          this restriction.

Mon Feb 26 19:19:34 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * docs/Makefile.am: touch apidoc/html/index.html after apidoc.pdf
          is created so that make doesn't attempt to regenerate it due to
          the dependency of apidoc/html/index.html on apidoc.pdf.
          Similarly for sourcedoc/html/index.html.

Mon Feb 26 18:36:22 GMT 2007  Olly Betts <olly@survex.com>

        * tests/harness/backendmanager.cc: Indent with tabs not spaces.
        * tests/harness/index_utils.cc: Add missing space after "if";
          prefer "X.empty()" to "X.size() == 0".

Mon Feb 26 16:10:31 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * tests/harness/index_utils.cc,tests/harness/backendmanager.cc:
          Fix for windows: windows file handling seems to have a bug
          causing end of file conditions in ifstream to be missed.  As a
          result, an empty string was being returned from the get_paragraph
          function in the test harness, resulting in an out-of-bounds error
          when generating a value from the paragraph.  Add a check that the
          paragraph returned isn't empty, and return an empty document if
          it is.  Then, check for empty documents (ie, contain some terms)
          before adding them to the test database.

Mon Feb 26 16:05:07 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * backends/quartz/btree_base.cc,backends/flint/flint_btreebase.cc:
          Fix for windows: string append method with a pointer and length
          causes a segfault-type error on windows if the pointer is NULL,
          even if the length is also 0.  Check for this case when appending
          the bitmap to the base block, since a NULL pointer is passed for
          an empty bitmap when a new database is being created.

          Also, initialise the bit_map0 and bitmap members to 0 in the
          FlintTable_base constructor which takes a string and a char
          argument - they had been omitted from this and were only being
          initialised by the constructor which takes no argument.  This
          didn't seem to be having any negative effect, but doing it makes
          the code neater.

Sun Feb 25 23:21:11 GMT 2007  Olly Betts <olly@survex.com>

        * backends/inmemory/inmemory_database.cc: Create the RefCntPtr to this
          as an explicit variable to make the code more readable.

Sun Feb 25 19:20:33 GMT 2007  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Fix inconsistent ordering between pages with
          set_sort_by_value_then_relevance (fixes bug#110).
        * tests/api_wrdb.cc: Enabled test consistency2.

Sun Feb 25 17:28:09 GMT 2007  Olly Betts <olly@survex.com>

        * matcher/: Also apply the "decreasing weights with remote database"
          optimisations which we use in the sort_by_relevance case in the
          sort_by_relevance_then_value case.

Sat Feb 24 19:35:41 GMT 2007  Olly Betts <olly@survex.com>

        * backends/inmemory/inmemory_database.cc: If replace_document is used
          to set the docid of a newly added document which has previously
          existed, then we need to mark that document as valid (caught by
          existing test replacedoc4 in a debug build).

Sat Feb 24 17:11:22 GMT 2007  Olly Betts <olly@survex.com>

        * tests/api_wrdb.cc: Add regression test consistency2 for bug#110
          (currently skipped since the bug isn't fixed yet).

Thu Feb 22 15:18:53 GMT 2007  Olly Betts <olly@survex.com>

        * configure.ac: Add proper detection for SGI's C++ (check stderr
          output of "CC -v").  Automatically pass -ptused in CXXFLAGS for
          xapian-core and any applications using xapian-config --cxxflags
          since it seems to be required to avoid template linking errors.

Thu Feb 22 09:04:30 GMT 2007  Olly Betts <olly@survex.com>

        * docs/Makefile.am: Ship generated RSTHTML files.

Wed Feb 21 19:01:06 GMT 2007  Olly Betts <olly@survex.com>

        * languages/turkish.sbl: Make some simplifications to the code of the
          turkish stemmer.

Wed Feb 21 19:00:11 GMT 2007  Olly Betts <olly@survex.com>

        * languages/Makefile.mk,languages/stem.cc,languages/turkish.sbl:
          Add turkish stemmer.

Wed Feb 21 18:55:03 GMT 2007  Olly Betts <olly@survex.com>

        * languages/compiler/generator.c: Number m_test and c_test variables
          to avoid variable shadowing warnings.

Wed Feb 21 18:07:50 GMT 2007  Olly Betts <olly@survex.com>

        * languages/compiler/generator.c: Remove duplicate copy of function
          resulting from ham-fisted reverting and applying of patches.

Wed Feb 21 18:03:12 GMT 2007  Olly Betts <olly@survex.com>

        * languages/compiler/generator.c,languages/compiler/header.h: Number
          mlimit variables to avoid variable shadowing warnings.
        * languages/compiler/generator.c: Use "if (foo() == -1) return -1;"
          which avoids a temporary variable (improving readability of
          generated code) and producing very slightly faster code.
        * languages/compiler/header.h: Use "#ifdef DISABLE_JAVA" around Java
          generator specific struct members and prototypes.

Wed Feb 21 17:47:13 GMT 2007  Olly Betts <olly@survex.com>

        * languages/compiler/generator.c: Add "~C" comments to generated
          source for more operations.

Tue Feb 20 20:24:30 GMT 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_table.cc,backends/quartz/btree.cc: Ensure
          both_bases is set to false if we don't have both bases when
          opening a table using an existing object.

Tue Feb 20 15:57:05 GMT 2007  Olly Betts <olly@survex.com>

        * preautoreconf: Fix to handle generating dependencies on generated
          objects, at least for the "checked out tree from SVN" case.  Fixing
          this fully is trickier, but currently this is stopped snapshots
          from bootstrapping.

Tue Feb 20 14:28:02 GMT 2007  Charlie Hull

        * backends/flint/flint_btreebase.cc,backends/flint/flint_table.cc,
          backends/quartz/btree.cc: Use MS Windows API calls to delete
          files and open files we might want to delete while they are
          still open (i.e. the flint and quartz btree base files).  This
          fixes a problem when a writer can't discard an old revision at the
          exact moment a reader is opening it (bug #108).

Tue Feb 20 14:13:43 GMT 2007  Richard Boulton <richard@tartarus.org>

        * .: Add generate-exceptions to svn:ignore property.

Tue Feb 20 13:36:27 GMT 2007  Olly Betts <olly@survex.com>

        * generate-exceptions.in: Add missing '}' to close 'namespace Xapian'
          in generated header 'xapian/error.h'.

Tue Feb 20 13:26:19 GMT 2007  Olly Betts <olly@survex.com>

        * Makefile.am: Put generated exception headers in BUILT_SOURCES.

Tue Feb 20 12:10:18 GMT 2007  Olly Betts <olly@survex.com>

        * Makefile.am,configure.ac,generate-exceptions.in,include/Makefile.mk,
          include/xapian/error.h,include/xapian/errortypes.h,net/serialise.cc:
          Replace macro gymnastics with errortypes.h by a perl script which
          generates the headers we require.  It's more flexible, and easier to
          get doxygen to generate documentation from.
        * queryparser/queryparser.cc,tests/queryparsertest.cc: Throw new
          Error subclass QueryParserError instead of throwing const char *
          (fixes bug#101).

Tue Feb 20 10:37:54 GMT 2007  Olly Betts <olly@survex.com>

        * languages/steminternal.cc: p is never NULL once the class is
          successfully constructed, so just use Assert() to confirm this.

Tue Feb 20 10:29:25 GMT 2007  Olly Betts <olly@survex.com>

        * queryparser/lemon.c: Fix compiler warnings.

Mon Feb 19 18:50:12 GMT 2007  Olly Betts <olly@survex.com>

        * common/serialise-double.cc,net/remoteconnection.cc: Throw
          NetworkError rather than InternalError for invalid data received
          over the remote protocol.

Mon Feb 19 18:12:21 GMT 2007  Olly Betts <olly@survex.com>

        * tests/internaltest.cc: Just disable serialisequery1 if the remote
          backend is disabled, like we do for serialiselength1 and
          serialisedoc1 rather than assuming InternalError is due to the
          code being disabled.

Mon Feb 19 09:48:02 GMT 2007  Olly Betts <olly@survex.com>

        * docs/Makefile.am,docs/XapianAdminNotes.txt,docs/admin_notes.rst:
          Generated file "XapianAdminNotes.html" doesn't fit the naming
          conventions of other files at all, so renamed to "admin_notes.html".
          Rename the source to ".rst" so we can use an implicit rule for
          the conversion, in anticipation of other documentation in ReST
          format.

Mon Feb 19 09:10:48 GMT 2007  Olly Betts <olly@survex.com>

        * docs/Makefile.am: Fix typos which stopped parallel make from working
          correctly in "docs" subdirectory.

Sun Feb 18 22:36:46 GMT 2007  Olly Betts <olly@survex.com>

        * common/Makefile.mk,common/omstringstream.h,common/output.h,
          include/Makefile.mk,include/xapian/output.h: Move
          "<xapian/output.h>" to being an internal header in "common/" since
          it hasn't been included by "<xapian.h>" since 0.7.0.

Sun Feb 18 22:18:33 GMT 2007  Olly Betts <olly@survex.com>

        * include/xapian/dbfactory.h: Add documentation comment for the "prog"
          form of Remote::open_writable().

Sun Feb 18 19:31:20 GMT 2007  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Add test for "associative NEAR".

Sun Feb 18 18:27:40 GMT 2007  Olly Betts <olly@survex.com>

        * tests/harness/backendmanager.cc,tests/harness/backendmanager.h:
          Merge BackendManager::change_names_to_paths() into
          index_files_to_database() and make the latter a method of
          class BackendManager.
        * tests/harness/backendmanager.cc: Remove mention of muscat36 backends
          from error message listing valid backends.
        * tests/harness/backendmanager.h: Comment out prototypes for currently
          disabled methods getdb_inmemoryerr, getwritedb_inmemory, etc.

Sat Feb 17 15:38:05 GMT 2007  Olly Betts <olly@survex.com>

        * backends/flint/flint_table.cc: new throws if allocation fails
          so we don't need to check the return value.

Sat Feb 17 02:08:22 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * backends/flint/flint_table.cc: Fix memory double-frees if
          FlintTable::close() is called twice on a table (without an open()
          being called in between).  This was happening after a transaction
          failed when the table was next opened.
        * backends/quartz/btree.cc: Fix double-frees, similarly.

Fri Feb 16 20:11:13 GMT 2007  Olly Betts <olly@survex.com>

        * languages/compiler/generator.c: Add missing "~Z" for compatibility
          with C code generation (which we don't use for Xapian).

Fri Feb 16 19:51:26 GMT 2007  Olly Betts <olly@survex.com>

        * queryparser/tclUniData.h,queryparser/utf8itor.h: The tcl unicode
          routines only have tables for characters in the BMP.  For other
          characters, assume they're word characters, but can't be forced to
          lowercase.

Fri Feb 16 19:26:00 GMT 2007  Olly Betts <olly@survex.com>

        * queryparser/utf8itor.cc: Fix bug in decoding of 4 byte utf-8
          sequences - the returned value was 0x400000 too large!

Thu Feb 15 19:37:26 GMT 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony,tests/queryparsertest.cc: Keep
          embedded apostrophe's in terms rather than generating a phrase
          search for them.

Thu Feb 15 18:42:49 GMT 2007  Olly Betts <olly@survex.com>

        * languages/compiler/generator.c,languages/steminternal.cc,
          languages/steminternal.h: Tweak the "grouping" functions to allow
          skipping past multiple occurrences and use this to implement "goto"
          or "gopast" followed by a grouping or "non" grouping more
          efficiently.

Thu Feb 15 17:57:43 GMT 2007  Olly Betts <olly@survex.com>

        * languages/compiler/generator.c,languages/steminternal.cc,
          languages/steminternal.h: Inline lose_s().  Since lose_s()
          checks if p is NULL, remove checks prior to calling lose_s().
        * languages/steminternal.h: Cast from symbol * to int * via
          void * to try to suppress over-eager warnings about alignment.

Thu Feb 15 12:43:04 GMT 2007  Olly Betts <olly@survex.com>

        * languages/stem.cc: Add support for two letter ISO 639 codes.

Thu Feb 15 10:40:40 GMT 2007  Olly Betts <olly@survex.com>

        * docs/Makefile.am: Don't try to ship mkdoc.pl.

Thu Feb 15 09:58:48 GMT 2007  Olly Betts <olly@survex.com>

        * docs/gen_codestructure_doc.in: Fix to work in a VPATH build.

Thu Feb 15 09:54:55 GMT 2007  Olly Betts <olly@survex.com>

        * languages/compiler/generator.c: Fix Stem::get_description() to
          return the right string.

Thu Feb 15 09:44:54 GMT 2007  Olly Betts <olly@survex.com>

        * docs/gen_codestructure_doc.in: Add links to viewvcs on
          svn.xapian.org.

Thu Feb 15 09:26:07 GMT 2007  Olly Betts <olly@survex.com>

        * configure.ac,docs/Makefile.am,docs/gen_codestructure_doc.in,
          docs/mkdoc.pl,preautoreconf: Rework how code_structure.html
          is generated.  Nicer output, and the html document is now
          regenerated if any of the dir_contents files change.

Thu Feb 15 07:43:39 GMT 2007  Olly Betts <olly@survex.com>

        * Makefile.am,bin/Makefile.mk,configure.ac,examples/Makefile.mk,
          makemanpage.in: Add "makemanpage" script which takes care of all
          the magic needed to generate a man page using help2man.  This
          script is written in perl, but so is help2man, and they're both
          only used in maintainer-mode.

Thu Feb 15 06:33:41 GMT 2007  Olly Betts <olly@survex.com>

        * bin/Makefile.mk: Fix typos in man page generation rules.

Thu Feb 15 06:30:54 GMT 2007  Olly Betts <olly@survex.com>

        * examples/Makefile.mk: Fix typos in previous commit.

Thu Feb 15 06:03:35 GMT 2007  Olly Betts <olly@survex.com>

        * Makefile.am,configure.ac,examples/Makefile,examples/Makefile.am,
          examples/Makefile.mk: Convert examples subdirectory to use
          non-recursive make.  Fixes wishlist bug#97.

Thu Feb 15 05:48:38 GMT 2007  Olly Betts <olly@survex.com>

        * Makefile.am,bin/Makefile,bin/Makefile.am,bin/Makefile.mk,
          configure.ac: Convert bin subdirectory to use non-recursive make.

Wed Feb 14 19:08:49 GMT 2007  Olly Betts <olly@survex.com>

        * tests/Makefile.am: There's no longer a need to remove the temporary
          directories for muscat36 backend tests, since we've removed the
          muscat36 backend code.

Wed Feb 14 18:58:31 GMT 2007  Olly Betts <olly@survex.com>

        * languages/Makefile.mk: Move adjusting of INCLUDES to the top of the
          file.
        * queryparser/Makefile.mk: Adjust INCLUDES for a VPATH build.

Wed Feb 14 18:38:16 GMT 2007  Olly Betts <olly@survex.com>

        * languages/Makefile.mk: Need -Ilanguages for VPATH builds from SVN.

Wed Feb 14 18:37:54 GMT 2007  Olly Betts <olly@survex.com>

        * languages/steminternal.cc,languages/steminternal.h: Add
          SET_CAPACITY() macro.

Wed Feb 14 17:39:50 GMT 2007  Olly Betts <olly@survex.com>

        * languages/steminternal.h: Don't cast away const.

Wed Feb 14 17:14:14 GMT 2007  Olly Betts <olly@survex.com>

        * include/Makefile: Add stub makefile.

Wed Feb 14 17:12:41 GMT 2007  Olly Betts <olly@survex.com>

        * configure.ac: ac_abs_srcdir, etc aren't available in configure
          itself, so we have to do the work ourselves.

Wed Feb 14 12:54:26 GMT 2007  Olly Betts <olly@survex.com>

        * configure.ac: Fix typo in last commit.

Wed Feb 14 12:19:18 GMT 2007  Olly Betts <olly@survex.com>

        * Makefile.am,configure.ac,languages/Makefile.mk: Define automake
          conditional VPATH_BUILD so we can only add extra entries to
          INCLUDES in VPATH builds.

Wed Feb 14 11:59:02 GMT 2007  Olly Betts <olly@survex.com>

        * languages/Makefile.mk: Ick, we need $(top_srcdir)/languages in
          INCLUDES as the generated sources need to find non-generated
          headers.

Wed Feb 14 11:46:43 GMT 2007  Olly Betts <olly@survex.com>

        * backends/database.cc,backends/remote/remote-database.cc,
          common/database.h,common/remote-database.h,common/remoteprotocol.h,
          docs/remote_protocol.html,net/remoteserver.cc: Support
          get_lastdocid() on remote databases.

Wed Feb 14 11:20:33 GMT 2007  Olly Betts <olly@survex.com>

        * Makefile.am,configure.ac,include/Makefile.am,include/Makefile.mk:
          Convert include subdirectory to use non-recursive make.

Wed Feb 14 11:05:00 GMT 2007  Olly Betts <olly@survex.com>

        * Makefile.am,bin/Makefile.am,configure.ac,examples/Makefile.am,
          getopt/Makefile,getopt/Makefile.am,getopt/Makefile.mk,
          tests/Makefile.am: Convert getopt subdirectory to use non-recursive
          make.

Wed Feb 14 10:56:15 GMT 2007  Olly Betts <olly@survex.com>

        * tests/harness/Makefile.am: Remove as no longer used.

Wed Feb 14 10:38:27 GMT 2007  Olly Betts <olly@survex.com>

        * backends/quartz/Makefile.mk,bin/Makefile.am,tests/Makefile.am: Move
          backends/quartz/libbtreecheck.la to libquartzcheck.la.
        * getopt/Makefile.am: Distribute getopt/dir_contents.

Wed Feb 14 10:20:14 GMT 2007  Olly Betts <olly@survex.com>

        * preautoreconf: Handle variables set with "+=" and ":=".

Wed Feb 14 10:16:29 GMT 2007  Olly Betts <olly@survex.com>

        * include/xapian/database.h: Add documentation comments for DB_*
          constants.

Wed Feb 14 10:11:37 GMT 2007  Olly Betts <olly@survex.com>

        * examples/.cvsignore: Remove lingering relic of CVS days.

Wed Feb 14 10:07:14 GMT 2007  Olly Betts <olly@survex.com>

        * Makefile.am,configure.ac,net/Makefile,net/Makefile.am,
          net/Makefile.mk: Convert net subdirectory to use non-recursive make.
          Now libxapian.la is built completely non-recursively.
        * docs/Makefile.am,docs/mkdoc.pl: Fix mkdoc.pl to handle directories
          which use non-recursive make.

Wed Feb 14 09:10:27 GMT 2007  Olly Betts <olly@survex.com>

        * Makefile.am,backends/Makefile,backends/Makefile.am,
          backends/Makefile.mk,backends/flint/Makefile,
          backends/flint/Makefile.am,backends/flint/Makefile.mk,
          backends/inmemory/Makefile,backends/inmemory/Makefile.am,
          backends/inmemory/Makefile.mk,backends/multi/Makefile,
          backends/multi/Makefile.am,backends/multi/Makefile.mk,
          backends/quartz/Makefile,backends/quartz/Makefile.am,
          backends/quartz/Makefile.mk,backends/remote/Makefile,
          backends/remote/Makefile.am,backends/remote/Makefile.mk,
          configure.ac: Convert backends subdirectory (and subdirectories
          thereof) to non-recursive make.

Wed Feb 14 08:49:02 GMT 2007  Olly Betts <olly@survex.com>

        * preautoreconf: Fix handling of backslash at the end of a line in
          included files.
        * preautoreconf: Our handling of which directory a nested include is
          sought from is consistent with automake, so remove the FIXME comment
          about it.

Wed Feb 14 08:07:07 GMT 2007  Olly Betts <olly@survex.com>

        * Makefile.am,configure.ac,matcher/Makefile,matcher/Makefile.am,
          matcher/Makefile.mk: Convert matcher subdirectory to non-recursive
          make.

Wed Feb 14 07:50:19 GMT 2007  Olly Betts <olly@survex.com>

        * Makefile.am,api/Makefile,api/Makefile.am,api/Makefile.mk,
          configure.ac: Convert api subdirectory to non-recursive make.

Wed Feb 14 07:48:45 GMT 2007  Olly Betts <olly@survex.com>

        * preautoreconf: No need to `chdir' to the current directory.
        * preautoreconf: Don't bother looking at the file we generate
          when considering included files.
        * preautoreconf: Add included files to the dependency list.

Wed Feb 14 07:38:19 GMT 2007  Olly Betts <olly@survex.com>

        * preautoreconf: Generate dummy rules for the files which
          preautoreconf depends on, so that "make" still works if one
          of them is removed (by build system restructuring).

Wed Feb 14 07:24:07 GMT 2007  Olly Betts <olly@survex.com>

        * common,languages,tests/harness: svn:ignore: We do need to ignore
          .dirstamp files after all.

Wed Feb 14 07:22:29 GMT 2007  Olly Betts <olly@survex.com>

        * Makefile.am,common/Makefile,common/Makefile.am,common/Makefile.mk,
          configure.ac: Convert common subdirectory to non-recursive make.

Wed Feb 14 07:03:27 GMT 2007  Olly Betts <olly@survex.com>

        * .: svn:ignore: Ignore all vim swapfiles.  No need to ignore .deps
          now that dummy.cc is history.

Wed Feb 14 06:34:44 GMT 2007  Olly Betts <olly@survex.com>

        * tests/stemtest.cc: Force ASCII capitals in sample vocabulary to
          lower case before stemming.

Wed Feb 14 06:14:42 GMT 2007  Olly Betts <olly@survex.com>

        * Makefile.am,configure.ac,queryparser/Makefile,
          queryparser/Makefile.am,queryparser/Makefile.mk:
          Convert queryparser subdirectory to non-recursive make.
        * Makefile.am: Enable automake option "subdir-objects" so
          that built objects for a non-recursively made directory
          go into that directory.

Wed Feb 14 06:12:29 GMT 2007  Olly Betts <olly@survex.com>

        * tests/harness: svn:ignore: remove .dirstamp and depcomp.

Wed Feb 14 06:10:44 GMT 2007  Olly Betts <olly@survex.com>

        * languages/Makefile.mk: In maintainer-mode, remove snowball and
          generated allsnowballheaders.h on "make clean".  When not in
          maintainer-mode, remove them on "make maintainer-clean".
        * languages/: svn:ignore all vim swap files.

Wed Feb 14 05:54:32 GMT 2007  Olly Betts <olly@survex.com>

        * languages/Makefile.mk: Distribute the stub languages/Makefile.
        * tests/harness/Makefile.mk: No need to explicitly distribute
          harness/Makefile.mk.

Wed Feb 14 05:52:08 GMT 2007  Olly Betts <olly@survex.com>

        * languages/Makefile.mk: Distribute languages/dir_contents.

Wed Feb 14 05:44:10 GMT 2007  Olly Betts <olly@survex.com>

        * api/Makefile.am,api/vectortermlist.h,common/Makefile.am,
          queryparser/Makefile.am: We use vectortermlist.h from the
          queryparser directory, so move it from api to common.

Wed Feb 14 05:27:13 GMT 2007  Olly Betts <olly@survex.com>

        * languages/Makefile.mk,languages/stem.cc: Disable finnish and lovins
          temporarily, until I sort out merging the support for among with
          functions properly.

Wed Feb 14 05:24:36 GMT 2007  Olly Betts <olly@survex.com>

        * languages/steminternal.cc,languages/steminternal.h: Temporarily
          back out the changes to handling of among with functions.

Tue Feb 13 19:11:57 GMT 2007  Olly Betts <olly@survex.com>

        * tests/harness/testsuite.cc: If a test throws an unknwon exception,
          say so in the test failure message.  If it throws std::string,
          report the first 40 character (or first line) of the string.

Tue Feb 13 17:48:11 GMT 2007  Olly Betts <olly@survex.com>

        * languages/steminternal.cc: Fix decoding of 3 byte utf-8 sequences.

Tue Feb 13 17:47:22 GMT 2007  Olly Betts <olly@survex.com>

        * languages/Makefile.mk: Fix dependency of generated
          languages/allsnowballheaders.h to be on languages/Makefile.mk.

Tue Feb 13 17:46:42 GMT 2007  Olly Betts <olly@survex.com>

        * languages/compiler/generator.c: Fix missing ";" in generated
          code.

Tue Feb 13 15:40:15 GMT 2007  Olly Betts <olly@survex.com>

        * languages/Makefile.mk,languages/compiler/driver.c,
          languages/compiler/generator.c,languages/compiler/header.h:
          Changes towards getting C++ generation working.

Tue Feb 13 15:39:23 GMT 2007  Olly Betts <olly@survex.com>

        * languages/steminternal.cc,languages/steminternal.h: Revert to match
          currently generated code.

Tue Feb 13 14:09:31 GMT 2007  Olly Betts <olly@survex.com>

        * languages/compiler/: Sync with current snowball SVN + submitted
          patches.

Tue Feb 13 10:53:34 GMT 2007  Olly Betts <olly@survex.com>

        * tests/harness/backendmanager.cc: If we fail to start
          xapian-tcpsrv, report why (give errno or the error output).

Tue Feb 13 10:28:43 GMT 2007  Olly Betts <olly@survex.com>

        * tests/remotetest.cc: Prune test cases which are redundant now that
          apitest tests remote and remotetcp: apitest's simplequery1 performs
          a superset of what netmatch1 and tcpmatch1 do; apitest's multidb1
          performs a superset of what netmatch2 does; and the coverage given
          by our netexpand1 is provided by various apitest tests.

Mon Feb 12 06:36:58 GMT 2007  Olly Betts <olly@survex.com>

        * languages/compiler/generator.c: In backward mode, among
          can't match if there are fewer characters before the current
          position than the minimum length string in the among.

Mon Feb 12 05:56:31 GMT 2007  Olly Betts <olly@survex.com>

        * configure.ac: Make sure that the languages subdirectory exists in
          case this is a fresh SVN checkout and srcdir != builddir.

Mon Feb 12 05:46:49 GMT 2007  Olly Betts <olly@survex.com>

        * languages/Makefile.mk,languages/compiler/driver.c: -DDISABLE_JAVA
          to not compile in Java support (inline with Richard's patch to
          the upstream snowball sources).
        * languages/Makefile.mk: Remove inaccurate comment about processing
          with automake.  Fix -n option we pass (remove directory name).
          Use "" instead of <> in generated file allsnowballheaders.h.  Remove
          snowball compiler and generated files on "make maintainer-clean".

Mon Feb 12 01:08:50 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * languages/compiler/header.h: Remove commented out header for
          sort() prototype, to match snowball sources.

Sun Feb 11 19:28:50 GMT 2007  Olly Betts <olly@survex.com>

        * languages/api.h,languages/header.h: Remove headers which are no
          longer used.

Sun Feb 11 19:26:50 GMT 2007  Olly Betts <olly@survex.com>

        * languages/api.cc,languages/utilities.cc: Remove sources which are
          no longer used.

Sun Feb 11 16:22:16 GMT 2007  Olly Betts <olly@survex.com>

        * languages/compiler/driver.c: Use #ifdef instead of #if.

Sun Feb 11 16:20:44 GMT 2007  Olly Betts <olly@survex.com>

        * languages/compiler/driver.c: Disable java support, since we don't
          use it and it means one less source file.

Sun Feb 11 16:08:49 GMT 2007  Olly Betts <olly@survex.com>

        * languages/compiler/analyser.c,languages/compiler/header.h: Use qsort
          instead the snowball's own sort implementation to reduce the number
          of source files we need for the snowball compiler.

Sun Feb 11 16:04:19 GMT 2007  Olly Betts <olly@survex.com>

        * languages/Makefile: Add stub Makefile to allow "make", "make check",
          and "make clean" from the languages subdirectory.

Sun Feb 11 16:00:51 GMT 2007  Olly Betts <olly@survex.com>

        * languages/compiler/analyser.c: Cast the arguments, not the function
          pointer as ISO C allows `void*' and `struct amongvec*' to have
          different representations.

Sun Feb 11 15:43:49 GMT 2007  Olly Betts <olly@survex.com>

        * languages/compiler/space.c: Fix a typo of a function name in a
          comment.

Sun Feb 11 15:23:51 GMT 2007  Olly Betts <olly@survex.com>

        * languages/compiler/header.h,languages/compiler/tokeniser.c: Give
          syswords and syswords2 .h extensions for clarity.

Sun Feb 11 15:17:28 GMT 2007  Olly Betts <olly@survex.com>

        * Makefile.am,api/Makefile.am,api/omstem.cc,configure.ac,dummy.cc,
          languages/Makefile.am,languages/Makefile.mk,languages/compiler/,
          languages/: Update the stemmers to use utf-8 and the latest snowball
          version (based on r421 from snowball SVN).  Further patches are
          required to generate C++ classes from snowball, I'm checking in the
          vanilla compiler first to help us track the patches.

Sun Feb 11 14:16:35 GMT 2007  Olly Betts <olly@survex.com>

        * api/omstem.cc: Add definition for Xapian::Stem::stem_word().

Sun Feb 11 13:15:11 GMT 2007  Olly Betts <olly@survex.com>

        * tests/api_anydb.cc,tests/api_db.cc,tests/api_posdb.cc: Prefer
          Xapian::Stem::operator() to Xapian::Stem::stem_word().

Sat Feb 10 19:10:31 GMT 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Prefer Xapian::Stem::operator() to
          Xapian::Stem::stem_word().

Sat Feb 10 18:34:41 GMT 2007  Olly Betts <olly@survex.com>

        * include/xapian/stem.h: Make Xapian::Stem::Internal as @internal for
          doxygen.  Mark Xapian::Stem::stem_word() as deprecated.

Sat Feb 10 18:34:05 GMT 2007  Olly Betts <olly@survex.com>

        * HACKING: Add brief note about coding style.

Sat Feb 10 18:24:28 GMT 2007  Olly Betts <olly@survex.com>

        * preautoreconf: Add licence and copyright notice.  Add support for
          automake include directives.  Warn about unknown variables.

Sat Feb 10 18:19:26 GMT 2007  Olly Betts <olly@survex.com>

        * tests/harness/testsuite.cc: Conditionalise all the valgrind specific
          code on RUNNING_ON_VALGRIND to minimise the overhead if valgrind
          is installed but we aren't running tests under it.

Sat Feb 10 17:42:05 GMT 2007  Olly Betts <olly@survex.com>

        * tests/harness/index_utils.cc,tests/stemtest.cc: Prefer
          Xapian::Stem::operator() to Xapian::Stem::stem_word().

Sat Feb 10 17:27:27 GMT 2007  Olly Betts <olly@survex.com>

        * examples/delve.cc,examples/simpleindex.cc,examples/simplesearch.cc:
          Prefer Xapian::Stem::operator() to Xapian::Stem::stem_word().

Wed Feb 07 04:23:09 GMT 2007  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony,queryparser/queryparser.lt: Use
          new/delete instead of malloc/free to allocate struct yyParser
          and pass it around as "yyParser *" instead of "void *".

Wed Feb 07 03:44:16 GMT 2007  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h,queryparser/queryparser.cc,
          queryparser/queryparser.lemony,queryparser/queryparser_internal.h,
          tests/queryparsertest.cc: Allow the default prefix to be specified
          so you can use QueryParser to parse a text entry box for "author"
          etc.
        * configure.ac: Note API change for LIBRARY_VERSION_INFO updating.

Wed Feb 07 01:14:37 GMT 2007  Olly Betts <olly@survex.com>

        * common/safeunistd.h: Add '#include <sys/types.h>' so that we've seen
          a typedef for off_t before we hide it behind a #define to avoid a
          compilation error if <sys/types.h> or <wchar.h> is included after
          we are.

Tue Feb 06 06:26:24 GMT 2007  Olly Betts <olly@survex.com>

        * INSTALL: Mention MSVC makefiles.  Note that we still test build with
          GCC 2.95.4 even though we recommend using a newer version.

Tue Feb 06 06:13:48 GMT 2007  Olly Betts <olly@survex.com>

        * AUTHORS,HACKING,backends/flint/,backends/quartz/btree.cc,
          backends/quartz/quartz_database.cc,bin/quartzcompact.cc,
          bin/xapian-compact.cc,common/,tests/btreetest.cc,
          tests/harness/backendmanager.cc,tests/harness/testsuite.cc,
          tests/quartztest.cc: Support large files in stat() and fstat()
          when building with MSVC.  Factor MSVC specific header magic
          into new replacement headers "safeunistd.h" and "safesysstat.h".
        * AUTHORS: Thanks to Charlie Hull for the original patch to support
          stat() on large files with MSVC (and past MSVC related stuff!)

Sat Jan 13 02:06:15 GMT 2007  Olly Betts <olly@survex.com>

        * include/xapian/database.h: Add pointer from
          WritableDatabase::add_document() to replace_document() in case the
          user wants to specify the docid themselves.  Also improve the
          wording of the warning about changes not being committed to disk
          right away.

Tue Jan  2 15:49:43 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

        * backends/quartz/btree.cc,backends/flint/flint_io.h: Patches from
          Charlie Hull to allow 2GB+ index files work when compiled using
          Visual C++.

Sat Dec 30 13:48:54 GMT 2006  Richard Boulton <richard@lemurconsulting.com>

        * queryparser/queryparser.lemony,include/xapian/queryparser.h:
          Add support for partially entered queries, to better support
          incremental searching.  Also fix a typo in a comment.
        * docs/queryparser.html: Document the new partial query option, and
          what it's useful for.
        * tests/queryparsertest.cc: Test partial queries.

Wed Dec 20 16:42:24 GMT 2006  Olly Betts <olly@survex.com>

        * PLATFORMS: Updated with success reports from debian buildds.

Wed Dec 20 00:53:19 GMT 2006  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc: Fix "unused parameter" warning when building
          with the remote backend disabled.  Also update a comment - the query
          serialisation isn't really one line of text since we now store term
          names with the length prefixed, and they can contain arbitrary
          characters including linefeeds.

Tue Dec 19 20:40:27 GMT 2006  Olly Betts <olly@survex.com>

        * tests/Makefile.am: Need libgetopt.la for test programs which
          use the test harness for platforms where GNU getopt isn't in
          the standard C library.

Tue Dec 19 20:34:16 GMT 2006  Olly Betts <olly@survex.com>

        * queryparser/utf8itor.h: Need <string.h> for strlen.

Tue Dec 19 16:35:58 GMT 2006  Olly Betts <olly@survex.com>

        * common/omstringstream.h: Fix "warning: comparison between signed and
          unsigned".

Tue Dec 19 15:33:19 GMT 2006  Olly Betts <olly@survex.com>

        * backends/flint/flint_positionlist.cc: Turn the second (and
          potentially slightly deeper) recursion in encode_interpolative
          and decode_interpolative into explicit iteration in case the
          compiler fails to optimise the tail recursion.

Mon Dec 18 03:39:41 GMT 2006  Olly Betts <olly@survex.com>

        * matcher/: Add ExactPhrasePostList to handle the common special case
          where the window size of OP_PHRASE is equal to the number of terms
          in the phrase.

Mon Dec 18 02:21:32 GMT 2006  Olly Betts <olly@survex.com>

        * tests/harness/testsuite.cc: Remove accidentally committed "NO
          PROBLEM" message when running under valgrind.

Wed Dec 13 21:15:57 GMT 2006  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/document.h: Another tweak to the documentation
          comment.

Wed Dec 13 18:07:51 GMT 2006  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/document.h: Improve documentation comment for
          Document::get_value().

Wed Dec 13 03:38:37 GMT 2006  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: In the description of the TradWeight
          class, replace reference to "Muscat 3.6" (meaningless to most
          people) with a generally useful explanation.

Wed Dec 13 03:27:14 GMT 2006  Olly Betts <olly@survex.com>

        * docs/: svn:ignore XapianAdminNotes.html.

Wed Dec 13 03:16:44 GMT 2006  Olly Betts <olly@survex.com>

        * configure.ac: Yet more valgrind test improvements!  Give up testing
          valgrind features if VALGRIND_COUNT_LEAKS isn't supported.  Fix the
          common shortcut case to not try logging to /dev/null.<pid> so it
          can actually get used.  Also don't use /dev/null in the --logfile
          case either as it will probably cause problems there too (though I
          don't have an old enough valgrind handy to verify this).  Also report
          results of valgrind tests in a couple more places.

Wed Dec 13 00:31:04 GMT 2006  Richard Boulton <richard@lemurconsulting.com>

        * docs/Makefile.am: New rules for generating XapianAdminNotes.html
          from XapianAdminNotes.txt
        * configure.ac: Check for rst2html, and require it in maintainer
          mode.
        * HACKING: document rst2html as a requirement.

Tue Dec 12 23:58:13 GMT 2006  Richard Boulton <richard@lemurconsulting.com>

        * docs/XapianAdminNotes.txt: Add new document giving an
          introduction to Xapian concepts for system administrators.

Tue Dec 12 21:33:38 GMT 2006  Richard Boulton <richard@lemurconsulting.com>

        * docs/quartzdesign.html: Fix an unmatched bracket.

Tue Dec 12 21:18:54 GMT 2006  Richard Boulton <richard@lemurconsulting.com>

        * backends/quartz/quartz_alldocspostlist.cc: Fix memory leak
          discovered by valgrind in QuartzAllDocsPostList constructor: was
          failing to delete the Bcursor.

Tue Dec 12 21:05:47 GMT 2006  Richard Boulton <richard@lemurconsulting.com>

        * queryparser/queryparser.lemony: Fix parsing of queries of the
          form "+foo* bar", where no terms in the database match the
          wildcard "foo*", but bar does exist in the database.  Previously,
          such queries would be equivalent to "bar".  Now, they will match
          no documents.  This required using a new "QpQuery" object
          internally so we can distinguish between deliberately "match
          nothing" queries, and empty lists of queries.
        * tests/api_anydb.cc,tests/queryparsertest.cc: Test above fix, and
          general parsing of wildcard queries with +terms, and test
          performing a match with a query resulting from a wildcard query
          which matches nothing.

Tue Dec 12 21:05:15 GMT 2006  Richard Boulton <richard@lemurconsulting.com>

        * tests/api_nodb.cc,api/omqueryinternal.cc,api/omquery.cc: Fix some
          copyright assertions I missed.

Tue Dec 12 19:38:39 GMT 2006  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/query.h,api/omqueryinternal.cc,api/omquery.cc: Add
          two static Query objects: Xapian::Query::MatchAll and
          Xapian::Query::MatchNothing, which match all documents and no
          documents in the database, respectively.  (Equivalent to
          Query("") and Query()).  Allow empty queries such as MatchNothing
          to be combined with other queries.  Change methods of
          Xapian::Query::Internal to use pointers to query internals
          instead of references, so they can handle the NULL pointer
          internals of an empty query.
        * tests/api_nodb.cc: Test combining of MatchNothing queries with
          other queries with OP_AND and OP_OR.

Tue Dec 12 20:01:58 GMT 2006  Richard Boulton <richard@lemurconsulting.com>

        * configure.ac: Fix valgrind better: --log-file-exactly isn't what
          is wanted, because it messes up if multiple processes are traced.
          Instead, use a temporary file instead of /dev/null, so we don't
          get the permission denied error.

Tue Dec 12 19:15:20 GMT 2006  Richard Boulton <richard@lemurconsulting.com>

        * configure.ac: Fix detection of valgrind for newer valgrind.  My
          version of valgrind (valgrind-3.2.1-Debian, from ubuntu feisty)
          treats the parameter supplied to --log-file as a base path, and
          appends a process ID. This caused the test for the log-file
          option to fail with permission denied errors due to trying to
          write to files of the form '/dev/null.16098'.  Solution - test
          for the --log-file-exactly option, and use that.  Also, change
          configure.ac to display the result of the tests for valgrind; was
          displaying that it had found it, but not mentioning that it
          couldn't make it work.

Tue Dec 05 21:12:12 GMT 2006  Richard Boulton <richard@lemurconsulting.com>

        * include/xapian/query.h,api/omqueryinternal.cc: Fix query
          serialisation bug.  Was failing to propagate "curpos" parameter
          across subqueries, resulting in incorrect serialisation of
          termpositions.
        * tests/internaltest.cc: Regression test for this bug.

Tue Dec 05 01:34:07 GMT 2006  Olly Betts <olly@survex.com>

        * HACKING: Clarify how XAPIAN_DEBUG_FLAGS works.

Tue Dec 05 01:23:12 GMT 2006  Olly Betts <olly@survex.com>

        * examples/quest.cc: Add "--stemmer" option to allow stemming language
          to be set, or stemming to be disabled.

Sun Dec 03 00:34:27 GMT 2006  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony,tests/queryparsertest.cc: Add entries
          to the "unstem" map for prefixed boolean filters (e.g. type:html).
          Also don't corrupt non-ASCII characters in a prefixed boolean
          filter.

Sat Nov 25 04:17:23 GMT 2006  Olly Betts <olly@survex.com>

        * backends/flint/flint_database.cc,backends/flint/flint_version.cc:
          The "my_fls()" change actually results in a different interpolative
          encoding in a few cases - the old encoding could vary between
          architectures so we have to change it.  So bump the FLINT_VERSION
          and change the "flicklock" file to be "flintlock" as it should have
          been all along!

Wed Nov 22 18:55:42 GMT 2006  Olly Betts <olly@survex.com>

        * xapian-config.in: Improve --version output so that help2man produces
          a better man page.

Mon Nov 20 07:21:07 GMT 2006  Olly Betts <olly@survex.com>

        * backends/flint/flint_positionlist.cc: Fix another off-by-one
          error (> should be >=).

Mon Nov 20 07:12:11 GMT 2006  Olly Betts <olly@survex.com>

        * backends/flint/flint_positionlist.cc: Fix off-by-one error in code
          which calls my_fls().

Sat Nov 18 08:32:08 GMT 2006  Olly Betts <olly@survex.com>

        * backends/flint/flint_positionlist.cc: "const static" -> "static
          const".

Sat Nov 18 08:05:17 GMT 2006  Olly Betts <olly@survex.com>

        * backends/flint/flint_positionlist.cc: Make decode_interpolative
          a member function of BitReader.

Sat Nov 18 07:45:19 GMT 2006  Olly Betts <olly@survex.com>

        * backends/flint/flint_positionlist.cc: Add highly optimised fls()
          implementation and make use of it.

Thu Nov 16 04:22:36 GMT 2006  Olly Betts <olly@survex.com>

        * m4/xapian.m4: If XAPIAN_CONFIG wasn't specified and xapian-config
          wasn't found, see if the library seems to be present - if so give
          a different error message which suggests the user needs to install
          a -dev or -devel package.

Thu Nov 16 02:11:34 GMT 2006  Olly Betts <olly@survex.com>

        * docs/install.html: omega tarball is now xapian-omega.

Tue Nov 14 22:42:05 GMT 2006  Olly Betts <olly@survex.com>

        * tests/harness/Makefile: Add static Makefile so you can make all,
          check, and clean from the subdirectory.
        * tests/harness/Makefile.mk: Ship Makefile.mk and Makefile.

Tue Nov 14 21:53:45 GMT 2006  Olly Betts <olly@survex.com>

        * tests/: Remove muscat36 temporary directories from svn:ignore
          property.

Tue Nov 14 19:47:30 GMT 2006  Olly Betts <olly@survex.com>

        * configure.ac,tests/Makefile.am,tests/harness/Makefile.mk: Use
          non-recursive make to build the test harness, so it only gets
          built if "make check" is run.

Tue Nov 14 19:43:48 GMT 2006  Olly Betts <olly@survex.com>

        * tests/quartztest.cc: Removed unused static function unlink_table.

Tue Nov 14 17:41:26 GMT 2006  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h,queryparser/queryparser.lemony,
          tests/queryparsertest.cc: Add QueryParser::FLAG_PURE_NOT to allow
          pure NOT queries to be enabled (they are now disabled by default).

Tue Nov 14 04:19:40 GMT 2006  Olly Betts <olly@survex.com>

        * backends/database.cc,backends/flint/dir_contents,
          backends/quartz/dir_contents,docs/overview.html,
          docs/quartzdesign.html,docs/scalability.html: Make flint the default
          backend.

Tue Nov 14 03:25:19 GMT 2006  Olly Betts <olly@survex.com>

        * tests/api_nodb.cc: Xapian::Query("") now builds a query which
          matches all documents rather than throwing InvalidArgumentError
          so fix emptyquery1 test.

Tue Nov 14 02:03:29 GMT 2006  Olly Betts <olly@survex.com>

        * api/omdocument.cc: Tweak OmDocumentTerm::add_position() so that
          adding position 0 to an empty termlist takes the shortcut.

Mon Nov 13 05:46:15 GMT 2006  Olly Betts <olly@survex.com>

        * docs/queryparser.html: Document the new pure NOT feature.

Mon Nov 13 05:24:30 GMT 2006  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc,queryparser/queryparser.lemony,
          tests/queryparsertest.cc: Allow "pure NOT" queries - e.g.
          "NOT apples".  Fixes bug #99.

Mon Nov 13 04:54:04 GMT 2006  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc: Undo changes accidentally committed in last
          check-in.

Mon Nov 13 04:47:57 GMT 2006  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc,backends/Makefile.am,backends/database.cc,
          backends/muscat36/,configure.ac,docs/overview.html,
          docs/quartzdesign.html,docs/tests.html,include/xapian/dbfactory.h,
          include/xapian/version_h.cc,tests/api_anydb.cc,tests/apitest.cc,
          tests/harness/backendmanager.cc,tests/harness/backendmanager.h,
          tests/harness/index_utils.cc: Remove support for the old Muscat 3.6
          backends.

Mon Nov 13 04:02:27 GMT 2006  Richard Boulton <richard@lemurconsulting.com>

        * common/database.h,api/omdatabase.cc,
          backends/inmemory/inmemory_database.cc,
          backends/inmemory/inmemory_database.h,
          backends/quartz/Makefile.am,backends/quartz/quartz_database.cc,
          backends/quartz/quartz_alldocspostlist.h,
          backends/quartz/quartz_alldocspostlist.cc,
          backends/flint/Makefile.am,backends/flint/flint_database.cc,
          backends/flint/flint_alldocspostlist.cc,
          backends/flint/flint_alldocspostlist.h:
          Implement posting lists which return a list of all documents in
          the database.  Such a posting list is obtained by calling
          Xapian::Database::postlist_begin() with an empty term (ie, "").
          Also, all Xapian::Database methods which take a termname now
          accept an empty term, and return appropriate values (ie,
          get_termfreq("") and get_collection_freq("") return the number of
          documents in the database, and term_exists("") returns true
          unless the database is empty).  Fixes Bug #47.
        * docs/quartzdesign.html: Document the inefficiency of all-document
          postlists for Quartz.
        * tests/api_anydb.cc,tests/api_db.cc,tests/api_wrdb.cc: Add tests for
          all-document postlists, and for passing an empty term to all the
          applicable database methods.  This defines the new tests
          allpostlist1, allpostlist2, emptyterm1, and emptyterm2.  These
          tests currently skip for the remote backend where postlist_begin()
          isn't yet implemented.

Mon Nov 13 02:06:03 GMT 2006  Olly Betts <olly@survex.com>

        * Merge in utf8 branch:

        Thu Sep 14 23:49:48 BST 2006  Olly Betts <olly@survex.com>

                * queryparser/,tests/queryparsertest.cc: Update to work with
                  UTF-8.  Stop normalising accents - the general sentiment
                  seems to be firmly against it, and where it is still
                  appropriate we should get the stemmers to do it.

Sun Nov 12 22:38:56 GMT 2006  Olly Betts <olly@survex.com>

        * NEWS: Update from ChangeLog file in preparation for branching and
          merging.

Sun Nov 12 19:32:01 GMT 2006  Olly Betts <olly@survex.com>

        * backends/flint/flint_database.cc,
          backends/inmemory/inmemory_database.cc,
          backends/inmemory/inmemory_database.h,
          backends/quartz/quartz_database.cc: Fix replace_document() not to
          lose positional information for a document if it is replaced with
          itself with unmodified postings.
        * tests/api_wrdb.cc: Add testcase replace_document5 as regression test
          for the replace_document bug.
        * backends/remote/remote-database.cc: Fix
          RemoteDatabase::has_positions() to refetch the cached value if it
          might be out of date.

Sun Nov 12 17:07:00 GMT 2006  Olly Betts <olly@survex.com>

        * docs/Makefile.am: Need to increase pool_size further still to build
          sourcedoc.pdf (2000000 now).

Sun Nov 12 16:24:15 GMT 2006  Olly Betts <olly@survex.com>

        * HACKING: Add "update ReleaseNotes on wiki" to release checklist.

Sun Nov 12 16:23:19 GMT 2006  Olly Betts <olly@survex.com>

        * xapian.spec.in: Remove "." from end of "Summary:".  Package
          new man page for xapian-progsrv.

Sun Nov 12 00:43:36 GMT 2006  Olly Betts <olly@survex.com>

        * docs/stemming.html: Update another "CVS" reference to say "SVN".

Sun Nov 12 00:42:22 GMT 2006  Olly Betts <olly@survex.com>

        * docs/install.html: Update reference to "CVS" to say "SVN".

Thu Nov 09 01:11:52 GMT 2006  Olly Betts <olly@survex.com>

        * HACKING: Reorder the release checklist a little.  I've fixed
          update_website.sh to get the latest version from version.php, so
          now only version.php needs updating.

Thu Nov 09 00:17:35 GMT 2006  Olly Betts <olly@survex.com>

        * NEWS,PLATFORMS,configure.ac: Update for 0.9.9.

Wed Nov 08 20:54:31 GMT 2006  Olly Betts <olly@survex.com>

        * xapian.spec.in: Apply changes from Neal Becker to run "autoreconf
          --force" so that we don't set rpath for /usr/lib64, and add "libs"
          to %post and %postun.
        * AUTHORS: Thank Neal Becker.

Wed Nov 08 04:27:17 GMT 2006  Olly Betts <olly@survex.com>

        * docs/tests.html: Update for "testsuite" -> "tests/harness".  Mark
          paths and programs with <code>...</code>.  Improve wording in a few
          places.

Wed Nov 08 03:10:37 GMT 2006  Olly Betts <olly@survex.com>

        * bin/xapian-tcpsrv.cc: Need '#include "safeerrno.h"' for EADDRINUSE.

Wed Nov 08 02:36:59 GMT 2006  Olly Betts <olly@survex.com>

        * bin/Makefile.am,bin/xapian-progsrv.cc,bin/xapian-tcpsrv.cc:
          xapian-progsrv now uses getopt for option processing, and we can
          now generate a man page using help2man.  Fixes Bug #98.

Wed Nov 08 01:47:19 GMT 2006  Olly Betts <olly@survex.com>

        * bin/xapian-tcpsrv.cc: If the port requested is in use, exit with
          code 69 (EX_UNAVAILABLE) which is useful if you're trying to
          automate launching of xapian-tcpsrv instances.
        * tests/harness/backendmanager.cc: If we can't start xapian-tcpsrv
          because the port is in use, try higher numbered ports.
        * tests/harness/testsuite.cc: Catch and report std::string exceptions.

Tue Nov 07 22:40:58 GMT 2006  Olly Betts <olly@survex.com>

        * net/tcpclient.cc: Turn on TCP_NODELAY for the client too.

Tue Nov 07 21:46:39 GMT 2006  Olly Betts <olly@survex.com>

        * net/tcpserver.cc: Turn on TCP_NODELAY for xapian-tcpsrv which
          increases throughput for the remote backend over tcp.

Tue Nov 07 21:08:57 GMT 2006  Olly Betts <olly@survex.com>

        * backends/flint/flint_btreebase.cc: Add missing '#include'-s.

Tue Nov 07 17:57:22 GMT 2006  Olly Betts <olly@survex.com>

        * backends/quartz/btree_base.cc: Add missing '#include'-s.

Tue Nov 07 05:12:40 GMT 2006  Olly Betts <olly@survex.com>

        * backends/flint/flint_positionlist.h,backends/flint/flint_table.cc,
          backends/quartz/btree.cc: Add missing '#include <vector>' which
          "utils.h" was implicitly pulling in.
        * common/utils.h: Move '#include "safefcntl.h"' to more logical place.

Tue Nov 07 04:18:27 GMT 2006  Olly Betts <olly@survex.com>

        * common/safefcntl.h: Actually add the new file to SVN.

Tue Nov 07 03:36:59 GMT 2006  Olly Betts <olly@survex.com>

        * HACKING,backends/flint/flint_io.h,backends/flint/flint_lock.cc,
          backends/flint/flint_lock.h,backends/muscat36/io_system.cc,common/,
          net/tcpserver.cc,tests/harness/backendmanager.cc,
          tests/harness/testsuite.cc: Create "safefcntl.h" as a replacement
          for <fcntl.h> instead of using "utils.h" for this purpose, since
          "utils.h" pulls in many other things we often don't want.
        * common/utils.cc,common/utils.h,net/progclient.cc: Move split_words
          to progclient.cc which is the only user of it.  Rewrite it to not
          modified the string being split which risks being O(n^2).
        * net/progclient.cc,common/progclient.h: Pass std::string by const
          reference.
        * configure.ac: Fix DJGPP build (fork is present but always fails).

Tue Nov 07 03:21:24 GMT 2006  Olly Betts <olly@survex.com>

        * matcher/biaspostlist.h: Don't need '#include "utils.h"'.

Tue Nov 07 01:15:14 GMT 2006  Olly Betts <olly@survex.com>

        * common/c_strtod.cc: Remove file which was checked in but is unused!

Mon Nov 06 15:24:02 GMT 2006  Olly Betts <olly@survex.com>

        * tests/internaltest.cc: Disable serialiselength1 and serialisedoc1
          when the remote backend is disabled.

Mon Nov 06 15:23:40 GMT 2006  Olly Betts <olly@survex.com>

        * tests/Makefile.am: Fix typo in recent check-in.

Mon Nov 06 01:43:37 GMT 2006  Olly Betts <olly@survex.com>

        * tests/Makefile.am: Need "harness" in "$(srcdir)" for VPATH builds to
          work.

Sun Nov 05 19:55:26 GMT 2006  Olly Betts <olly@survex.com>

        * backends/quartz/Makefile.am: Remove explicit dependency of
          libbtreecheck.la on libxapian.la.  We always link in libxapian.la
          and the explicit dependency makes it hard to build things in a
          sane order.

Sun Nov 05 19:29:17 GMT 2006  Olly Betts <olly@survex.com>

        * net/tcpserver.cc: Don't define on_SIGCHLD() unless we'll use it.
        * tests/harness/backendmanager.cc: Use a proper signal handler for
          SIGCHLD if we have waitpid() - POSIX leaves the semantics of
          SIG_IGN on SIGCHLD unspecified.

Sun Nov 05 19:11:36 GMT 2006  Olly Betts <olly@survex.com>

        * backends/quartz/Makefile.am,backends/quartz/btreecheck.cc,
          backends/quartz/btreecheck.h,bin/Makefile.am,tests/Makefile.am,
          tests/harness/: Use _exit(0) instead of exit(0) in the child
          process which closes the pipe to xapian-tcpsrv in BackendManager
          since we don't want to call atexit functions from the child.  Move
          btreecheck stuff into backends/quartz.

Sun Nov 05 17:12:05 GMT 2006  Olly Betts <olly@survex.com>

        * Makefile.am,bin/Makefile.am,configure.ac,tests/Makefile.am,
          tests/harness/Makefile.am,tests/harness/dir_contents,testsuite/:
          Move the testsuite harness from "testsuite/" to "tests/harness/".

Sun Nov 05 16:36:56 GMT 2006  Olly Betts <olly@survex.com>

        * testsuite/backendmanager.cc,testsuite/backendmanager.h: Now needs
          <stdio.h>.  Set SIG_IGN for SIG_CHLD so we don't get zombie child
          processes.

Sun Nov 05 03:53:24 GMT 2006  Olly Betts <olly@survex.com>

        * tests/apitest.cc: Make backendmanager static.

Sun Nov 05 03:51:36 GMT 2006  Olly Betts <olly@survex.com>

        * bin/xapian-tcpsrv.cc: Output "Listening..." once the socket is
          open and read for connections.
        * testsuite/backendmanager.cc: Use popen() to run xapian-tcpsrv
          and wait for "Listening..." before returning rather than just
          sleeping for 1 second and hoping that's enough.

Sun Nov 05 02:54:23 GMT 2006  Olly Betts <olly@survex.com>

        * tests/api_db.cc: Remove unnecessary inclusion of backendmanager.h.

Fri Nov 03 02:09:26 GMT 2006  Olly Betts <olly@survex.com>

        * HACKING: Update debian packaging checklist.

Fri Nov 03 00:57:35 GMT 2006  Olly Betts <olly@survex.com>

        * docs/Makefile.am: Building sourcedoc.pdf needs a larger pool_size
          now.

Thu Nov 02 19:12:34 GMT 2006  Olly Betts <olly@survex.com>

        * AUTHORS: Updated.

Thu Nov 02 15:41:46 GMT 2006  Olly Betts <olly@survex.com>

        * HACKING,NEWS,configure.ac: Update for 0.9.8.

Thu Nov 02 15:20:05 GMT 2006  Olly Betts <olly@survex.com>

        * PLATFORMS: Update from tinderbox.

Thu Nov 02 11:53:53 GMT 2006  Olly Betts <olly@survex.com>

        * configure.ac: GCC's -Wendif-labels is enabled by default on versions
          which support it, which simplifies our tests.

Thu Nov 02 00:22:44 GMT 2006  Olly Betts <olly@survex.com>

        * backends/remote/dir_contents: Update.

Wed Nov 01 15:33:12 GMT 2006  Olly Betts <olly@survex.com>

        * common/omstringstream.h: Fix our implementation of om_ostringstream
          to work with OmTime.

Wed Nov 01 03:27:36 GMT 2006  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony,tests/queryparsertest.cc: Don't
          require a prefixed boolean term to start with an alphanumeric
          - allow the same set of characters as we do for the second and
          subsequent characters.

Sat Oct 28 04:12:13 BST 2006  Olly Betts <olly@survex.com>

        * bin/quartzcheck.cc: Add catch for unknown exceptions.

Sat Oct 28 03:49:19 BST 2006  Olly Betts <olly@survex.com>

        * HACKING,configure.ac,docs/Makefile.am,docs/doxygen_api_conf.in,
          docs/doxygen_full_conf.in: Produce a PDF for apidoc rather than
          PostScript, since the PDF is smaller, and easier to view for most
          users.  Use pdflatex to generate the PDF directly rather than
          going via a DVI file.  This also avoids problems on some Linux
          distros where latex is a symlink to pdfelatex (bug#81, bug#95).

Thu Oct 26 22:12:20 BST 2006  Richard Boulton <richard@lemurconsulting.com>

        * bin/quartzcheck.cc: Catch (and display) any exceptions which are
          of type "const char *error".  btreecheck.cc raises an exception
          of this type if a btree error is found, and this avoids
          quartzcheck dying quite so horribly in this case.

Wed Oct 25 23:30:26 BST 2006  Olly Betts <olly@survex.com>

        * configure.ac: -Wendif-labels is new in GCC 3.3.
        * configure.ac: Revert accidental change which turned on -Werror in
          non-maintainer builds.
        * configure.ac: Avoid non-portable use of double quotes in
          double-quoted backticks.

Wed Oct 25 01:19:24 BST 2006  Olly Betts <olly@survex.com>

        * configure.ac: Redhat's GCC 2.96 doesn't support -Wundef even
          though real GCC version before and after it do!  Also, use
          -Wshadow and -Wendif-labels even when not in maintainer mode.

Tue Oct 24 04:17:58 BST 2006  Olly Betts <olly@survex.com>

        * backends/flint/flint_lock.cc,bin/quartzcheck.cc: Eliminate
          a couple of variables whose value is never used.

Tue Oct 24 00:31:25 BST 2006  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_database.cc: Only force a flush on
          WritableDatabase::allterms_begin() if there are actually pending
          changes.

Mon Oct 23 23:49:52 BST 2006  Olly Betts <olly@survex.com>

        * backends/flint/flint_database.cc: Only force a flush on
          WritableDatabase::allterms_begin() if there are actually pending
          changes.

Mon Oct 23 02:24:12 BST 2006  Olly Betts <olly@survex.com>

        * configure.ac: When checking if we need -lm, don't use a constant
          argument to log as the compiler might simply evaluate the whole
          expression at compile time.

Sat Oct 21 20:42:52 BST 2006  Olly Betts <olly@survex.com>

        * HACKING: Mention automake 1.10 is out but we've not tested it yet.

Sat Oct 21 20:39:57 BST 2006  Olly Betts <olly@survex.com>

        * HACKING: Add entries to release checklist: make sure new API methods
          are wrapped by the bindings, and that bug submitters are thanked.

Fri Oct 20 13:56:50 BST 2006  Richard Boulton <richard@lemurconsulting.com>

        * backends/flint/flint_io.cc: Fix compilation on windows (needs to
          #include "safewindows.h" to get definition of SSIZE_T).

Tue Oct 17 02:16:37 BST 2006  Olly Betts <olly@survex.com>

        * testsuite/backendmanager.cc: Fix compilation when valgrind is
          detected by configure.

Thu Oct 12 13:30:05 BST 2006  Olly Betts <olly@survex.com>

        * xapian.spec.in: Package xapian-progsrv.

Thu Oct 12 00:49:47 BST 2006  Olly Betts <olly@survex.com>

        * HACKING: Note that on Debian, tetex-extra is needed for
          fancyhdr.sty.
        * HACKING: Note that dch can be used to update debian/changelog.

Wed Oct 11 23:35:08 BST 2006  Olly Betts <olly@survex.com>

        * docs/Makefile.am: If running latex on refman.ps fails, cat
          refman.log since that is likely to show what failed.

Tue Oct 10 17:24:00 BST 2006  Olly Betts <olly@survex.com>

        * NEWS: Bump release date.

Sun Oct 08 21:41:04 BST 2006  Olly Betts <olly@survex.com>

        * NEWS,PLATFORMS,configure.ac: Update for 0.9.7.

Sun Oct 08 10:06:51 BST 2006  Olly Betts <olly@survex.com>

        * testsuite/testsuite.cc: Use lseek() to skip existing valgrind output
          instead of repeated calls to read.  Handle the old valgrind naming
          convention for log files.

Sun Oct 08 09:35:59 BST 2006  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Fix a couple of typos in comments.

Sun Oct 08 05:36:36 BST 2006  Olly Betts <olly@survex.com>

        * configure.ac: Disable probing and short-cut tests for a FORTRAN
          compiler.  We don't use one, but current libtool versions always
          check for it regardless.

Sat Oct 07 21:19:35 BST 2006  Olly Betts <olly@survex.com>

        * configure.ac,tests/runtest.in,testsuite/backendmanager.cc,
          testsuite/testsuite.cc: Fix testsuite harness to show valgrind
          output when a test fails (when running under valgrind in verbose
          mode).  This probably stopped working due to changes in valgrind 3.
        * testsuite/backendmanager.cc: Run xapian-tcpsrv under valgrind if
          apitest is.

Fri Oct  6 18:27:13 BST 2006  Richard Boulton <richard@lemurconsulting.com>

        * tests/runtest.in: export $LIBTOOL, $VALGRIND and $VG_LOG_FD.
        * testsuite/backendmanager.cc: If $LIBTOOL, $VALGRIND and
          $VG_LOG_FD are set, run progsrv under valgrind.  Fixes
          Bug #94.
        * net/remoteserver.cc: Use an AutoPtr to hold the unserialised
          query, so it gets deleted if an exception is thrown.
        * api/omqueryinternal.cc: Use AutoPtr in one place, and a try-catch
          in another, to ensure that partially unserialised queries get
          deleted if exceptions are thrown.
        * tests/internaltest.cc: Add copyright notices to file for recent
          change.
        * AUTHORS: Add myself as a current developer, now that I've started
          committing to the core again.

Fri Oct 06 17:44:21 BST 2006  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc: Fix memory leak in query unserialisation.

Fri Oct  6 17:34:59 BST 2006  Richard Boulton <richard@lemurconsulting.com>

        * tests/runtest.in: Cache result of test for $VG_LOG_FD if we
          find the new option.  Saves 2 seconds for each invocation on my
          machine, which is half the time when running just a single simple
          test.

Fri Oct  6 16:35:46 BST 2006  Richard Boulton <richard@lemurconsulting.com>

        * tests/internaltest.cc: Check serialisation and unserialisation of
          Query objects.  Currently fails under valgrind due to a memory
          leak somewhere in the unserialisation code.

Thu Oct 05 14:13:55 BST 2006  Olly Betts <olly@survex.com>

        * include/xapian/error.h: Only enable the SWIG visibility hook when
          using GCC 4 or later.

Wed Oct 04 20:32:43 BST 2006  Olly Betts <olly@survex.com>

        * m4/xapian.m4: Remove overquoting.

Wed Oct  4 13:28:09 BST 2006  Richard Boulton <richard@lemurconsulting.com>

        * common/utils.h: MSVC seems to #define open.  However, the
          workaround for this problem implemented for old versions of
          solaris doesn't work for windows, so avoid applying the fix for
          windows, and just #undef open.  (Windows seems to define some
          open() functions, as well as #defining open!)

Wed Oct  4 13:26:18 BST 2006  Richard Boulton <richard@lemurconsulting.com>

        * net/serialise.cc: Use "unsigned char" instead of "char" when
          serialising lengths, to avoid problems on platforms where char is
          signed (eg, windows).

Wed Oct 04 12:25:51 BST 2006  Olly Betts <olly@survex.com>

        * backends/flint/flint_version.cc: Remove "100" from start of file so
          it actually compiles.

Mon Oct 02 13:57:56 BST 2006  Olly Betts <olly@survex.com>

        * xapian-config.in: Fix typo - "@libdir" should be "@libdir@".
          This would lead to -L/usr/lib not being pruned, which is really
          just a cosmetic problem (the typo was introduced in 0.9.3).

Thu Sep 28 02:00:05 BST 2006  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Reserve the right number of entries in the
          subrsets vector.

Fri Sep 22 07:48:32 BST 2006  Olly Betts <olly@survex.com>

        * common/serialise-double.cc: Fix warning with aCC.

Fri Sep 22 04:43:06 BST 2006  Olly Betts <olly@survex.com>

        * HACKING: Expand note on _GLIBCXX_DEBUG;  Now using autoconf 2.60 for
          snapshots and releases;  Now using a libtool patch which improves
          support for -library=stlport4 with Sun's C++;  Give URL to Alexandre
          Duret-Lutz's autotools tutorial, which is much more up-to-date than
          the "goat book".

Fri Sep 22 04:42:08 BST 2006  Olly Betts <olly@survex.com>

        * common/serialise-double.cc: Fix a few compiler warnings.

Fri Sep 22 04:29:18 BST 2006  Olly Betts <olly@survex.com>

        * backends/flint/flint_lock.cc: Retry on EINTR from fcntl or waitpid.

Fri Sep 22 03:39:12 BST 2006  Olly Betts <olly@survex.com>

        * include/xapian/version_h.cc: Only check _GLIBCXX_DEBUG for GCC 3.4
          and later (which are the versions which support it).

Fri Sep 22 03:37:02 BST 2006  Olly Betts <olly@survex.com>

        * bin/xapian-tcpsrv.cc: Report errno if we catch a Xapian::Error which
          has it set.

Fri Sep 22 03:30:25 BST 2006  Olly Betts <olly@survex.com>

        * configure.ac: Turn on -Wportability to help ensure our Makefile.am's
          are written in a portable way.

Fri Sep 22 03:29:25 BST 2006  Olly Betts <olly@survex.com>

        * tests/runtest.in: Turn on GLIBCXX_FORCE_NEW when running tests under
          valgrind.

Tue Sep 19 06:28:47 BST 2006  Olly Betts <olly@survex.com>

        * tests/internaltest.cc: Check that the the destructor on a temporary
          object gets called at the correct time (Sun C++ deliberately gets
          this wrong by default).

Tue Sep 19 04:32:04 BST 2006  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Revert change to Xapian::Weight's copy
          constructor because it prevents Omega from compiling.

Tue Sep 19 04:01:14 BST 2006  Olly Betts <olly@survex.com>

        * configure.ac: Make the argument of log() a double to avoid
          potential compiler warnings.

Mon Sep 18 22:58:19 BST 2006  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Xapian::Weight's copy constructor should
          be private not protected (direct copying isn't allowed).

Mon Sep 18 07:03:51 BST 2006  Olly Betts <olly@survex.com>

        * configure.ac: We reportedly need "-lm" to get maths functions on
          some versions of Sun's C++ compiler.

Sat Sep 16 12:08:25 BST 2006  Olly Betts <olly@survex.com>

        * configure.ac: Sun's C++ compiler implements non-standards-conforming
          lifetimes for temporary objects (for "backwards compatibility" with
          old Sun C++ specific code).  We don't care about such code, so
          always pass "-features=tmplife" for Sun C++.

Sat Sep 16 03:04:57 BST 2006  Olly Betts <olly@survex.com>

        * bin/xapian-progsrv.cc: Oops, fix compilation error.

Sat Sep 16 02:13:22 BST 2006  Olly Betts <olly@survex.com>

        * bin/xapian-progsrv.cc: Fix messages send by xapian-progsrv if an
          exception is thrown while opening the database.

Fri Sep 15 06:29:55 BST 2006  Olly Betts <olly@survex.com>

        * tests/internaltest.cc: 1/DBL_MAX may be less than DBL_MIN but on
          platforms like x86 which hold results in registers with extra
          precision, this is still representable, but not reliably so
          the test sometimes fails.

Fri Sep 15 02:40:52 BST 2006  Olly Betts <olly@survex.com>

        * backends/flint/flint_btreebase.cc: Avoid copying beyond the end of
          the bitmap block.

Thu Sep 14 02:01:58 BST 2006  Olly Betts <olly@survex.com>

        * backends/flint/flint_version.cc: Fix warning from GCC 4.1.0.

Wed Sep 13 18:12:43 BST 2006  Olly Betts <olly@survex.com>

        * backends/flint/flint_io.cc,backends/flint/flint_io.h,
          backends/flint/flint_version.cc: Fix compiler warnings.

Wed Sep 13 06:09:40 BST 2006  Olly Betts <olly@survex.com>

        * backends/flint/flint_version.cc,backends/flint/flint_version.h:
          Actually commit the new files!

Wed Sep 13 05:21:04 BST 2006  Olly Betts <olly@survex.com>

        * backends/flint/,common/utils.h: Rewrite some of flint's low level IO
          functions, and the "iamflint" handling class.

Tue Sep 12 20:22:57 BST 2006  Olly Betts <olly@survex.com>

        * backends/remote/remote-database.cc: Fix to compile.

Tue Sep 12 18:56:16 BST 2006  Olly Betts <olly@survex.com>

        * backends/remote/remote-database.cc,common/remote-database.h:
          Fix bug in remote backend which incorrectly returned an empty MSet
          under certain circumstances!

Tue Sep 12 11:51:31 BST 2006  Olly Betts <olly@survex.com>

        * matcher/msetcmp.cc: "static inline" -> "inline" since the static is
          superfluous and Sun's C++ warns.

Mon Sep 11 23:42:28 BST 2006  Olly Betts <olly@survex.com>

        * configure.ac: Check $CXX not $CC to identify which C++ compiler we
          have.

Mon Sep 11 16:32:37 BST 2006  Olly Betts <olly@survex.com>

        * api/omenquire.cc,api/vectortermlist.h,
          backends/flint/flint_positionlist.cc,configure.ac,
          net/remoteconnection.cc,net/tcpclient.cc,
          queryparser/queryparser.lemony,tests/api_anydb.cc,tests/api_db.cc,
          tests/api_nodb.cc: I've discovered that -library=stlport4 puts
          Sun's compiler into an "ANSI C++ compliant" mode, so do that
          automatically in configure and throw away all the annoying special
          bits of alternative code we'd accumulated just for this one
          compiler.

Mon Sep 11 16:01:20 BST 2006  Olly Betts <olly@survex.com>

        * tests/api_wrdb.cc: Speed up deldoc4 when run in verbose mode
          - some stringstream implementations are very inefficient when
          the string grows long.

Mon Sep 11 05:30:29 BST 2006  Olly Betts <olly@survex.com>

        * HACKING: Add some advice regarding debugging using -D_GLIBCXX_DEBUG,
          valgrind, and gdb.

Sun Sep 10 02:24:47 BST 2006  Olly Betts <olly@survex.com>

        * configure.ac: Fix last check-in to actually work.

Sat Sep 09 04:19:44 BST 2006  Olly Betts <olly@survex.com>

        * configure.ac: Ensure that if _GLIBCXX_DEBUG has been specified that
          it also passed when generating version.h.

Sat Sep 09 04:01:40 BST 2006  Olly Betts <olly@survex.com>

        * tests/internaltest.cc: Give more useful output should the double
          serialisation test fail.

Sat Sep 09 03:19:20 BST 2006  Olly Betts <olly@survex.com>

        * include/xapian/version_h.cc: Add a check that _GLIBCXX_DEBUG is
          set compatibly if we're compiling with GNU C++.

Sat Sep 09 02:55:38 BST 2006  Olly Betts <olly@survex.com>

        * backends/flint/flint_modifiedpostlist.cc: Fix potential access to
          iterator which has already reached its end.

Fri Sep 08 04:05:28 BST 2006  Olly Betts <olly@survex.com>

        * backends/remote/remote-database.cc,common/,matcher/bm25weight.cc,
          matcher/tradweight.cc,net/,tests/internaltest.cc: Split the double
          serialisation code off into its own file - it is used by BM25Weight
          and TradWeight, so it needs to be compiled in even when the remote
          backend is disabled.

Thu Sep 07 00:09:41 BST 2006  Olly Betts <olly@survex.com>

        * testsuite/backendmanager.cc: Discard stderr from xapian-tcpsrv
          so we don't get "write error" messages appearing in the testsuite
          output when we've just closed the connection at the client side.

Tue Sep 05 21:07:40 BST 2006  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc: Fix warning when remote backend
          is disabled.

Tue Sep 05 20:58:52 BST 2006  Olly Betts <olly@survex.com>

        * docs/Makefile.am: Add extra dependencies so that parallel make
          doesn't try to run latex twice simultaneously.

Tue Sep 05 20:58:13 BST 2006  Olly Betts <olly@survex.com>

        * AUTHORS: Updated.

Tue Sep 05 20:56:50 BST 2006  Olly Betts <olly@survex.com>

        * Makefile.am: Fix typo.

Tue Sep 05 03:23:14 BST 2006  Olly Betts <olly@survex.com>

        * docs/queryparser.html,queryparser/queryparser.lemony,
          tests/queryparsertest.cc: Implement "ADJ" operator - like
          "NEAR" except the terms must appear in matching documents in the
          same order as in the query.

Tue Sep 05 03:19:12 BST 2006  Olly Betts <olly@survex.com>

        * backends/remote/remote-database.cc,common/,docs/remote_protocol.html,
          matcher/bm25weight.cc,matcher/tradweight.cc,net/remoteserver.cc,
          net/serialise.cc,tests/internaltest.cc: Change how doubles are
          serialised by TradWeight, BM25Weight, and in the remote backend
          protocol.  The new encoding allows us to transfer any double
          value which can be represented by both machines precisely and
          compactly.

Tue Sep 05 02:27:36 BST 2006  Olly Betts <olly@survex.com>

        * docs/queryparser.html,queryparser/queryparser.lemony,
          tests/queryparsertest.cc: Allow a distance to be specified
          for NEAR - e.g. "cats NEAR/3 dogs" (bug#92).

Fri Sep 01 00:29:10 BST 2006  Olly Betts <olly@survex.com>

        * backends/remote/remote-database.cc,common/remote-database.h:
          Fix RemoteDatabase::reopen() to not be const so it actually
          overrides the virtual method it is supposed to.

Thu Aug 31 21:40:53 BST 2006  Olly Betts <olly@survex.com>

        * testsuite/backendmanager.h: Remove unneeded BackendManager::
          qualifications.

Thu Aug 31 17:08:16 BST 2006  Olly Betts <olly@survex.com>

        * matcher/msetpostlist.cc,matcher/msetpostlist.h: Move #include
          "omenquireinternal.h" into the header to fix compilation error
          with older versions of GCC.

Thu Aug 31 16:38:33 BST 2006  Olly Betts <olly@survex.com>

        * PLATFORMS: Added success report for Nexenta (alpha 5).

Wed Aug 30 23:41:08 BST 2006  Olly Betts <olly@survex.com>

        * configure.ac: Fix generation of version.h to work with Solaris sed.

Sat Aug 26 15:28:22 BST 2006  Olly Betts <olly@survex.com>

        * docs/index.html: Add links to the wiki.

Sun Jul 16 03:48:26 BST 2006  Olly Betts <olly@survex.com>

        * common/Makefile.am: Ship remoteprotocol.h.

Sun Jul 16 02:23:54 BST 2006  Olly Betts <olly@survex.com>

        * common/remote-database.h: Add new file I missed in the previous
          commit.

Sun Jul 16 01:58:25 BST 2006  Olly Betts <olly@survex.com>

        * Makefile.am,api/,backends/Makefile.am,backends/database.cc,
          backends/dbfactory_remote.cc,backends/flint/flint_database.cc,
          backends/flint/flint_termlist.cc,backends/flint/flint_termlist.h,
          backends/inmemory/inmemory_database.cc,
          backends/inmemory/inmemory_database.h,
          backends/multi/multi_termlist.cc,backends/multi/multi_termlist.h,
          backends/net/,backends/quartz/quartz_termlist.cc,
          backends/quartz/quartz_termlist.h,backends/remote/,bin/Makefile.am,
          bin/xapian-progsrv.cc,bin/xapian-tcpsrv.cc,common/,configure.ac,
          docs/remote_protocol.html,include/xapian/,matcher/,net/,tests/,
          testsuite/backendmanager.cc,testsuite/backendmanager.h: Rewrite
          most of the remote backend.  It now supports most operations
          which a local database does (including writing!), the protocol
          used is more compact, and a number of layers of classes have
          been eliminated and the sequences of method calls simplified, so the
          code should be easier to understand and maintain despite doing more.
          A number of bugs have been fixed in the process.

Sat Jul 15 05:10:38 BST 2006  Olly Betts <olly@survex.com>

        * tests/api_nodb.cc: Doesn't need <iostream>.

Sat Jul 15 01:06:27 BST 2006  Olly Betts <olly@survex.com>

        * README: Add link to the wiki.  Tweak wording.

Fri Jul 14 15:21:39 BST 2006  Olly Betts <olly@survex.com>

        * configure.ac: Note in error message that dot is in graphviz.

Fri Jul 14 15:17:36 BST 2006  Olly Betts <olly@survex.com>

        * docs/overview.html: Add discussion of uses of terms vs values.

Fri Jul 14 15:01:04 BST 2006  Olly Betts <olly@survex.com>

        * docs/overview.html: Rewrite the section on Xapian::Document to
          remove some very out-of-date information and make it clearer.

Tue Jul 11 18:41:07 BST 2006  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Fix problem I believe was introduced
          by previous fix.
        * tests/queryparsertest.cc: Add regression test and some additional
          related test cases.

Tue Jul 11 03:32:48 BST 2006  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Fix bug in how we handle prefixed
          quoted phrases and prefixed brackets.
        * tests/queryparsertest.cc: Add regression tests.

Mon Jul 10 23:17:58 BST 2006  Olly Betts <olly@survex.com>

        * include/xapian/database.h: Note that automatically allocated
          document IDs don't reuse IDs from deleted document.

Wed Jul 05 01:06:35 BST 2006  Olly Betts <olly@survex.com>

        * tests/api_wrdb.cc: Tweak whitespace.

Mon Jun 26 23:56:02 BST 2006  Olly Betts <olly@survex.com>

        * PLATFORMS: Added success reports for MSVC and sparc linux.

Sat Jun 17 02:01:35 BST 2006  Olly Betts <olly@survex.com>

        * Makefile.am,tests/Makefile.am: Tweak new check-* rules to be more
          portable and robust.

Sun Jun 11 23:29:48 BST 2006  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony,tests/queryparsertest.cc: Fix parsing
          of loved and hated prefixed phrases and bracketted expressions.  Fix
          handling of stopwords in boolean expressions.  Don't ignore a
          stopword if it's the only query term.  Add regression tests for all
          these cases.

Fri Jun 09 15:21:07 BST 2006  Olly Betts <olly@survex.com>

        * docs/queryparser.html: Add pointer to set_database when describing
          FLAG_WILDCARD.

Fri Jun 09 13:51:03 BST 2006  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: Add note that FLAG_WILDCARD requires
          you to call set_database.

Fri Jun 09 13:49:34 BST 2006  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc: Don't compile query serialisation if the
          remote backend is disabled.

Fri Jun 09 01:48:25 BST 2006  Olly Betts <olly@survex.com>

        * api/omdocument.cc,tests/api_nodb.cc: add_value failed to replace an
          existing value with the same number, contrary to what the
          documentation says (bug #82).

Thu Jun 08 21:36:54 BST 2006  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Don't fetch the document data when fetching
          the value to sort on.  Simple benchmarking showed this to speed
          up sort by value by a factor of between 3 and 9!

Sun Jun 04 17:36:01 BST 2006  Olly Betts <olly@survex.com>

        * backends/flint/: Remove forced flush when iterating the posting list
          of a term which has modified posting pending.

Sat Jun 03 21:38:43 BST 2006  Olly Betts <olly@survex.com>

        * backends/flint/flint_database.cc,backends/flint/flint_termlist.cc,
          backends/quartz/quartz_database.cc,tests/api_wrdb.cc: We can't flush
          during a transaction, which means that we can't use flush to avoid
          having to handle corner cases (like deleting a document right after
          adding it before it's been flushed) so handle corner cases properly
          (except for postlist_begin() and allterms_begin() which are
          harder - these now throw UnimplementedError at least...)
        * backends/flint/flint_database.cc,backends/quartz/quartz_database.cc:
          replace_document(did, doc) was double-incrementing the "changes"
          counter when document did didn't exist - fixed.

Sat Jun 03 17:53:41 BST 2006  Olly Betts <olly@survex.com>

        * HACKING: Document "make check-flint" and "make check-quartz".

Sat Jun 03 17:49:25 BST 2006  Olly Betts <olly@survex.com>

        * Makefile.am,tests/Makefile.am: Added make targets "check-flint" and
          "check-quartz" which run the subset of tests which test the flint
          and quartz backends respectively.

Sat Jun 03 04:03:00 BST 2006  Olly Betts <olly@survex.com>

        * api/omdatabase.cc,backends/database.cc,
          backends/flint/flint_database.cc,backends/flint/flint_database.h,
          backends/inmemory/inmemory_database.cc,
          backends/inmemory/inmemory_database.h,backends/quartz/dir_contents,
          backends/quartz/quartz_database.cc,backends/quartz/quartz_database.h,
          common/database.h,include/xapian/database.h,tests/apitest.cc:
          Rework transactions to support "unflushed" transactions, and so
          they work with quartz as well as with flint.

Sat Jun 03 03:18:22 BST 2006  Olly Betts <olly@survex.com>

        * HACKING: Document "make check-remote".

Sat Jun 03 00:23:46 BST 2006  Olly Betts <olly@survex.com>

        * backends/database.cc,backends/flint/dir_contents,
          backends/flint/flint_database.cc,backends/flint/flint_database.h,
          backends/quartz/dir_contents,common/database.h,
          include/xapian/database.h,tests/: Implement transactions for
          flint.

Sat Jun 03 00:14:37 BST 2006  Olly Betts <olly@survex.com>

        * tests/apitest.cc: Run tests on flint if flint is enabled, rather
          than if quartz is enabled.

Sun May 28 23:01:45 BST 2006  Olly Betts <olly@survex.com>

        * common/omtime.h: Add operator+ and operator+= with argument of
          type Xapian::timeout.

Sun May 28 22:02:30 BST 2006  Olly Betts <olly@survex.com>

        * include/xapian/errorhandler.h: Fix typos in private assignment
          operator and copy ctor (Error -> ErrorHandler!)

Sun May 28 21:54:05 BST 2006  Olly Betts <olly@survex.com>

        * Makefile.am,tests/Makefile.am: Add "check-remote" target which runs
          the subset of tests which test the remote backend.

Thu May 25 16:06:06 BST 2006  Olly Betts <olly@survex.com>

        * api/omdatabase.cc,backends/database.cc,common/database.h:
          Merge Xapian::Internal::open_database() into the Xapian::Database
          ctor which calls it; merge Xapian::Internal::open_writable_database()
          into the Xapian::WritableDatabase ctor which calls it.

Wed May 24 08:28:40 BST 2006  Olly Betts <olly@survex.com>

        * net/socketserver.cc: OmLineBuf -> OmSocketLineBuf.

Wed May 24 08:27:22 BST 2006  Olly Betts <olly@survex.com>

        * common/socketserver.h: OmLineBuf -> OmSocketLineBuf.

Wed May 24 07:50:51 BST 2006  Olly Betts <olly@survex.com>

        * common/Makefile.am,common/omlinebuf.h,common/socketcommon.h,
          net/Makefile.am,net/omlinebuf.cc,net/socketcommon.cc:
          Merge OmLineBuf into OmSocketLineBuf.
        * common/Makefile.am: Fix netutils.cc to be conditionally included
          when the remote backend is enabled, not the quartz backend!

Tue May 23 18:59:09 BST 2006  Olly Betts <olly@survex.com>

        * api/Makefile.am,api/errorhandler.cc,api/omerror.cc,
          include/xapian/error.h,include/xapian/errorhandler.h:
          Redo the Xapian::Error and Xapian::ErrorHandler classes.
          The new versions have better, clearer documentation comments
          and are cleaner internally.
        * include/xapian/error.h: Add hook to allow SWIG bindings to
          be built using GCC's visibility support.

Tue May 23 10:08:02 BST 2006  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: Remove superfluous '#include <autoptr.h>'.

Tue May 23 09:42:52 BST 2006  Olly Betts <olly@survex.com>

        * backends/Makefile.am,backends/database.cc,
          backends/dbfactory_remote.cc,backends/net/net_database.cc,
          backends/net/net_termlist.cc,backends/net/net_termlist.h,common/,
          include/xapian/dbfactory.h,matcher/,net/socketclient.cc,
          net/socketcommon.cc: Eliminate the NetClient class by merging
          it into NetDatabase.

Mon May 22 08:51:16 BST 2006  Olly Betts <olly@survex.com>

        * common/omtime.h: Fix OmTime::operator> which failed to return false
          if the seconds were strictly less but the microsecond fraction was
          more.

Sun May 21 11:53:29 BST 2006  Olly Betts <olly@survex.com>

        * Makefile.am,bin/Makefile.am,docs/Makefile.am,examples/Makefile.am:
          Make use of the dist_ prefix to avoid having to list files in
          EXTRA_DIST as well as in *_DATA and man_MANS.

Sun May 21 05:55:00 BST 2006  Olly Betts <olly@survex.com>

        * api/dir_contents,getopt/dir_contents,queryparser/dir_contents:
          Add missing dir_contents files.

Sun May 21 05:45:44 BST 2006  Olly Betts <olly@survex.com>

        * tests/remotetest.cc: Remove unnecessary "#include <sys/wait.h>".

Sat May 20 11:02:43 BST 2006  Olly Betts <olly@survex.com>

        * docs/Makefile.am: doxygen_api_conf and doxygen_full_conf are
          generated, so aren't in srcdir!

Sat May 20 10:14:52 BST 2006  Olly Betts <olly@survex.com>

        * docs/Makefile.am: automake adds suitable rules for rebuilding
          doxygen_api_conf and doxygen_source_conf, so remove our less
          accurate versions.

Fri May 19 14:43:47 BST 2006  Olly Betts <olly@survex.com>

        * docs/Makefile.am,docs/doxygen_api_conf.in,docs/doxygen_full_conf.in:
          Remove "XAPIAN_DEPRECATED" from generated documentation.
        * docs/Makefile.am: Fix dependencies for regenerating the doxygen
          documentation.

Fri May 19 08:12:51 BST 2006  Olly Betts <olly@survex.com>

        * docs/scalability.html: quartzcompact and xapian-compact now allow
          you to set the blocksize, so there's no need to use copydatabase
          if you want to migrate a database to a larger blocksize.  Mention
          gmane.  Other minor tweaks.

Fri May 19 07:52:23 BST 2006  Olly Betts <olly@survex.com>

        * bin/quartzcompact.cc: Add --blocksize option to allow the blocksize
          to be set (default is 8K as before.)

Fri May 19 07:47:13 BST 2006  Olly Betts <olly@survex.com>

        * bin/xapian-compact.cc: Add --blocksize option to allow the blocksize
          to be set (default is 8K as before.)

Thu May 18 11:24:17 BST 2006  Olly Betts <olly@survex.com>

        * api/vectortermlist.h: Whitespace tweak.

Tue May 16 10:09:53 BST 2006  Olly Betts <olly@survex.com>

        * HACKING: Update details of the debian stable backport version
          numbering scheme.

Tue May 16 06:55:14 BST 2006  Olly Betts <olly@survex.com>

        * configure.ac: Remove unused variable from snprintf testing code.

Tue May 16 04:32:34 BST 2006  Olly Betts <olly@survex.com>

        * HACKING: Expand on the debian package building checklist.

Tue May 16 04:32:07 BST 2006  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Note that "set_sort_by_relevance" is the
          default setting.

Mon May 15 06:59:01 BST 2006  Olly Betts <olly@survex.com>

        * HACKING: Update debian package building checklist.

Mon May 15 03:53:53 BST 2006  Olly Betts <olly@survex.com>

        * PLATFORMS: Update one more result before the actual release.

Mon May 15 02:15:18 BST 2006  Olly Betts <olly@survex.com>

        * NEWS,configure.ac: Updated for 0.9.6.

Mon May 15 01:35:33 BST 2006  Olly Betts <olly@survex.com>

        * PLATFORMS: Updated in preparation for the next release.

Sun May 14 19:05:37 BST 2006  Olly Betts <olly@survex.com>

        * backends/flint/flint_lock.h: Added workaround for newlib header bug.

Sat May 13 07:04:14 BST 2006  Olly Betts <olly@survex.com>

        * configure.ac: Fix snprintf tests.

Sat May 13 04:52:53 BST 2006  Olly Betts <olly@survex.com>

        * configure.ac: Tweak version.h generation to cope with CXXCPP putting
          carriage returns into its output as can happen on cygwin.

Fri May 12 21:49:33 BST 2006  Olly Betts <olly@survex.com>

        * HACKING: Update with the libtool patches we're now using.

Fri May 12 21:43:02 BST 2006  Olly Betts <olly@survex.com>

        * include/xapian/version_h.cc: Trim trailing whitespace.

Fri May 12 20:43:47 BST 2006  Olly Betts <olly@survex.com>

        * configure.ac,include/xapian/version_h.cc: Replace @@ with " instead
          of @, so we can write @deprecated.  Fix more compilation problems.

Fri May 12 19:00:08 BST 2006  Olly Betts <olly@survex.com>

        * include/xapian/version_h.cc: Fix compilation problem.

Fri May 12 01:19:14 BST 2006  Olly Betts <olly@survex.com>

        * api/version.cc,include/xapian/version_h.cc: Rename
          Xapian::xapian_version_string() and companions to
          Xapian::version_string().  Keep the old functions as aliases
          which are marked as deprecated.

Wed May 10 18:25:59 BST 2006  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Remove bogus documentation for a
          parameter which doesn't exist.

Tue May 09 19:17:23 BST 2006  Olly Betts <olly@survex.com>

        * bin/Makefile.am: Remove trailing whitespace.
        * bin/xapian-compact.cc: Fix renaming of "iamflint.tmp" for MS Windows
          where you can't rename an open file.

Tue May 09 15:57:26 BST 2006  Olly Betts <olly@survex.com>

        * configure.ac: Fix reversed conditional in test for snprintf (which
          affects cygwin).

Mon May 01 21:49:46 BST 2006  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Add another prefix testcase to improve
          coverage.

Sat Apr 29 20:16:46 BST 2006  Olly Betts <olly@survex.com>

        * docs/remote_protocol.html: Document keep-alive messages.

Thu Apr 13 14:49:48 BST 2006  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony,tests/queryparsertest.cc: Add rules
          to handle a boolean filter with a "+" in front (such as
          +site:xapian.org).

Wed Apr 12 18:42:31 BST 2006  Olly Betts <olly@survex.com>

        * PLATFORMS: More updates for 0.9.5.

Tue Apr 11 19:56:16 BST 2006  Olly Betts <olly@survex.com>

        * matcher/Makefile.am: Need to add "-I${top_builddir}/include" to
          INCLUDES so that xapian/version.h is found.

Tue Apr 11 19:24:59 BST 2006  Olly Betts <olly@survex.com>

        * backends/database.cc,configure.ac,include/xapian/version_h.cc,
          matcher/multimatch.cc,matcher/stats.cc,tests/apitest.cc,
          testsuite/backendmanager.cc,testsuite/backendmanager.h:
          Eliminate XAPIAN_BUILD_BACKEND_* from config.h and just use
          XAPIAN_HAS_*_BACKEND from xapian/version.h instead.

Tue Apr 11 18:32:52 BST 2006  Olly Betts <olly@survex.com>

        * include/Makefile.am: Add xapian/version.h.timestamp as a dependency
          on all-local so that xapian/version.h actually gets regenerated
          when required.

Tue Apr 11 17:52:24 BST 2006  Olly Betts <olly@survex.com>

        * api/omenquire.cc,backends/flint/flint_btreebase.cc,
          backends/quartz/btree_base.cc,common/utils.h,configure.ac:
          Disable MSVC warning 4800 (on int to bool conversions) in config.h
          and then we can remove the "fixes" elsewhere.

Tue Apr 11 16:28:01 BST 2006  Olly Betts <olly@survex.com>

        * configure.ac: Simpler check for VALGRIND being set to empty value.

Tue Apr 11 01:04:32 BST 2006  Olly Betts <olly@survex.com>

        * PLATFORMS: Add a summary.

Tue Apr 11 00:45:55 BST 2006  Olly Betts <olly@survex.com>

        * PLATFORMS: Updates from boxes which were down when I did the
          release.

Mon Apr 10 17:06:46 BST 2006  Olly Betts <olly@survex.com>

        * api/omenquire.cc,backends/flint/flint_btreebase.cc,
          backends/flint/flint_utils.h,backends/quartz/btree_base.cc,
          backends/quartz/quartz_utils.h,common/omassert.h:
          Fix more MSVC7 warnings (I spoke too soon).

Mon Apr 10 15:56:52 BST 2006  Olly Betts <olly@survex.com>

        * include/xapian/query.h: Another MSVC7 warning fix.  Should be free
          of warnings now.

Mon Apr 10 14:46:34 BST 2006  Olly Betts <olly@survex.com>

        * backends/flint/flint_database.cc,backends/flint/flint_utils.h,
          backends/quartz/quartz_utils.h,bin/quartzcompact.cc,
          bin/xapian-compact.cc,common/omdebug.h,common/utils.h,
          include/xapian/query.h,languages/header.h,matcher/multimatch.cc:
          Fix assorted MSVC7 warnings.

Sun Apr 09 04:56:09 BST 2006  Olly Betts <olly@survex.com>

        * HACKING: Expand on details of what's required when changing Xapian
          (discuss documentation requirements, expand on why feature tests
          are vital).
        * HACKING: Update section on building debian packages.

Sat Apr 08 20:02:19 BST 2006  Olly Betts <olly@survex.com>

        * NEWS,PLATFORMS,configure.ac: Updated for 0.9.5.

Fri Apr 07 23:53:08 BST 2006  Olly Betts <olly@survex.com>

        * tests/api_anydb.cc,tests/api_db.cc,tests/btreetest.cc: Correct
          spelling of "existant" to "existent".

Fri Apr 07 19:13:24 BST 2006  Olly Betts <olly@survex.com>

        * configure.ac: We don't use strcasecmp, so don't probe for it.

Fri Apr 07 18:30:40 BST 2006  Olly Betts <olly@survex.com>

        * common/utils.h: Fixes for MSVC7 compilation.

Fri Apr 07 17:19:43 BST 2006  Olly Betts <olly@survex.com>

        * backends/flint/flint_table.cc,backends/quartz/btree.cc: Fixes for
          MSVC compilation.

Fri Apr 07 16:04:08 BST 2006  Olly Betts <olly@survex.com>

        * backends/flint/flint_cursor.h: Fix incorrect example code in
          documentation comment.
        * backends/flint/flint_table.cc,backends/flint/flint_table.h:
          Remove unused method FlintTable::find_key().

Fri Apr 07 16:02:40 BST 2006  Olly Betts <olly@survex.com>

        * AUTHORS: Updated.

Fri Apr 07 15:58:31 BST 2006  Olly Betts <olly@survex.com>

        * debian/control.in: copydatabase and xapian-compact are packaged
          in xapian-tools, so add them to the documented list of tools
          included.

Fri Apr 07 15:12:43 BST 2006  Olly Betts <olly@survex.com>

        * net/tcpserver.cc: Set xapian-tcpsrv to allow 5 connections in the
          listen queue instead of just one.

Fri Apr 07 13:28:15 BST 2006  Olly Betts <olly@survex.com>

        * tests/remotetest.cc: Check mset size in tcpmatch1.

Fri Apr 07 01:26:03 BST 2006  Olly Betts <olly@survex.com>

        * xapian.spec.in: Man pages may be gzipped.

Thu Apr 06 14:41:29 BST 2006  Olly Betts <olly@survex.com>

        * HACKING: aclocal is part of automake, not autoconf.

Thu Apr 06 01:29:21 BST 2006  Olly Betts <olly@survex.com>

        * bin/,examples/copydatabase.cc,examples/delve.cc,examples/quest.cc:
          In the "--help" output, add "Options:" before the list of options.

Thu Apr 06 01:11:31 BST 2006  Olly Betts <olly@survex.com>

        * xapian-config.in: Tweak to improve help2man output.

Wed Apr 05 16:26:15 BST 2006  Fabrice Colin

        * xapian.spec.in: Package man pages.

Wed Apr 05 16:23:49 BST 2006  Olly Betts <olly@survex.com>

        * Makefile.am,bin/Makefile.am,examples/Makefile.am: Include generated
          man pages in the distribution tarball.

Wed Apr 05 02:48:27 BST 2006  Olly Betts <olly@survex.com>

        * debian/TODO: Updated.

Wed Apr 05 02:44:15 BST 2006  Olly Betts <olly@survex.com>

        * ./,examples: svn:ignore man pages.

Wed Apr 05 02:43:08 BST 2006  Olly Betts <olly@survex.com>

        * bin/Makefile.am,examples/Makefile.am: No need to make man pages
          depend on config.h, since the binaries will already.

Wed Apr 05 02:42:42 BST 2006  Olly Betts <olly@survex.com>

        * Makefile.am: Generate man page for xapian-config.

Wed Apr 05 00:59:53 BST 2006  Olly Betts <olly@survex.com>

        * examples/Makefile.am: Use help2man to generate manpages for the
          installed binaries in examples.

Wed Apr 05 00:56:11 BST 2006  Olly Betts <olly@survex.com>

        * bin/omtcpsrv.cc: Rename to bin/xapian-tcpsrv.cc.
        * bin/omprogsrv.cc: Rename to bin/xapian-progsrv.cc.
        * HACKING,bin/Makefile.am,configure.ac: Use help2man to generate
          manpages for the installed binaries in bin.

Tue Apr 04 16:44:54 BST 2006  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Note example of BM25Weight parameters
          which make set_sort_by_relevance_then_value useful.

Tue Apr 04 16:35:58 BST 2006  Olly Betts <olly@survex.com>

        * api/omenquire.cc,include/xapian/enquire.h,matcher/,tests/api_db.cc:
          Implement Enquire::set_sort_by_relevance_then_value().

Tue Apr 04 01:05:41 BST 2006  Olly Betts <olly@survex.com>

        * common/omenquireinternal.h: sort_key no longer needs to be mutable
          now that MSetSortCmp has been removed.

Mon Apr 03 02:03:12 BST 2006  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Removed dead code (class MSetSortCmp).

Sun Apr 02 16:37:38 BST 2006  Olly Betts <olly@survex.com>

        * net/tcpserver.cc: Don't perform a name lookup on the IP address
          which an incoming connection is from as that could easily slow
          down the search response - instead just print the IP address itself
          if output is verbose.

Sun Apr 02 13:28:31 BST 2006  Olly Betts <olly@survex.com>

        * api/omenquire.cc,common/,docs/remote_protocol.html,
          matcher/multimatch.cc,matcher/networkmatch.cc,matcher/networkmatch.h,
          net/socketclient.cc,net/socketserver.cc: Change bool
          sort_by_relevance to enum sort_by in preparation for adding
          "sort_by_relevance_then_value".

Fri Mar 31 22:32:16 BST 2006  Olly Betts <olly@survex.com>

        * examples/copydatabase.cc,examples/quest.cc: Add --help and --version
          options.
        * examples/delve.cc: Tidy up output from --help and --version options.

Fri Mar 31 19:01:25 BST 2006  Olly Betts <olly@survex.com>

        * bin/quartzcheck.cc: Fix SEGV when run with no arguments (introduced
          by last change).

Fri Mar 31 17:57:27 BST 2006  Olly Betts <olly@survex.com>

        * bin/quartzcheck.cc: Add --version option.  Tidy up output from
          --help.

Fri Mar 31 17:43:25 BST 2006  Olly Betts <olly@survex.com>

        * bin/quartzcompact.cc: Include --help and --version in --help output.
        * bin/quartzdump.cc: Add --help and --version options.  Terminate list
          of long options so that "quartzdump --foo" no longer segfaults.

Fri Mar 31 17:27:09 BST 2006  Olly Betts <olly@survex.com>

        * bin/quartzcompact.cc: Tweak --help and --version output for
          consistency with other binaries.  Terminate list of long options so
          that "quartzcompact --foo" no longer segfaults.

Fri Mar 31 16:47:02 BST 2006  Olly Betts <olly@survex.com>

        * bin/omtcpsrv.cc: Make OPT_HELP and OPT_VERSION positive numbers.
          Only give synopsis line for --help, not for syntax error.
        * bin/xapian-compact.cc: List --help and --version in --help output.
          Terminate list of long options so that "xapian-compact --foo" no
          longer segfaults.

Fri Mar 31 16:20:24 BST 2006  Olly Betts <olly@survex.com>

        * bin/omtcpsrv.cc: Added --help and --version options.

Thu Mar 30 11:51:21 BST 2006  Philip Neustrom

        * docs/remote_protocol.html: Document messages for requesting and
          sending a termlist and a document.

Wed Mar 29 19:39:05 BST 2006  Olly Betts <olly@survex.com>

        * backends/flint/flint_termlist.cc,backends/quartz/quartz_termlist.cc:
          Add missing spaces in debug output.

Fri Mar 17 09:22:54 GMT 2006  Olly Betts <olly@survex.com>

        * api/vectortermlist.h,backends/net/net_termlist.cc,
          backends/net/net_termlist.h,common/alltermslist.h,common/termlist.h,
          matcher/branchtermlist.h: Make TermList::positionlist_begin() pure
          virtual and put dummy implementations in BranchTermList and other
          subclasses which can't (or don't) implement it.  This makes it
          hard to accidentally fail to implement it in a backend's TermList
          subclass.
        * backends/net/net_termlist.h: positionlist_begin() now throws
          UnimplementedError instead of InvalidOperationError.

Fri Mar 17 08:46:52 GMT 2006  Olly Betts <olly@survex.com>

        * api/omdatabase.cc: There's no need for the MultiTermList wrapper in
          the common case where we're only dealing with a single database.

Fri Mar 17 07:54:54 GMT 2006  Olly Betts <olly@survex.com>

        * backends/net/net_termlist.h: Remove unused "positions" member.

Fri Mar 17 07:07:57 GMT 2006  Olly Betts <olly@survex.com>

        * backends/multi/multi_termlist.cc,backends/multi/multi_termlist.h,
          tests/api_posdb.cc: Fix TermIterator::positionlist_begin() to work
          on TermIterator from Database::termlist_begin().

Fri Mar 17 03:47:04 GMT 2006  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Fix "unused parameter" warning from
          previous change.

Thu Mar 16 05:20:16 GMT 2006  Olly Betts <olly@survex.com>

        * api/omenquire.cc,include/xapian/enquire.h:  Move
          Enquire::get_matching_terms_end() inline in header.

Thu Mar 16 04:28:20 GMT 2006  Olly Betts <olly@survex.com>

        * api/omdocument.cc,configure.ac,include/xapian/document.h: Move
          Document::termlist_end() inline in header.

Fri Mar 10 04:55:57 GMT 2006  Olly Betts <olly@survex.com>

        * INSTALL: Improve wording.

Fri Mar 10 04:49:09 GMT 2006  Olly Betts <olly@survex.com>

        * backends/quartz/bcursor.h: Fix incorrect method name in
          documentation comment.

Fri Mar 10 04:39:45 GMT 2006  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc,backends/quartz/btree.h: Btree::find_key()
          is unused so remove it.

Fri Mar 10 04:29:46 GMT 2006  Olly Betts <olly@survex.com>

        * HACKING: Note that we now use a lightly patched version of libtool
          1.5.22.

Fri Mar 10 02:55:48 GMT 2006  Olly Betts <olly@survex.com>

        * docs/overview.html: Bring up to date.

Wed Mar 08 02:32:49 GMT 2006  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Fix FLAG_BOOLEAN_ANY_CASE to really
          allow any case combination - previously it only allowed all
          uppercase or all lowercase.
        * tests/queryparsertest.cc: Add feature and regression tests for
          FLAG_BOOLEAN_ANY_CASE.
        * tests/queryparsertest.cc: Rename test cases to more descriptive
          names.

Tue Mar 07 19:59:54 GMT 2006  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony,tests/queryparsertest.cc:
          Fix QueryParser's handling of terms with trailing "#", "+",
          or "-" when set_database has been called and the term doesn't
          exist in the database with the suffix.

Tue Feb 21 21:14:22 GMT 2006  Olly Betts <olly@survex.com>

        * include/xapian/deprecated.h: Allow xapian-bindings to override
          deprecation warnings.

Tue Feb 21 17:55:17 GMT 2006  Olly Betts <olly@survex.com>

        * backends/flint/flint_database.cc: Note that "flicklock" should be
          "flintlock"!

Tue Feb 21 14:13:08 GMT 2006  Olly Betts <olly@survex.com>

        * PLATFORMS: Updated.

Tue Feb 21 14:12:47 GMT 2006  Olly Betts <olly@survex.com>

        * HACKING: Update the "how to do a release" list.

Tue Feb 21 00:17:40 GMT 2006  Olly Betts <olly@survex.com>

        * NEWS,PLATFORMS,configure.ac: Updated for 0.9.4.

Mon Feb 20 21:15:46 GMT 2006  Olly Betts <olly@survex.com>

        * api/omdocument.cc,api/omenquire.cc,api/omquery.cc,include/xapian/,
          queryparser/queryparser.cc: GCC 3.2 actually doesn't like
          __attribute__((deprecated)) on method definitions, so just
          put declarations of deprecated methods in the headers, and
          move definitions into the library.

Mon Feb 20 16:04:33 GMT 2006  Olly Betts <olly@survex.com>

        * tests/api_anydb.cc,tests/api_db.cc,tests/api_nodb.cc: Update uses
          of deprecated methods and functions.

Mon Feb 20 15:47:31 GMT 2006  Olly Betts <olly@survex.com>

        * include/xapian/document.h: __attribute__((deprecated)) doesn't
          work on method definitions with default parameters on GCC 3.2
          so fix header to overload instead.

Mon Feb 20 13:44:14 GMT 2006  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Add documentation comment for
          Enquire::set_sort_by_value_then_relevance().

Sun Feb 19 23:18:09 GMT 2006  Olly Betts <olly@survex.com>

        * include/Makefile.am,include/xapian/: Flag deprecated methods such
          that the compiler gives a warning, for compilers which support
          such a feature.

Sun Feb 19 22:58:55 GMT 2006  Olly Betts <olly@survex.com>

        * COPYING: Update second occurrence of old FSF address.

Sun Feb 19 22:46:49 GMT 2006  Olly Betts <olly@survex.com>

        * README: Add pointer to HACKING.  Change "CVS access" to "SVN
          access".

Sun Feb 19 01:46:00 GMT 2006  Olly Betts <olly@survex.com>

        * api/version.cc: Correct typo in name of function xapian_revision().

Thu Feb 16 10:23:59 GMT 2006  Olly Betts <olly@survex.com>

        * xapian-config.in: Oops, fix previous fix (I'd pasted the substituted
          result from testing the patch...)

Thu Feb 16 10:16:31 GMT 2006  Olly Betts <olly@survex.com>

        * PLATFORMS: Updated from tinderbox.

Thu Feb 16 10:15:51 GMT 2006  Olly Betts <olly@survex.com>

        * xapian-config.in: Need to set exec_prefix and prefix at top of
          script as they're used by various @SUBSTITUTIONS@.

Thu Feb 16 00:09:34 GMT 2006  Olly Betts <olly@survex.com>

        * NEWS,PLATFORMS,configure.ac: Updated for 0.9.3.

Wed Feb 15 21:58:23 GMT 2006  Olly Betts <olly@survex.com>

        * xapian-config.in: Fix option loop to work on shells other than bash.

Wed Feb 15 21:38:38 GMT 2006  Olly Betts <olly@survex.com>

        * include/xapian/database.h: Tweak wording of a documentation comment.

Wed Feb 15 21:34:55 GMT 2006  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: Fix documentation comments for the
          values of QueryParser::feature_flag so doxygen actually pulls out
          the documentation for them.  Add documentation for the parameters
          of QueryParser::parse_query().

Wed Feb 15 21:26:48 GMT 2006  Olly Betts <olly@survex.com>

        * bin/quartzcheck.cc: If the database is too broken to open, emit a
          warning message and bump the error count.

Wed Feb 15 21:23:38 GMT 2006  Olly Betts <olly@survex.com>

        * docs/queryparser.html: Document right-truncation.

Wed Feb 15 21:08:37 GMT 2006  Olly Betts <olly@survex.com>

        * xapian-config.in: Fixed to output usage correctly if no arguments
          are specified.

Mon Feb 13 17:43:08 GMT 2006  Olly Betts <olly@survex.com>

        * xapian-config.in: Expand dependency_libs recursively.  It's not
          *that* hard, and we're just storing up problems for the future
          by ignoring the issue.

Mon Feb 13 16:57:36 GMT 2006  Olly Betts <olly@survex.com>

        * HACKING: Devlopers also need makeindex installed for documentation
          building.  Note that dvips and makeindex are usually packaged with
          TeX.

Mon Feb 13 15:16:02 GMT 2006  Olly Betts <olly@survex.com>

        * configure.ac,xapian-config.in: Some Linux distros have an
          unhelpful policy of not packaging .la files, and on Linux
          link_all_deplibs_CXX=no so we don't actually need to link
          in the dependency_libs.  So use the value of link_all_deplibs_CXX
          from configure to control whether we link against dependency_libs.
        * xapian-config.in: Factor out common code into shell functions,
          and tidy up --help output.
        * xapian-config.in: Re entry "Tue May 11 20:55:56 BST 2004": the (C)
          dates I mined from CVS included a BrightStation (C), but the few
          fragments of that version which survive are actually from
          glib-config (or one of the myriad of *-config scripts which look
          very like it), and are just standard Bourne shell idioms anyway.

Mon Feb 13 13:59:02 GMT 2006  Olly Betts <olly@survex.com>

        * PLATFORMS: td174 is gone.
        * PLATFORMS: Compaq C++ 7.1 seems to have better template support
          (but fails to link binaries).

Mon Feb 13 12:22:23 GMT 2006  Olly Betts <olly@survex.com>

        * HACKING,testsuite/testsuite.cc: XAPIAN_TESTSUITE_PLAIN_OUTPUT
          -> XAPIAN_TESTSUITE_OUTPUT=plain.

Sun Feb 12 18:29:55 GMT 2006  Olly Betts <olly@survex.com>

        * backends/database.cc,tests/api_nodb.cc: Trying to open a database
          for reading which doesn't exist now fails with DatabaseOpeningError
          instead of FeatureUnavailableError.  Added regression test
          nosuchdb1.

Thu Feb 09 10:48:10 GMT 2006  Olly Betts <olly@survex.com>

        * net/socketserver.cc: Add missing '#include <iostream>'
          when TIMING_PATCH is defined.

Wed Feb 08 08:22:09 GMT 2006  Olly Betts <olly@survex.com>

        * HACKING: Now use libtool 1.5.22 for generating snapshots and
          releases (includes a number of bug-fixes).
        * HACKING,docs/doxygen_api_header.html_tmpl,
          docs/doxygen_full_header.html_tmpl: Now use doxygen 1.4.6 for
          generating snapshots and releases (nicer output).
        * docs/doxygen_full_header.html_tmpl: Title "Internal Source
          Documentation" rather than "Full source documentation".

Sun Feb 05 06:19:29 GMT 2006  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony,tests/queryparsertest.cc: The
          QueryParser now recognises "AND NOT" as a synonym for "NOT".

Mon Jan 16 18:19:26 GMT 2006  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_utils.h: Fix compiler warning.

Mon Jan 16 18:17:27 GMT 2006  Olly Betts <olly@survex.com>

        * HACKING,backends/flint/,backends/muscat36/,backends/quartz/,
          bin/quartzcompact.cc,bin/xapian-compact.cc,common/Makefile.am,
          common/safeerrno.h,net/,tests/btreetest.cc,tests/quartztest.cc,
          testsuite/backendmanager.cc,testsuite/testsuite.cc: Sorted out
          a cleaner workaround for Compaq C++'s <errno.h> oddity.

Mon Jan 16 17:18:56 GMT 2006  Olly Betts <olly@survex.com>

        * common/safewindows.h: Fix typo in file description.

Mon Jan 16 13:29:48 GMT 2006  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_database.cc: Reverse order of errno includes
          which seems to make Compaq's C++ compiler happier.

Sun Jan 15 23:52:01 GMT 2006  Olly Betts <olly@survex.com>

        * backends/flint/flint_database.cc,backends/flint/flint_table.cc,
          backends/quartz/btree.cc,backends/quartz/quartz_database.cc,
          backends/quartz/quartz_log.cc,configure.ac,net/socketcommon.cc,
          net/tcpclient.cc,testsuite/backendmanager.cc: Compaq C++ requires
          sys/errno.h to get ENOENT and most other EXXX codes defined.

Sun Jan 15 23:41:15 GMT 2006  Olly Betts <olly@survex.com>

        * bin/xapian-compact.cc: Initialise 2 variables to avoid compiler
          warnings.

Sun Jan 15 23:38:11 GMT 2006  Olly Betts <olly@survex.com>

        * xapian-config.in: If libxapian.la's dependency_libs contains
          another .la file, crudely transform to a pair of -L and -l
          options.  Ideally we should recursively pull in dependency_libs
          from that .la file, but that's too hard to do in sh.

Sun Jan 15 21:43:26 GMT 2006  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony,queryparser/queryparser.lt:
          Eliminate ParseAlloc's mallocProc parameter and ParseFree's freeProc
          parameter - we always pass malloc and free, and get warnings from
          some compilers because we're passing a C-linkage function for a
          C++-linkage function pointer.
        * testsuite/testsuite.cc,testsuite/testsuite.h: Fix functions
          registered as signal handlers and pass to atexit to have C linkage.

Sun Jan 15 14:49:45 GMT 2006  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_log.cc: #include <string.h> for strerror.

Sun Jan 15 04:36:49 GMT 2006  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h,queryparser/queryparser.cc:
          Add Stopper::get_description() and SimpleStopper::get_description().

Sat Jan 14 21:43:32 GMT 2006  Olly Betts <olly@survex.com>

        * configure.ac: Fix backwards logic in snprintf configure test.
          Also define SNPRINTF_ISO to be an snprintf with ISO C90 semantics
          for the return value (if one exists), with SNPRINTF being defined
          to any snprintf which at least performs truncation (which in many
          cases is sufficient).

Sat Jan 14 04:47:33 GMT 2006  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lt: Fix aCC warnings.

Sat Jan 14 04:47:00 GMT 2006  Olly Betts <olly@survex.com>

        * common/utils.h: Fix aCC warning.

Fri Jan 13 18:25:04 GMT 2006  Olly Betts <olly@survex.com>

        * configure.ac: Turn on more warnings for aCC; suppress existing
          warning ("Entire translation unit was empty") since it's not
          useful to us.

Fri Jan 13 03:22:26 GMT 2006  Olly Betts <olly@survex.com>

        * configure.ac: The configure test for snprintf uses memcmp, so
          we need to "#include <string.h>" for it to work reliably.

Wed Jan 11 03:14:30 GMT 2006  Olly Betts <olly@survex.com>

        * configure.ac: If not cross-compiling, try to actually run a test
          program built with the C++ compiler, not just link one.

Wed Jan 11 03:06:28 GMT 2006  Olly Betts <olly@survex.com>

        * configure.ac: Note the library version info which 0.9.3 will
          probably need.

Tue Jan 10 22:41:36 GMT 2006  Olly Betts <olly@survex.com>

        * configure.ac: Fix to actually skip the check for valgrind if
          VALGRIND is set to an empty value.

Tue Jan 10 01:08:10 GMT 2006  Olly Betts <olly@survex.com>

        * PLATFORMS: Updates from the tinderbox.

Mon Jan 09 01:35:57 GMT 2006  Olly Betts <olly@survex.com>

        * backends/muscat36/io_system.cc,bin/xapian-compact.cc,
          common/omdebug.cc: More sprintf tweaks.

Mon Jan 09 00:58:33 GMT 2006  Olly Betts <olly@survex.com>

        * bin/xapian-compact.cc: Use snprintf if we have it.

Sun Jan 08 03:51:52 GMT 2006  Olly Betts <olly@survex.com>

        * testsuite/backendmanager.cc: Fix conditional compilation of
          flint backend to use XAPIAN_BUILD_BACKEND_FLINT instead
          of XAPIAN_BUILD_BACKEND_QUARTZ.

Sun Jan 08 02:11:30 GMT 2006  Olly Betts <olly@survex.com>

        * configure.ac: Disable flint backend by default if building for
          djgpp or msdos.

Sun Jan 08 02:09:48 GMT 2006  Olly Betts <olly@survex.com>

        * backends/flint/flint_lock.cc: Cast NULL to (void*) to avoid
          "missing sentinel" warning from GCC4.

Sat Jan 07 19:09:33 GMT 2006  Olly Betts <olly@survex.com>

        * HACKING,docs/tests.html: Merge the "running tests" section of
          docs/tests.html into the similar section in HACKING, and make
          docs/tests.html refer the reader to HACKING for more information.
        * HACKING,tests/apitest.cc: Remove OM_TEST_BACKEND.  You can now
          use the "-b" switch to apitest to control which backend is used
          so it's pretty much redundant.
        * HACKING,testsuite/testsuite.cc: Rename XAPIAN_SIG_DFL to
          XAPIAN_TESTSUITE_SIG_DFL.
        * HACKING,testsuite/testsuite.cc: Add XAPIAN_TESTSUITE_PLAIN_OUTPUT
          to disable use of ANSI escape sequences in test output.

Sat Jan 07 09:13:06 GMT 2006  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Write top-bit set characters using \xXX
          notation to avoid warnings from Intel's C++ compiler.

Sat Jan 07 07:13:25 GMT 2006  Olly Betts <olly@survex.com>

        * configure.ac: TYPE_SOCKLEN_T fails hard, so only run it if we've
          successfully run other socket tests.

Sat Jan 07 05:29:39 GMT 2006  Olly Betts <olly@survex.com>

        * queryparser/accentnormalisingitor.h: #include <limits.h> for
          CHAR_BIT.

Fri Jan 06 21:24:01 GMT 2006  Olly Betts <olly@survex.com>

        * bin/xapian-compact.cc: Fix printf type mismatch on 64 bit platforms.

Fri Jan 06 18:05:30 GMT 2006  Olly Betts <olly@survex.com>

        * queryparser/queryparser.cc,queryparser/queryparser.lemony,
          queryparser/queryparser_internal.h: Replace pair<bool, string>
          with a simple class BoolAndString - the pair results in a
          4328 byte symbol on HP-UX which gets truncated (to 4000 bytes).

Fri Jan 06 12:55:37 GMT 2006  Olly Betts <olly@survex.com>

        * PLATFORMS: Updated from tinderbox.

Thu Jan 05 16:12:00 GMT 2006  Olly Betts <olly@survex.com>

        * configure.ac: Oops, remove hack left over from testing.

Thu Jan 05 16:09:06 GMT 2006  Olly Betts <olly@survex.com>

        * configure.ac: Add sanity check for MS Windows that "find" is
          Unix-like find, not MSDOS-like.

Thu Jan 05 04:27:29 GMT 2006  Olly Betts <olly@survex.com>

        * INSTALL,PLATFORMS,README: Updated.

Mon Dec 19 12:53:38 GMT 2005  Olly Betts <olly@survex.com>

        * AUTHORS,PLATFORMS: Add success report for Fedora Core 4.

Mon Dec 19 12:52:55 GMT 2005  Olly Betts <olly@survex.com>

        * include/xapian/database.h: Improve a couple of documentation
          comments.

Sun Dec 11 01:33:58 GMT 2005  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Fix handling of "+" terms in a query
          when the default query operator is AND.
        * tests/queryparsertest.cc: Add regression test.

Fri Dec 09 05:54:33 GMT 2005  Olly Betts <olly@survex.com>

        * languages/api.cc: Check for malloc and calloc failing to allocate
          memory and throw an exception.  Richard has fix this upstream in
          snowball, so this is a temporary fix until we import a new version
          of snowball.

Fri Dec 09 02:15:38 GMT 2005  Olly Betts <olly@survex.com>

        * api/omenquire.cc: Added assertions that the internal ptr isn't NULL
          to ESet::end() and ESet::get_description().

Fri Dec 09 02:14:13 GMT 2005  Olly Betts <olly@survex.com>

        * HACKING: Note platforms valgrind now has solid support for; Improve
          phrasing in a few places.

Thu Dec 08 23:13:09 GMT 2005  Olly Betts <olly@survex.com>

        * INSTALL: Update URL for stlport to sourceforge site, which seems to
          be where the action is now.

Thu Dec 08 04:13:11 GMT 2005  Olly Betts <olly@survex.com>

        * testsuite/testsuite.cc: Fix testsuite harness to work with valgrind
          on 64 bit platforms (it's not documented, but VALGRIND_COUNT_LEAKS
          requires the count parameters to be 64 bit on such platforms - i.e.
          long rather than int as we were using).

Tue Nov 01 13:22:50 GMT 2005  Olly Betts <olly@survex.com>

        * PLATFORMS: Sourceforge have a ppc64 linux box.  Xapian builds and
          works out of the box, so add success report for this platform.

Thu Oct 27 09:32:24 BST 2005  Fabrice Colin

        * xapian.spec.in: Invoke %setup correctly.

Sat Oct 01 03:25:50 BST 2005  Olly Betts <olly@survex.com>

        * bin/xapian-compact.cc: Added "--multipass" option to merge postlists
          in pairs or triples until all are merged.  Generally this is faster
          than an N-way merge, but it does require more disk space for
          temporary files so it's not the default.

Fri Sep 30 18:02:32 BST 2005  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Give pointer to replacements for the
          deprecated Enquire sorting methods.

Wed Sep 28 02:16:03 BST 2005  Olly Betts <olly@survex.com>

        * bin/xapian-compact.cc: Use a vector<string> to store the list of
          source databases, in preparation for merging multiple postlist
          tables in more than one pass.

Mon Sep 26 22:22:24 BST 2005  Olly Betts <olly@survex.com>

        * .: svn:ignore docsource.mk.

Mon Sep 26 19:54:15 BST 2005  Olly Betts <olly@survex.com>

        * bin/: svn:ignore xapian-compact.

Mon Sep 26 19:50:13 BST 2005  Olly Betts <olly@survex.com>

        * backends/flint/flint_positionlist.cc: Remove trailing whitespace.

Wed Sep 21 01:31:23 BST 2005  Olly Betts <olly@survex.com>

        * api/Makefile.am: Fixed VPATH build which was broken by the addition
          of version.cc.

Tue Sep 20 23:38:05 BST 2005  Olly Betts <olly@survex.com>

        * backends/flint/flint_lock.cc: Don't pass NULL for second parameter
          of execl().

Tue Sep 20 21:32:04 BST 2005  Olly Betts <olly@survex.com>

        * api/Makefile.am,api/version.cc,include/xapian/version_h.cc: Add 4
          functions to report version information for the library version
          being used (which may not be the same as that compiled against
          if shared libraries are in use):  xapian_version_string(),
          xapian_major_version(), xapian_minor_version(), xapian_revision().

Sat Sep 17 14:07:32 BST 2005  Richard Boulton <richard@tartarus.org>

        * backends/flint/flint_lock.cc: Pass two NULLs to execl() to avoid
          getting a warning ("not enough variable arguments to fit a
          sentinel", observed on Ubuntu breezy powerpc).  Reported by
          Sidnei da Silva.

Wed Sep 14 23:54:14 BST 2005  Olly Betts <olly@survex.com>

        * HACKING: Now generate snapshots and releases with automake 1.9.6
          (was 1.9.5) and libtool 1.5.20 (was 1.5.18).

Tue Aug 30 14:01:55 BST 2005  Olly Betts <olly@survex.com>

        * backends/inmemory/inmemory_database.h: Forward declare class
          InMemoryDatabase to fix compilation with GCC 4.0.1.

Fri Aug 19 12:13:39 BST 2005  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_postlist.cc,backends/flint/flint_postlist.cc:
          Correct uses of termcount which should be doccount.

Fri Aug 19 11:48:51 BST 2005  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Fix prototype for ESet::operator[] to
          take parameter of type termcount instead of doccount.

Wed Aug 17 11:50:54 BST 2005  Olly Betts <olly@survex.com>

        * common/safewindows.h: Fix compilation for cygwin.

Tue Aug 16 16:01:36 BST 2005  Olly Betts <olly@survex.com>

        * backends/flint/flint_types.h,backends/quartz/quartz_types.h:  Using
          a double to hold the total document length would be a bad idea as
          we need to store it exactly so kill FIXME comments that suggest
          perhaps we should.

Fri Jul 15 11:11:35 BST 2005  Olly Betts <olly@survex.com>

        * configure.ac,NEWS,PLATFORMS: Updated for 0.9.2.

Fri Jul 15 02:31:11 BST 2005  Olly Betts <olly@survex.com>

        * preautoreconf: Change directory to the directory that the
          preautoreconf script is in before doing anything else.

Fri Jul 15 01:02:29 BST 2005  Olly Betts <olly@survex.com>

        * docs/doxygen_api_conf.in,docs/doxygen_full_conf.in,configure.ac:
          Eliminate TOP_SRCDIR and TOP_BUILDDIR - it's better to just use
          top_srcdir and top_builddir directly.

Fri Jul 15 00:48:39 BST 2005  Olly Betts <olly@survex.com>

        * configure.ac: Fix superfluous shell quoting.

Fri Jul 15 00:28:40 BST 2005  Olly Betts <olly@survex.com>

        * configure.ac,docs/Makefile.am,preautoreconf,Makefile.am: Generate
          the list of source files to feed to doxygen by inspecting all the
          Makefile.am files prior to running autoreconf rather than by using
          "find" when the user runs ./configure.  This speeds up configure,
          avoids generating docs for random .cc and .h files which aren't
          part of xapian-core, and avoids problems with picking up FIND.EXE
          on MS Windows.

Thu Jul 14 12:49:36 BST 2005  Olly Betts <olly@survex.com>

        * common/,matcher/multimatch.cc,matcher/networkmatch.cc,
          matcher/networkmatch.h,net/socketclient.cc,net/socketserver.cc,
          tests/api_db.cc: Implement sorting on a value with the remote
          backend.

Wed Jul 13 01:25:17 BST 2005  Olly Betts <olly@survex.com>

        * include/xapian/database.h,include/xapian/dbfactory.h,
          net/socketclient.cc: Regularise horizontal whitespace.

Tue Jul 05 03:03:57 BST 2005  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: Oops, failed to check in header
          changes for last change.

Mon Jul 04 15:50:55 BST 2005  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony,queryparser/queryparser.cc:
          Add flag FLAG_BOOLEAN_ANY_CASE which tells the QueryParser that
          boolean operators such as "AND", "OR", and "NEAR" should be
          recognised even if they aren't fully capitalised (so "and",
          "And", "aNd", etc will work too).  Add flag FLAG_WILDCARD which
          tells the QueryParser to allow right truncation e.g. "xap*".
        * tests/queryparsertest.cc: Add tests for FLAG_WILDCARD.

Sun Jul 03 15:24:12 BST 2005  Olly Betts <olly@survex.com>

        * backends/database.cc: Fixed to auto-detect database type when
          opening an existing Flint database as a WritableDatabase.

Sat Jul 02 18:49:22 BST 2005  Olly Betts <olly@survex.com>

        * tests/queryparsertest.cc: Add test case: "-site:xapian.org mail".

Sat Jul 02 18:49:03 BST 2005  Olly Betts <olly@survex.com>

        * common/Makefile.am: Ship safewindows.h header.

Sat Jul 02 18:04:18 BST 2005  Olly Betts <olly@survex.com>

        * bin/quartzcompact.cc,bin/xapian-compact.cc,
          backends/muscat36/io_system.cc,backends/quartz/btree.cc,
          backends/quartz/quartz_log.cc,backends/quartz/quartz_database.cc,
          backends/flint/,common/,net/,tests/,testsuite/backendmanager.cc,
          testsuite/testsuite.cc: Assorted tweaks towards allowing
          compilation with MSVC.

Sat Jul 02 05:08:54 BST 2005  Olly Betts <olly@survex.com>

        * backends/quartz/: Always define WIN32_LEAN_AND_MEAN before
          including windows.h to reduce the amount of stuff it includes
          and speed up builds; Eliminate Btree::max_key_len as MSVC
          doesn't like the way we define it and it actually seems
          simpler to just use BTREE_MAX_KEY_LEN everywhere anyway.
        * backends/quartz/btree.cc: Added a few more assertions.

Sat Jul 02 04:11:01 BST 2005  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony,tests/queryparsertest.cc: Fixed to
          handle "-site:microsoft.com" where site is a boolean prefix.
        * queryparser/Makefile.am: Add dependency to generate
          queryparser_token.h.

Thu Jun 30 02:14:16 BST 2005  Olly Betts <olly@survex.com>

        * testsuite/testsuite.cc: Update URL for valgrind FAQ in comment.

Thu Jun 30 00:11:52 BST 2005  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: More explicit explanation of the
          "descending docid with boolean weighting" trick for fast
          date ordered searching.

Wed Jun 29 13:16:13 BST 2005  Olly Betts <olly@survex.com>

        * NEWS: Fix typo: "configurec" -> "configure".

Mon Jun 27 04:21:34 BST 2005  Olly Betts <olly@survex.com>

        * xapian.spec.in: Package xapian-compact.

Mon Jun 27 03:41:23 BST 2005  Olly Betts <olly@survex.com>

        * backends/flint/flint_positionlist.cc,tests/api_wrdb.cc: Fixed
          mispacking of length for Flint positionlists with more than 127
          entries, and added regression test longpositionlist1.

Sun Jun 26 02:04:33 BST 2005  Olly Betts <olly@survex.com>

        * bin/xapian-compact.cc,backends/flint/flint_cursor.h: Let
          PostlistCursor take ownership of the FlintTable it's iterating over
          which makes clean-up tidier.
        * bin/xapian-compact.cc: We were accidentally skipping the first
          entry in various tables (which essentially meant the first
          document from each database would go missing when merging
          databases).

Sat Jun 25 23:45:42 BST 2005  Olly Betts <olly@survex.com>

        * api/omdatabase.cc: Tweak get_lastdocid() code to be a little
          clearer.

Wed Jun 22 20:50:43 BST 2005  Olly Betts <olly@survex.com>

        * configure.ac,include/xapian/version.h.in,include/xapian/version_h.cc,
          include/Makefile.am: Eliminate use of "ln -s" when generating
          include/xapian/version.h since it seems to cause problems on Solaris
          in some setups and isn't really necessary.  Also add dependency
          mechanism so version.h gets regenerated when the template is
          changed.

Wed Jun 22 18:47:05 BST 2005  Olly Betts <olly@survex.com>

        * docs/intro_ir.html: Citeseer has moved, so update link.

Mon Jun 20 13:33:42 BST 2005  Olly Betts <olly@survex.com>

        * configure.ac: -Wshadow causes false positives with GCC 3.0.4, so
          only enable it for 3.1 and up.

Mon Jun 20 03:09:07 BST 2005  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: "utilpy" -> "utility"!

Fri Jun 17 19:54:44 BST 2005  Olly Betts <olly@survex.com>

        * COPYING: Update FSF address.

Thu Jun 16 18:43:33 BST 2005  Olly Betts <olly@survex.com>

        * backends/flint/flint_table.cc: Fix warnings from older GCC versions.
        * backends/flint/flint_lock.cc: '#include <signal.h>' so that SIGHUP
          gets defined reliably.

Thu Jun 16 17:54:39 BST 2005  Olly Betts <olly@survex.com>

        * bin/Makefile.am,bin/xapian-compact.cc: Added new "xapian-compact"
          program which can compact and merge flint databases in a similar
          way to how quartzcompact does for quartz databases.

Thu Jun 16 01:22:45 BST 2005  Olly Betts <olly@survex.com>

        * configure.ac: Check for spaces in build directory, source directory,
          or install prefix and die with a helpful message.

Wed Jun 15 01:00:11 BST 2005  Olly Betts <olly@survex.com>

        * backends/flint/flint_lock.cc: It seems we need to explicitly kill
          the child process.  Otherwise when we have two databases locked
          just closing the connection doesn't cause the child to die.  I
          don't understand why it's needed, but this fix is at least clean.

Mon Jun 13 00:13:33 BST 2005  Olly Betts <olly@survex.com>

        * backends/flint/flint_alltermslist.cc,
          backends/flint/flint_alltermslist.h,
          backends/flint/flint_database.cc: Rewrite of FlintAllTermsList
          with several fewer member variables.  Also fixes a bug (the old
          version wasn't ignoring the metainfo entry so tests were failing).

Sun Jun 12 13:08:16 BST 2005  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_alltermslist.cc: Disable assertion which is
          incorrect in a corner case.
        * tests/api_db.cc: Add test_specialterms2 as a regression test.

Sun Jun 12 02:03:52 BST 2005  Olly Betts <olly@survex.com>

        * backends/flint/flint_positionlist.cc: Encoding and decoding of
          position list size, and first and last entries didn't match.
          Reworked to match using a slightly smaller encoding.
        * backends/flint/flint_metafile.cc: Bumped format version.

Sun Jun 12 02:02:35 BST 2005  Olly Betts <olly@survex.com>

        * backends/flint/flint_table.cc: We were failing to append "DB" to the
          path when opening a table for reading - fixed.

Sun Jun 12 02:00:30 BST 2005  Olly Betts <olly@survex.com>

        * testsuite/backendmanager.cc: When a flint database was requested, we
          were incorrectly creating a quartz database instead - fixed.

Sat Jun 11 17:53:12 BST 2005  Olly Betts <olly@survex.com>

        * bin/quartzcompact.cc: Fix mis-repacking of keys in positionlist
          table when merging several databases.

Thu Jun 09 01:06:35 BST 2005  Olly Betts <olly@survex.com>

        * Makefile.am,configure.ac: Pass automake options to AM_INIT_AUTOMAKE
          rather than specifying them in Makefile.am.  This way, the version
          requirements for autoconf and automake are stated close together.

Mon Jun 06 19:49:36 BST 2005  Olly Betts <olly@survex.com>

        * HACKING: Minor updates to release checklist.

Mon Jun 06 17:44:19 BST 2005  Olly Betts <olly@survex.com>

        * NEWS,configure.ac: Updated for 0.9.1.

Mon Jun 06 17:28:34 BST 2005  Olly Betts <olly@survex.com>

        * configure.ac: Describe CC_FOR_BUILD in configure --help output.

Mon Jun 06 16:00:26 BST 2005  Olly Betts <olly@survex.com>

        * PLATFORMS: Updated for 0.9.1.

Fri Jun 03 03:49:33 BST 2005  Olly Betts <olly@survex.com>

        * backends/flint/flint_lock.cc,backends/flint/flint_lock.h: Fixed
          compilation failure on mingw.

Fri Jun 03 01:58:08 BST 2005  Olly Betts <olly@survex.com>

        * PLATFORMS: Updated from tinderbox.

Fri Jun 03 00:46:00 BST 2005  Olly Betts <olly@survex.com>

        * HACKING,NEWS: Snapshot and release tarballs are now bootstrapped
          using libtool 1.5.18 and automake 1.9.5 (though neither is currently
          an enforced requirement for bootstrapping).

Thu Jun 02 17:36:36 BST 2005  Olly Betts <olly@survex.com>

        * NEWS: First draft of release notes for 0.9.1.

Thu Jun 02 02:05:47 BST 2005  Olly Betts <olly@survex.com>

        * backends/flint/flint_record.cc: Fix get_doccount() to not return
          one too low now that the special entry is no longer in the record
          table!

Wed Jun 01 12:41:59 BST 2005  Olly Betts <olly@survex.com>

        * backends/flint/flint_positionlist.cc: Placate Sun's C++ compiler.

Tue May 31 19:31:24 BST 2005  Olly Betts <olly@survex.com>

        * backends/flint/flint_positionlist.h,
          backends/flint/flint_positionlist.cc,
          backends/flint/flint_metafile.cc: positionlist entries are now
          stored using interpolative coding (which is significantly more
          compact).

Mon May 30 01:48:17 BST 2005  Olly Betts <olly@survex.com>

        * backends/flint/flint_lock.cc,backends/flint/flint_lock.h:  Added
          locking code for MS Windows (untested).

Sun May 29 01:00:41 BST 2005  Olly Betts <olly@survex.com>

        * HACKING,NEWS,testsuite/testsuite.h: Fixed spelling mistakes.

Sat May 28 22:51:15 BST 2005  Olly Betts <olly@survex.com>

        * tests/: svn:ignore .flint/ subdirectory.
        * tests/Makefile.am: Remove .flint subdirectory on 'make clean'.

Sat May 28 22:45:24 BST 2005  Olly Betts <olly@survex.com>

        * docs/quartzdesign.html: Remove warning that quartz is still in
          development.

Sat May 28 16:24:43 BST 2005  Olly Betts <olly@survex.com>

        * backends/flint/flint_lock.h: Removed unused FlintLock method
          'operator int()' which was confusing Sun's C++ compiler.

Sat May 28 16:18:11 BST 2005  Olly Betts <olly@survex.com>

        * include/xapian/query.h: Removed superfluous "Query::" which was
          causing the build to fail with aCC.

Sat May 28 14:31:33 BST 2005  Olly Betts <olly@survex.com>

        * backends/flint/flint_metafile.cc: Added missing '#include <errno.h>'.

Sat May 28 14:15:36 BST 2005  Olly Betts <olly@survex.com>

        * backends/flint/flint_positionlist.cc: Simplify code a bit.

Sat May 28 02:01:12 BST 2005  Olly Betts <olly@survex.com>

        * backends/flint/: Move the special item holding the total document
          length and doc id high water mark from the record table to the
          postlist table.  This means that when appending documents, the
          insertion point will now always be at the end of the record table.
          We need to jump around the postlist table to merge anyway.

Sat May 28 00:42:25 BST 2005  Olly Betts <olly@survex.com>

        * backends/flint/flint_metafile.cc: Change metafile magic to be
          different from quartz, and make the metafile version a datestamp
          which we'll change each time the format changes; check the return
          value of close on the metafile.

Fri May 27 22:09:45 BST 2005  Olly Betts <olly@survex.com>

        * backends/Makefile.am,backends/flint/: Implement new fork+fcntl+exec
          based locking;  Fix new GCC warnings.

Fri May 27 22:06:14 BST 2005  Olly Betts <olly@survex.com>

        * api/omquery.cc: Missed a warning fix.

Fri May 27 22:04:18 BST 2005  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc,backends/quartz/btree.h,
          backends/quartz/quartz_postlist.cc,common/omtime.h,matcher/,
          net/socketserver.cc,net/socketcommon.cc,net/socketclient.cc,
          testsuite/btreecheck.h,testsuite/testsuite.cc: Fix GCC warnings
          from new flags.

Fri May 27 20:06:52 BST 2005  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Add missing '#include <config.h>'.

Fri May 27 12:20:03 BST 2005  Olly Betts <olly@survex.com>

        * common/omdebug.h: Oops, change to static_cast reveals that we were
          discarding const (harmlessly).

Fri May 27 12:16:03 BST 2005  Olly Betts <olly@survex.com>

        * common/omdebug.h: Replace C style cast with static_cast<>.

Fri May 27 12:07:48 BST 2005  Olly Betts <olly@survex.com>

        * configure.ac: -Wendif should be -Wendif-labels.

Wed May 25 20:41:39 BST 2005  Olly Betts <olly@survex.com>

        * configure.ac: Pass more -W flags to g++ (including -Wundef which
          caught the getopt problem fixed by the previous commit).

Wed May 25 20:32:35 BST 2005  Olly Betts <olly@survex.com>

        * getopt/getopt.cc: Added accidentally pruned #define so that getopt
          code isn't compiled in when the system uses glibc.

Wed May 25 18:36:41 BST 2005  Olly Betts <olly@survex.com>

        * configure.ac: Add -Wredundant-decls to the default CXXFLAGS for GCC.

Wed May 25 03:33:34 BST 2005  Olly Betts <olly@survex.com>

        * tests/apitest.cc,tests/api_db.cc,tests/api_db.h,
          testsuite/backendmanager.cc,testsuite/backendmanager.h:
          apitest now runs tests on flint as well.

Wed May 25 03:20:12 BST 2005  Olly Betts <olly@survex.com>

        * backends/database.cc: When automatically determining which backend
          to use when creating a WritableDatabase, don't try to open it as
          both Flint *AND* Quartz (an "else" was missing).

Wed May 25 03:19:21 BST 2005  Olly Betts <olly@survex.com>

        * backends/flint/flint_btreebase.cc: Fix typo in code which prevented
          a flint database from being opened.

Wed May 25 01:10:51 BST 2005  Olly Betts <olly@survex.com>

        * include/xapian/version.h.in,include/xapian/dbfactory.h,
          include/xapian/queryparser.h,backends/quartz/,backends/flint/:
          Flint backend hooked in fully, and everything now builds once
          more.

Tue May 24 02:30:39 BST 2005  Olly Betts <olly@survex.com>

        * HACKING: Add "email Fabrice" to the release checklist so that RPM
          spec files don't lag behind.  The new svn-tag-release script
          actually builds the release tarballs rather than just copying
          snapshots like cvs-tag-release did, so document that.

Tue May 24 01:21:18 BST 2005  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: Added missing documentation comments.

Mon May 23 02:36:06 BST 2005  Olly Betts <olly@survex.com>

        * configure.ac,backends/database.cc,backends/Makefile.am,
          backends/flint/: Cloned the quartz backend to form the basis of the
          new flint backend.  Currently it's the same except that the quartz
          log feature has been removed.  When creating a database without a
          specified backend, quartz is still used unless the environmental
          variable XAPIAN_PREFER_FLINT is set to a non-empty value.

Sat May 21 20:58:48 BST 2005  Olly Betts <olly@survex.com>

        * xapian.spec.in: Remove bogus %setup line left over from when we
          packaged xapian-core and xapian-examples together from separate
          tarballs.

Thu May 19 01:12:27 BST 2005  Olly Betts <olly@survex.com>

        * bin/quartzcheck.cc: Fixed corner case where you couldn't check a
          single Btree table which was just the DB and baseA/baseB files
          in a directory (Xapian doesn't produce anything like this, but
          btreetest does while unit testing the Btree code).

Wed May 18 16:59:23 BST 2005  Olly Betts <olly@survex.com>

        * api/omquery.cc,include/xapian/query.h: Put Query::get_terms_end()
          inline in header.

Wed May 18 16:41:56 BST 2005  Olly Betts <olly@survex.com>

        * api/omquery.cc,tests/api_nodb.cc: Fix SEGV on get_terms_begin()
          on an empty Query object.

Mon May 16 22:58:09 BST 2005  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc: Fixed compilation with --enable-debug.

Sat May 14 01:02:33 BST 2005  Olly Betts <olly@survex.com>

        * docs/doxygen_full_conf.in: Fix lingering DOXYGEN_HAVE_DOT reference.

Sat May 14 00:36:14 BST 2005  Olly Betts <olly@survex.com>

        * HACKING: Update information about the SVN tag name to use for
          debian files.

Fri May 13 23:21:54 BST 2005  Olly Betts <olly@survex.com>

        * HACKING: Updated release instructions to refer to SVN.

Fri May 13 20:58:15 BST 2005  Olly Betts <olly@survex.com>

        * PLATFORMS: Updated for 0.9.0.

Fri May 13 02:47:42 BST 2005  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: Fix for Sun's C++ compiler.

Fri May 13 00:09:07 BST 2005  Olly Betts <olly@survex.com>

        * NEWS,configure.ac: Updated for 0.9.0.

Thu May 12 18:54:11 BST 2005  Olly Betts <olly@survex.com>

        * docs/doxygen_api_conf.in,docs/Makefile.am: Fix to generate docs
          for all backend factory functions like 0.8.5 did.

Thu May 12 16:59:22 BST 2005  Olly Betts <olly@survex.com>

        * backends/database.cc,backends/Makefile.am,include/xapian/database.h,
          include/xapian/dbfactory.h,include/xapian.h,include/Makefile.am:
          Split off database factory methods into xapian/dbfactory.h - this
          allows us to fix recent breakage in VPATH builds (caused by the
          need to include the generated file xapian/version.h from
          xapian/database.h) without modifying almost every Makefile.am.

Wed May 11 16:52:41 BST 2005  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Move prefixed, bracketed
          subexpression to be an alternative for stop_term which allows
          "term prefix:(term2 term3)" to parse correctly. Also move
          non-prefixed, bracketed subexpression to be an alternative
          for stop_term - this doesn't change how things parse, but
          makes the grammar simpler.
        * tests/queryparsertest.cc: Added regression test for the above.
        * tests/Makefile.am,tests/queryparsertest.cc: Reworked queryparsertest
          to use the standard testsuite harness.

Wed May 11 16:09:32 BST 2005  Olly Betts <olly@survex.com>

        * include/xapian/query.h: Fix OP_ELITE_SET at 10 (the value it had
          in 0.8.5).

Tue May 10 22:56:45 BST 2005  Olly Betts <olly@survex.com>

        * docs/Makefile.am: Removed check for DOXYGEN_HAVE_DOT which I removed
          recently.

Tue May 10 01:09:01 BST 2005  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Removed state parameter from
          TermList::add_term() since it is no longer used.

Mon May 09 20:56:40 BST 2005  Olly Betts <olly@survex.com>

        * docs/Makefile.am: Explicitly set the pool_size for latex, because we
          seem to overflow the default setting on many systems.
        * docs/Makefile.am: Use $(MAKE) instead of make.

Sun May 08 23:22:37 BST 2005  Olly Betts <olly@survex.com>

        * configure.ac: Corrected $CC -> $CXX to fix bogus message "Checking
          for  option to enable ANSI C++ mode".
        * configure.ac: If any tools needed for documentation are missing
          and we're in maintainer mode, die with a suitable error in
          configure rather than with strange errors when building the
          documentation.

Sun May 08 01:43:55 BST 2005  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h,queryparser/queryparser.lemony,
          queryparser/queryparser_internal.h,queryparser/queryparser.cc:
          Remove QueryParser::termlist_begin() and termlist_end() since
          you can just use Query::terms_begin() and terms_end() on the
          Query object returned by QueryParser::parse_query().

Thu May 05 01:00:26 BST 2005  Olly Betts <olly@survex.com>

        * common/utils.cc: On WIN32, don't define NOMINMAX if it is already
          defined.

Wed May 04 00:52:04 BST 2005  Olly Betts <olly@survex.com>

        * matcher/bm25weight.cc: Avoid needing document length if we're simply
          going to multiply it by zero!

Tue May 03 14:07:20 BST 2005  Olly Betts <olly@survex.com>

        * HACKING: CVS -> SVN;  Note that tabs should be 8 spaces.

Thu Apr 28 21:13:17 BST 2005  Olly Betts <olly@survex.com>

        * include/xapian/database.h: Don't declare the backend factory
          functions if the corresponding backend has been disabled.  This
          means that trying to use a disabled backend will be caught at
          compile time rather than link time.

Thu Apr 28 21:12:43 BST 2005  Olly Betts <olly@survex.com>

        * docs/intro_ir.html: Corrected two errors.

Wed Apr 27 23:04:53 BST 2005  Olly Betts <olly@survex.com>

        * configure.ac,include/xapian/version.h.in: Define
          XAPIAN_HAS_xxx_BACKEND for each backend which is enabled.  The
          bindings need this, and user code might find it useful too.

Wed Apr 27 03:31:50 BST 2005  Olly Betts <olly@survex.com>

        * api/omdatabase.cc,api/ompostlistiterator.cc,
          api/omtermlistiterator.cc,include/xapian/,
          queryparser/queryparser.cc: Where end iterator is just
          FooIterator(NULL) put it inline in the header for efficiency.
          If we ever need to change an implementation, we can easily move
          methods back into the library and bump the library version suitably.

Wed Apr 27 02:40:43 BST 2005  Olly Betts <olly@survex.com>

        * examples/quest.cc,include/xapian/queryparser.h,
          queryparser/queryparser.cc,tests/queryparsertest.cc: Rename
          QueryParser::set_stemming_options() to set_stemming_strategy()
          - it's a better name and avoids confusion with the old deprecated
          method called set_stemming_options().
        * examples/quest.cc: Added stopword handling.

Wed Apr 27 02:39:33 BST 2005  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Fixed documentation comment.

Sun Apr 24 03:02:47 BST 2005  Olly Betts <olly@survex.com>

        * api/omstem.cc: Simplified Xapian::Stem::Internal.

Sun Apr 24 02:21:22 BST 2005  Olly Betts <olly@survex.com>

        * tests/api_nodb.cc: Extended stemlang1 to check that trying to create
          a stemmer for a non-existent language throws InvalidArgumentError.

Fri Apr 22 01:20:57 BST 2005  Olly Betts <olly@survex.com>

        * include/xapian/document.h: Clearer documentation comments.

Thu Apr 21 15:03:42 BST 2005  Olly Betts <olly@survex.com>

        * docs/overview.html,include/xapian/query.h: Removed lingering
          references to OP_WEIGHT_CUTOFF.

Thu Apr 21 01:46:51 BST 2005  Olly Betts <olly@survex.com>

        * PLATFORMS: Added success report for Ubuntu 5.04 on x86_64.

Mon Apr 18 02:54:10 BST 2005  Olly Betts <olly@survex.com>

        * docs/stemming.html: Stemming appears to be applicable to Japanese
          so don't say it isn't!

Sat Apr 16 01:08:22 BST 2005  Olly Betts <olly@survex.com>

        * PLATFORMS: Updated from tinderbox.

Fri Apr 15 23:18:58 BST 2005  Olly Betts <olly@survex.com>

        * languages/: Remove lingering .c versions of snowball generated
          sources.

Fri Apr 15 02:05:27 BST 2005  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h,queryparser/queryparser_internal.h,
          queryparser/queryparser.cc: Implemented QueryParser::set_database()
          method.
        * queryparser/queryparser.lemony: Allow searches for C#, etc.  If a
          database has been set, for this and + and - suffixes, check if the
          term actually exists, and if not, ignore the suffix if the
          unsuffixed term exists.
        * tests/queryparsertest.cc: Added tests for # suffix.

Thu Apr 14 23:39:57 BST 2005  Olly Betts <olly@survex.com>

        * include/xapian/stem.h: Rewritten with better documentation comments.
        * include/xapian/stem.h: Added operator() as preferred alternative
          to stem_word().
        * api/omstem.cc,include/xapian/stem.h: Simplified by restructuring
          to eliminate a few internal methods.

Thu Apr 14 23:35:47 BST 2005  Olly Betts <olly@survex.com>

        * queryparser/queryparser.cc: Make get_description() debug tracing
          message category INTRO not API.

Thu Apr 14 19:57:06 BST 2005  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h,queryparser/queryparser.cc: Added
          QueryParser::get_description() method (not very descriptive yet!)

Thu Apr 14 03:30:09 BST 2005  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: Fixed to only include the xapian
          headers we actually depend on.
        * include/xapian/queryparser.h: Added \file and \brief documentation
          comments.

Thu Apr 14 02:50:36 BST 2005  Olly Betts <olly@survex.com>

        * examples/quest.cc,include/xapian.h,tests/queryparsertest.cc:
          Change xapian.h to automatically include xapian/queryparser.h
          and fix direct includes of xapian/queryparser.h in tests and
          examples.

Thu Apr 14 01:48:39 BST 2005  Olly Betts <olly@survex.com>

        * include/xapian/queryparser.h: Added Xapian::SimpleStopper which
          should be sufficient for the majority of uses.
        * include/xapian/queryparser.h,queryparser/queryparser_internal.h,
          queryparser/queryparser.cc: Changed QueryParser::set_stopper() to
          take a const pointer.

Thu Apr 07 15:57:15 BST 2005  Olly Betts <olly@survex.com>

        * api/omenquire.cc,common/omenquireinternal.h,common/multimatch.h,
          matcher/multimatch.cc,net/socketserver.cc: Tidy up after sort_bands.

Thu Apr 07 15:15:27 BST 2005  Olly Betts <olly@survex.com>

        * api/omenquire.cc,common/,include/xapian/enquire.h,
          matcher/networkmatch.cc,matcher/multimatch.cc,matcher/networkmatch.h,
          net/socketserver.cc,net/socketclient.cc,tests/api_db.cc:
          Enhanced Enquire sorting API and added ability to reverse sort on
          a value.
        * api/omenquire.cc: Enquire::get_description() now includes output of
          Enquire::Internal::get_description().

Thu Apr 07 13:55:56 BST 2005  Olly Betts <olly@survex.com>

        * HACKING: Fixed a typo.

Thu Apr 07 13:37:02 BST 2005  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc,backends/quartz/btree.h,
          bin/quartzcompact.cc: The "fuller compaction" code needs changes
          to btree.h which I'd failed to check in.  Also document --fuller
          in 'quartzcompact --help'.

Thu Apr 07 03:35:36 BST 2005  Olly Betts <olly@survex.com>

        * bin/quartzcompact.cc: Added "fuller compaction" mode, which ignores
          the usual "at least 4 items per block" rule.

Thu Apr 07 03:28:32 BST 2005  Olly Betts <olly@survex.com>

        * PLATFORMS: Added success result for GCC 3.2.3 on FreeBSD 4.8; fixed
          a typo.

Wed Apr 06 23:04:15 BST 2005  Olly Betts <olly@survex.com>

        * queryparser/queryparser.lemony: Added FIXME comment.

Wed Apr 06 22:52:53 BST 2005  Olly Betts <olly@survex.com>

        * ./: Removed ylwrap from svn:ignore.

Tue Apr 05 22:34:16 BST 2005  Olly Betts <olly@survex.com>

        * queryparser/queryparsertest.cc,queryparser/Makefile.am,
          tests/Makefile.am: Moved queryparsertest into tests/.

Tue Apr 05 22:15:05 BST 2005  Olly Betts <olly@survex.com>

        * examples/: Updated svn:ignore property.

Tue Apr 05 21:34:13 BST 2005  Olly Betts <olly@survex.com>

        * queryparser/Makefile.am,configure.ac,extra/xapian/queryparser.h,
          extra/,include/Makefile.am,Makefile.am: Move extra/ to queryparser/;
          Merge extra/xapian/ into include/xapian/.

Tue Apr 05 16:37:32 BST 2005  Olly Betts <olly@survex.com>

        * m4/xapian.m4: Fix m4 quoting (argh!)

Tue Apr 05 16:28:06 BST 2005  Olly Betts <olly@survex.com>

        * m4/xapian.m4: Fix XO_LIB_XAPIAN to trim off any _svn6789 from
          XAPIAN_VERSION.

Tue Apr 05 16:17:31 BST 2005  Olly Betts <olly@survex.com>

        * configure.ac: Fix m4 quoting.

Tue Apr 05 15:16:38 BST 2005  Olly Betts <olly@survex.com>

        * configure.ac: #define VERSION in version.h shouldn't include any
          _svn6789 suffix.

Tue Apr 05 13:28:23 BST 2005  Olly Betts <olly@survex.com>

        * configure.ac: Snapshot generator now appends _svn6789 or similar to
          the version string, so take that into account when finding REVISION.

Tue Apr 05 12:55:52 BST 2005  Olly Betts <olly@survex.com>

        * ChangeLog.examples,Makefile.am,examples/ChangeLog: Move
          xapian-examples ChangeLog to ChangeLog.examples in the top-level
          and include in the tarball.

Tue Apr 05 02:18:08 BST 2005  Olly Betts <olly@survex.com>

        * examples/dir_contents,examples/README: Converted xapian-examples
          README into a dir_contents file.

Tue Apr 05 02:12:31 BST 2005  Olly Betts <olly@survex.com>

        * docs/overview.html,docs/install.html,configure.ac,Makefile.am,
          xapian.spec.in,examples/Makefile.am: Moved xapian-examples module
          to examples subdirectory of xapian-core.

Tue Apr 05 00:37:05 BST 2005  Olly Betts <olly@survex.com>

        * m4/.cvsignore,debian/.cvsignore,matcher/.cvsignore,docs/.cvsignore,
          tests/.cvsignore,bin/.cvsignore,.cvsignore,autoconf/.cvsignore,
          extra/.cvsignore,include/xapian/.cvsignore,include/.cvsignore,
          net/.cvsignore,common/.cvsignore,testsuite/.cvsignore,
          getopt/.cvsignore,languages/.cvsignore,api/.cvsignore,
          backends/inmemory/.cvsignore,backends/muscat36/.cvsignore,
          backends/net/.cvsignore,backends/quartz/.cvsignore,
          backends/multi/.cvsignore,backends/.cvsignore: Remove .cvsignore
          files, as they're not used by SVN.

Thu Mar 10 01:48:20 GMT 2005  Olly Betts <olly@survex.com>

        * testsuite/backendmanager.cc,testsuite/index_utils.cc,
          testsuite/index_utils.h: Rewrite of index_utils code, removing
          unused and unusual features.
        * tests/testdata/: Cleaned up data for apitest now that paragraphs
          don't have the odd minimum number of lines!
        * tests/testdata/apitest_space.txt: New index_utils code has C-like
          \ escapes for control characters rather than ^ escapes.

Wed Mar 09 22:04:08 GMT 2005  Olly Betts <olly@survex.com>

        * common/utils.h: Added C_isxdigit and C_isnotxdigit.

Wed Mar 09 15:22:35 GMT 2005  Olly Betts <olly@survex.com>

        * testsuite/index_utils.cc: Fixed ^x to actually decode hex values
          correctly.

Tue Mar 08 16:57:25 GMT 2005  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Minor code tidy.

Tue Mar 08 15:48:38 GMT 2005  Olly Betts <olly@survex.com>

        * api/omenquire.cc,docs/matcherdesign.html,include/xapian/enquire.h,
          matcher/multimatch.cc,tests/api_db.cc: Removed sort_bands support.

Tue Mar 08 04:13:03 GMT 2005  Olly Betts <olly@survex.com>

        * bin/quartzcompact.cc: Fixed to add items for all tables in key order
          which produces results around 40% more compact (previously in the
          merge case, this was only happening for the postlist table).

Tue Mar 08 03:30:06 GMT 2005  Olly Betts <olly@survex.com>

        * testsuite/btreecheck.cc: Make default check output fit on a single
          line (at least for many databases).

Tue Mar 08 02:34:41 GMT 2005  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Fix warning from newer versions of GCC.

Sat Mar 05 00:25:07 GMT 2005  Olly Betts <olly@survex.com>

        * api/omenquire.cc,common/omenquireinternal.h,include/xapian/enquire.h,
          matcher/multimatch.cc,tests/api_db.cc: Fixed Xapian::RSet to have
          the same "it's a handle" copy semantics as most of the other
          classes.

Sat Mar 05 00:23:47 GMT 2005  Olly Betts <olly@survex.com>

        * testsuite/testsuite.h: Fixed TEST_EQUAL_DOUBLE to use DBL_EPSILON
          correctly.

Fri Mar 04 21:06:38 GMT 2005  Olly Betts <olly@survex.com>

        * tests/testdata/etext.txt: Stripped carriage returns.

Fri Mar 04 21:04:25 GMT 2005  Olly Betts <olly@survex.com>

        * PLATFORMS: Assorted updates.

Thu Mar 03 01:17:07 GMT 2005  Olly Betts <olly@survex.com>

        * bin/quartzcompact.cc: Fixed to allow compacting a single database.
          Fixed handling of very last term when merging postlists.

Wed Mar 02 03:18:30 GMT 2005  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_values.cc: Values are stored in sorted order
          so we can stop unpacking the list once we get to one after the one
          we're looking for.

Wed Mar 02 02:59:23 GMT 2005  Olly Betts <olly@survex.com>

        * bin/quartzcheck.cc: Now checks the structure of all the tables, not
          just the postlist table, and cross-checks doclen values between
          termlist and postlist tables.  Recognises "--help" option.  Should
          now continue after an error (typically it would crash before), and
          counts the number of errors found.  Now exits with non-zero status
          if any errors were found.

Tue Mar 01 18:48:25 GMT 2005  Olly Betts <olly@survex.com>

        * xapian.spec.in: '/usr/share' -> '%{_datadir}'.

Tue Mar 01 16:21:07 GMT 2005  Olly Betts <olly@survex.com>

        * tests/api_db.cc: Fixed warning from Sun's C++ compiler.

Tue Mar 01 02:02:15 GMT 2005  Olly Betts <olly@survex.com>

        * bin/quartzcompact.cc: Extended to allow merging several quartz
          databases to produce a single compact quartz database.  This
          allows for faster building - simple index in chunks, then merge
          the chunks.

Tue Mar 01 00:08:12 GMT 2005  Olly Betts <olly@survex.com>

        * xapian.spec.in: Put the .so in the -devel package (it's only useful
          for linking to - the .so.* files are all that's needed at runtime).

Tue Mar 01 00:05:25 GMT 2005  Olly Betts <olly@survex.com>

        * Makefile.am,xapian-config.in,xapian.spec.in,extra/.cvsignore,
          extra/Makefile.am: Eliminated the extra library for the queryparser
          - it's tiny compared to the main library and having it around just
          complicates things.

Mon Feb 28 23:52:19 GMT 2005  Olly Betts <olly@survex.com>

        * tests/api_anydb.cc: More set_length() changes.

Mon Feb 28 20:31:13 GMT 2005  Olly Betts <olly@survex.com>

        * net/socketclient.cc,net/socketserver.cc,api/omenquire.cc,
          api/omquery.cc,api/omqueryinternal.cc,common/,
          include/xapian/enquire.h,include/xapian/query.h,matcher/:
          Remove Query::set_length() in favour of an optional length
          parameter to Enquire::set_query().

Mon Feb 28 15:32:32 GMT 2005  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc,common/Makefile.am,common/deleter_vector.h:
          Removed deleter_vector as it's no longer used anywhere.

Mon Feb 28 15:27:42 GMT 2005  Olly Betts <olly@survex.com>

        * api/omquery.cc,api/omqueryinternal.cc,include/xapian/query.h,
          matcher/localmatch.cc,tests/api_anydb.cc,tests/api_nodb.cc:
          Eliminated Query::set_elite_set_size().

Mon Feb 28 15:15:45 GMT 2005  Olly Betts <olly@survex.com>

        * HACKING: Note how to disable use of VALGRIND on the make check
          command line, or when using runtest directly.

Mon Feb 28 13:36:07 GMT 2005  Olly Betts <olly@survex.com>

        * common/omqueryinternal.h: Removed out-of-date commented out version
          of Xapian::Query::Internal.

Mon Feb 28 13:07:42 GMT 2005  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_alltermslist.cc,tests/api_db.cc: Updated (C)
          dates for changes earlier this year.

Mon Feb 28 13:04:41 GMT 2005  Olly Betts <olly@survex.com>

        * api/omquery.cc,api/omqueryinternal.cc,include/xapian/query.h,
          matcher/localmatch.cc,matcher/localmatch.h,tests/api_anydb.cc,
          tests/api_nodb.cc,tests/api_posdb.cc: Eliminated Query::set_window
          in favour of an optional parameter to the constructor, with the aim
          of making Query objects immutable once constructed.

Mon Feb 28 12:32:26 GMT 2005  Olly Betts <olly@survex.com>

        * extra/queryparser.lemony: Updated 2 uses of Query::set_window().

Mon Feb 28 04:43:20 GMT 2005  Olly Betts <olly@survex.com>

        * api/omquery.cc,api/omqueryinternal.cc,common/socketcommon.h,
          include/xapian/query.h,matcher/,tests/api_anydb.cc:
          Removed OP_WEIGHT_CUTOFF, since it doesn't actually seem to
          add useful functionality over using Enquire::set_cutoff().

Mon Feb 28 04:31:58 GMT 2005  Olly Betts <olly@survex.com>

        * matcher/weightcutoffpostlist.cc: Fix updating of docid in
          WeightCutoffPostList - the current code works, but can end up doing
          lots (potentially millions) of pointless loop iterations.

Mon Feb 28 02:57:29 GMT 2005  Olly Betts <olly@survex.com>

        * docs/queryparser.html: Note that + and - work on phrases and
          bracketed expressions.

Fri Feb 25 17:06:23 GMT 2005  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_alltermslist.cc: Fix skip_to on an allterms
          TermIterator to set the current term when the skip_to-ed term is
          in the database.
        * tests/api_db.cc: Add regression test for this (allterms5).

Wed Feb 23 19:07:30 GMT 2005  Olly Betts <olly@survex.com>

        * configure.ac: Suppress 2 Intel C++ warnings which we can't easily
          code around, and enable -Werror automatically with
          --enable-maintainer-mode.
        * configure.ac: Check that the C++ compiler can actually link a
          program.  AC_LANG_CXX doesn't, and if it can't find a C++ compiler
          it'll just return "g++" which just leads to a later configure
          test failing in a confusing way.

Tue Feb 22 13:39:07 GMT 2005  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Improved documentation comments.
        * api/omenquire.cc,include/xapian/enquire.h: MSet::max_size() (which
          only exists so that MSet is an STL compiler) now returns
          MSet::size() and is inlined from the header.
        * include/xapian/enquire.h: Added ESet::max_size() (for STL
          compatibility).

Tue Feb 22 00:18:33 GMT 2005  Olly Betts <olly@survex.com>

        * configure.ac: corrected "none known for yes" or "none known for no"
          to "none known for g++-3.2" or similar.
        * configure.ac: autoconf identifies Intel's C++ compiler as GCC, so
          probe for which it actually is.

Mon Feb 21 21:54:29 GMT 2005  Olly Betts <olly@survex.com>

        * PLATFORMS: Updated.

Mon Feb 21 16:06:32 GMT 2005  Olly Betts <olly@survex.com>

        * PLATFORMS: Added success report for Intel C++ 8.1 on ia64 Linux
          (and also GCC 3.2.3 on ia64 Linux).

Mon Feb 21 05:33:46 GMT 2005  Olly Betts <olly@survex.com>

        * backends/multi/: Don't delare methods in headers if they're virtual
          or large.

Mon Feb 21 04:11:23 GMT 2005  Olly Betts <olly@survex.com>

        * backends/inmemory/inmemory_database.cc,
          backends/inmemory/inmemory_database.h: Don't delare methods in
          headers if they're virtual or large.

Sun Feb 20 21:13:40 GMT 2005  Olly Betts <olly@survex.com>

        * common/multimatch.h: Removed unused "class SocketServer;".

Sun Feb 20 19:47:01 GMT 2005  Olly Betts <olly@survex.com>

        * net/socketserver.cc: Fixed typo in debug code.

Sat Feb 19 18:44:17 GMT 2005  Olly Betts <olly@survex.com>

        * PLATFORMS: Added minimal testcase which fails to compile with
          Compaq's C++ compiler (cxx).

Sat Feb 19 04:23:51 GMT 2005  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc,backends/quartz/btree.h: Change
          Btree::find_in_block to take a bool indicating if this is a leaf
          block rather than an offset to subtract when it is.

Fri Feb 18 04:27:16 GMT 2005  Olly Betts <olly@survex.com>

        * HACKING: Added better description of how reference-counted API
          classes are structured.
        * include/xapian/postingiterator.h,include/xapian/termiterator.h:
          More (and better) documentation comments.

Fri Feb 18 03:05:40 GMT 2005  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: Made full compaction a tiny bit more
          compact.  Improved compaction by a few % in non-full case.
          Tighter bound on amount of memory to reserve to read the tag
          into.

Fri Feb 18 00:47:41 GMT 2005  Olly Betts <olly@survex.com>

        * api/omenquire.cc: Removed duplicate "#include <xapian/enquire.h>".

Thu Feb 17 01:33:01 GMT 2005  Olly Betts <olly@survex.com>

        * extra/queryparser_internal.h: Further Sun C++ fixes.

Wed Feb 16 05:32:40 GMT 2005  Olly Betts <olly@survex.com>

        * extra/queryparser.lemony: Attempted fix for Sun's C++ compiler.

Tue Feb 15 02:10:35 GMT 2005  Olly Betts <olly@survex.com>

        * extra/queryparser.cc,extra/queryparser.lemony,
          extra/queryparser_internal.h: Fixed namespace stuff to keep Sun's C++
          compiler happy.

Mon Feb 14 21:21:08 GMT 2005  Olly Betts <olly@survex.com>

        * api/vectortermlist.h: Workaround a shortcoming in Sun's C++
          compiler.

Mon Feb 14 21:16:05 GMT 2005  Olly Betts <olly@survex.com>

        * PLATFORMS: Results from upgraded sourceforge x86_64 box.

Mon Feb 14 18:36:40 GMT 2005  Olly Betts <olly@survex.com>

        * extra/xapian/queryparser.h: Fixed compilation error.

Mon Feb 14 18:00:12 GMT 2005  Olly Betts <olly@survex.com>

        * extra/xapian/queryparser.h: Added backward compatibility wrapper for
          old version of QueryParser::set_stemming_options().

Mon Feb 14 17:50:47 GMT 2005  Olly Betts <olly@survex.com>

        * extra/xapian/queryparser.h: Added dummy QueryParser::set_database()
          (currently it ignores the parameter).

Mon Feb 14 15:34:13 GMT 2005  Olly Betts <olly@survex.com>

        * extra/lemon.c: C90, not C99!

Mon Feb 14 15:20:11 GMT 2005  Olly Betts <olly@survex.com>

        * extra/lemon.c: C, not C++.

Mon Feb 14 05:49:50 GMT 2005  Olly Betts <olly@survex.com>

        * extra/: Tweak lemon so we can avoid generating files in builddir
          in a VPATH build.

Mon Feb 14 02:44:17 GMT 2005  Olly Betts <olly@survex.com>

        * extra/Makefile.am: Update to reflect lempar.c -> queryparser.lt.

Mon Feb 14 02:25:53 GMT 2005  Olly Betts <olly@survex.com>

        * extra/lempar.c,extra/queryparser.lt: Rename lemon template to .lt
          which is more sensible than calling it lempar.c and should work
          with VPATH builds.

Mon Feb 14 02:12:51 GMT 2005  Olly Betts <olly@survex.com>

        * extra/Makefile.am: Fixes for VPATH builds.

Mon Feb 14 01:43:59 GMT 2005  Olly Betts <olly@survex.com>

        * configure.ac: Need to AC_SUBST(CC_FOR_BUILD).

Mon Feb 14 00:19:45 GMT 2005  Olly Betts <olly@survex.com>

        * extra/Makefile.am: Added dependency for building queryparser.h.

Sun Feb 13 23:30:02 GMT 2005  Olly Betts <olly@survex.com>

        * extra/queryparser.cc,extra/queryparser_internal.h,
          extra/xapian/queryparser.h: Fixed to compile with GCC 3.3.

Sun Feb 13 23:09:15 GMT 2005  Olly Betts <olly@survex.com>

        * configure.ac: Enhanced valgrind test to (a) see if --tool=memcheck
          is needed and (b) see if valgrind actually works (we don't want to
          try to use an x86 valgrind on an x86_64 box).

Mon Jan 17 03:21:29 GMT 2005  Olly Betts <olly@survex.com>

        * api/vectortermlist.h,extra/,extra/xapian/queryparser.h: Rewritten
          QueryParser class.  Uses Lemon instead of Bison to generate the
          parser, which enables us to stop using static data, so this class
          is at last reentrant.  It now uses a PIMPL style with reference
          counted internals like most of the other Xapian classes.  And
          direct access to member variables has gone, which unfortunately
          forces an API change (bug #39).  The rewrite also supports more
          features than the original did.
        * HACKING,configure.ac: No longer need Bison.
        * configure.ac: Need CC_FOR_BUILD to compile Lemon with.

Mon Jan 17 02:40:40 GMT 2005  Olly Betts <olly@survex.com>

        * PLATFORMS: IRIX + SGI C++ now compiles with just two warnings -
          unused variables in Snowball generated code.

Sun Jan 16 03:19:56 GMT 2005  Olly Betts <olly@survex.com>

        * xapian.spec.in: Don't say "%makeinstall" in a comment since rpm
          tries to expand it and explodes.

Sat Jan 15 03:30:33 GMT 2005  Olly Betts <olly@survex.com>

        * docs/Makefile.am: Clearer rules for making Postscript doxygen docs.

Sat Jan 15 02:45:19 GMT 2005  Olly Betts <olly@survex.com>

        * HACKING: Note that '#include <limits>' isn't supported by GCC 2.95,
          and other assorted minor tweaks.

Sat Jan 08 16:09:10 GMT 2005  Olly Betts <olly@survex.com>

        * api/maptermlist.h,backends/inmemory/inmemory_database.h,
          backends/quartz/quartz_postlist.h,common/,matcher/localmatch.h,
          matcher/mergepostlist.h,matcher/phrasepostlist.h,net/progclient.cc:
          Fixes for SGI C++ warnings.

Fri Jan  7 13:02:49 GMT 2005  Richard Boulton <richard@tartarus.org>

        * common/positionlist.h: Correct out-of-date documentation comment.

Tue Jan 04 03:05:26 GMT 2005  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Removed unnecessary class declaration.

Tue Jan 04 03:02:02 GMT 2005  Olly Betts <olly@survex.com>

        * configure.ac: Automatically enable ANSI C++ mode for SGI's compiler
          with '-LANG:std'; check that any automatically determined flags
          for ANSI C++ mode actually allow us to compile a trivial program
          - if they don't it probably means the compiler isn't the one we
          were expecting, but one installed with the same name, so we now
          drop the flags in this case.

Thu Dec 30 00:50:58 GMT 2004  Olly Betts <olly@survex.com>

        * extra/queryparser.yy: QueryParser::parse_query() was failing to
          clear termlist and unstem.

Fri Dec 24 00:07:28 GMT 2004  Olly Betts <olly@survex.com>

        * PLATFORMS: Updated from tinderbox.

Thu Dec 23 21:13:46 GMT 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: Fixed GCC compilation warning.

Thu Dec 23 17:22:15 GMT 2004  Olly Betts <olly@survex.com>

        * INSTALL,README: Updated.
        * README: Don't quote chunks of the GPL - just refer people to the
          full text in COPYING.

Thu Dec 23 16:55:03 GMT 2004  Olly Betts <olly@survex.com>

        * NEWS,PLATFORMS,configure.ac: Updated for 0.8.5 release.

Tue Dec 21 13:26:55 GMT 2004  Olly Betts <olly@survex.com>

        * docs/quickstart.html: Improved wording.

Tue Dec 21 13:03:06 GMT 2004  Olly Betts <olly@survex.com>

        * HACKING: Updated to reflect extra jobs which cvs-tag-release now
          does.

Mon Dec 20 16:25:21 GMT 2004  Olly Betts <olly@survex.com>

        * bin/Makefile.am: quartzcompact now uses getopt, so need to link
          it in our version to build on non-glibc platforms.

Mon Dec 20 16:23:28 GMT 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: Added comment noting why we can't
          truncate separating keys at higher levels.

Thu Dec 16 14:46:28 GMT 2004  Olly Betts <olly@survex.com>

        * HACKING: Fixed a typo, and improved wording.

Mon Dec 13 02:52:52 GMT 2004  Olly Betts <olly@survex.com>

        * backends/multi/multi_postlist.cc: Updated (C) date.

Mon Dec 13 02:50:44 GMT 2004  Olly Betts <olly@survex.com>

        * languages/: Added missing '#include <config.h>' to .cc files
          (probably harmless, but it should be included as the first thing any
          source file does).

Mon Dec 13 02:21:28 GMT 2004  Olly Betts <olly@survex.com>

        * bin/quartzdump.cc: Mark the long options as const.

Mon Dec 13 02:20:08 GMT 2004  Olly Betts <olly@survex.com>

        * bin/quartzcompact.cc: Tables sizes will always be a whole number of
          Kbytes, since the blocksize is, so report the size in K.  Also
          report the change in size as well as the before and after sizes.

Mon Dec 13 02:11:59 GMT 2004  Olly Betts <olly@survex.com>

        * common/netutils.cc: Added missing '#include <config.h>' (probably
          harmless, but it should be included as the first thing any source
          file does).

Mon Dec 13 01:39:53 GMT 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc,backends/quartz/btree.h: Renamed
          Btree::compress() to Btree::compact() for consistency with
          "full_compaction" and "quartzcompact".  Also, "compress" is
          confusing since use "compact" and we use that term in the zlib
          patch.
        * backends/quartz/btree.cc: When full_compaction is enabled, don't
          fill the last few bytes of a block if that would mean we needed
          an extra item and the overhead for that item would use up more
          of the next block than we save.  This reduces the table size
          after full compaction by up to 0.2% in my tests!

Mon Dec 13 01:39:02 GMT 2004  Olly Betts <olly@survex.com>

        * backends/multi/multi_postlist.cc: Fixed to build with AssertParanoid
          enabled.

Mon Dec 13 00:41:28 GMT 2004  Olly Betts <olly@survex.com>

        * bin/quartzcompact.cc: Added missing '#include <config.h>' so that
          largefile support is enabled and we report compression statistics
          for tables > 2G.
        * bin/quartzcompact.cc: Added --no-full / -n option to disable full
          compaction.  This may be useful if you want to update the database
          after compacting it (need to test to see if this option is actually
          useful).

Sun Dec 12 21:26:27 GMT 2004  Olly Betts <olly@survex.com>

        * xapian-config.in: Previous attempted fix to --libs output was wrong
          - made it actually work.

Sun Dec 12 21:24:44 GMT 2004  Olly Betts <olly@survex.com>

        * xapian.spec.in: %makeinstall puts the wrong paths in the .la files
          so use "make DESTDIR=... install" instead.

Wed Dec 08 15:59:44 GMT 2004  Olly Betts <olly@survex.com>

        * NEWS: Bumped the 0.8.4 release date.

Wed Dec 08 15:32:46 GMT 2004  Olly Betts <olly@survex.com>

        * xapian-config.in: Make sure that --libs output doesn't include
          libxapian.la (from libxapianqueryparser.la's dependencies).

Tue Dec 07 18:18:26 GMT 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_log.cc: Fixed to compile on mingw.

Tue Dec 07 15:57:44 GMT 2004  Olly Betts <olly@survex.com>

        * NEWS: Updated.
        * api/omdatabase.cc,backends/database.cc,bin/omtcpsrv.cc,
          common/database.h,docs/,include/xapian/database.h,tests/api_db.cc:
          Added constructors to Database and WritableDatabase which fulfil the
          role that the Auto::open() factory functions currently do.
          Auto::open() is now deprecated.
        * api/,backends/inmemory/inmemory_database.cc,
          backends/quartz/quartz_database.cc,backends/quartz/quartz_postlist.h,
          common/expandweight.h,common/stats.h,include/xapian.h:
          #include <xapian.h> no longer pulls in xapian/output.h - this
          removes the external ability to write a Xapian object to an
          ostream directly, as it's little used and potentially dangerous
          ('cout << mset[i];' will compile, but you almost certainly meant
          'cout << *mset[i];').  You can get the old effect by writing
          'cout << obj->get_description();' instead of 'cout << obj;'.
          Adjusted all the library sources which relied on xapian/output.h
          pulling in various other xapian/ headers.
        * backends/muscat36/da_database.cc,backends/muscat36/db_database.cc:
          Debug output tweaks.
        * common/emptypostlist.h,matcher/mergepostlist.cc,matcher/multimatch.cc:
          Added EmptyPostList::get_maxweight() which always returns 0, so you
          no longer need to explicitly set a weighting scheme on an
          EmptyPostList.
        * common/omdebug.h: Only include omstringstream.h if
          XAPIAN_DEBUG_VERBOSE is in effect.
        * extra/Makefile.am: queryparsertest needs to link to libxapian.la
          explicitly.
        * net/progclient.cc: Whitespace tweak.
        * testsuite/: Eliminated barely used sources indexer.h,
          textfile_indexer.h, and textfile_indexer.cc.
        * testsuite/backendmanager.cc: Removed unused functions
          make_strvec() and index_file_to_database().

Wed Dec 01 07:15:46 GMT 2004  Olly Betts <olly@survex.com>

        * PLATFORMS: SF CF x86_64 machine no longer needs --disable-shared.

Tue Nov 30 21:53:33 GMT 2004  Olly Betts <olly@survex.com>

        * NEWS,PLATFORMS,configure.ac: Updated for 0.8.4 release.

Tue Nov 30 03:07:43 GMT 2004  Olly Betts <olly@survex.com>

        * configure.ac,backends/database.cc,backends/quartz/bcursor.cc,
          backends/quartz/quartz_database.cc,
          backends/quartz/quartz_postlist.cc,common/omassert.h,
          common/omdebug.cc,common/omdebug.h,docs/doxygen_full_conf.in,
          matcher/localmatch.cc,matcher/multimatch.cc,matcher/stats.cc,
          tests/apitest.cc,tests/btreetest.cc,testsuite/backendmanager.cc,
          testsuite/backendmanager.h,testsuite/testsuite.cc: Rename all the
          MUS_xxx defines to XAPIAN_xxx.

Tue Nov 30 02:36:33 GMT 2004  Olly Betts <olly@survex.com>

        * configure.ac,backends/quartz/btree.cc: Get configure to probe for
          the prototypes (if any) needed for pread and pwrite.

Tue Nov 30 01:09:26 GMT 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: Instead of trying to coax pread/pwrite
          prototypes out of the system headers, let's try just providing our
          own!

Mon Nov 29 19:51:13 GMT 2004  Olly Betts <olly@survex.com>

        * extra/Makefile.am: Moved -no-undefined to the right place, plus we
          also need to pass @ldflags@ and ../libxapian.la in
          libxapianqueryparser_la_LIBADD.

Mon Nov 29 18:28:57 GMT 2004  Olly Betts <olly@survex.com>

        * AUTHORS: Updated.

Mon Nov 29 18:27:12 GMT 2004  Olly Betts <olly@survex.com>

        * extra/Makefile.am: Added -no-undefined to
          libxapianqueryparser_la_LDFLAGS so it builds on mingw.

Mon Nov 29 17:46:54 GMT 2004  Olly Betts <olly@survex.com>

        * tests/Makefile.am: Don't try to run "runtest" as a test - it just
          needs to be a dependency of the tests.

Sat Nov 27 02:58:28 GMT 2004  Olly Betts <olly@survex.com>

        * backends/inmemory/dir_contents: Trimmed whitespace.

Sat Nov 27 02:05:51 GMT 2004  Olly Betts <olly@survex.com>

        * NEWS: Updated ready for 0.8.4 release.

Sat Nov 27 02:03:40 GMT 2004  Olly Betts <olly@survex.com>

        * tests/Makefile.am: Added a dependency so "make check" regenerates
          runtest if necessary.

Sat Nov 27 02:02:58 GMT 2004  Olly Betts <olly@survex.com>

        * AUTHORS: Updated.

Sat Nov 27 01:59:18 GMT 2004  Olly Betts <olly@survex.com>

        * README: Minor tweak.

Sat Nov 27 01:58:53 GMT 2004  Olly Betts <olly@survex.com>

        * configure.ac: Improved a couple of comments.

Sat Nov 27 01:42:32 GMT 2004  Olly Betts <olly@survex.com>

        * docs/: Trimmed trailing whitespace.

Sat Nov 27 01:41:33 GMT 2004  Olly Betts <olly@survex.com>

        * docs/stemming.html: Reworded text from BrightStation times which
          talked about "the open source release".

Fri Nov 26 17:32:55 GMT 2004  Olly Betts <olly@survex.com>

        * docs/indexerquickstart.html: Removed dead documentation.

Fri Nov 26 17:11:19 GMT 2004  Olly Betts <olly@survex.com>

        * PLATFORMS: Updated with new cygwin report.

Fri Nov 26 17:07:21 GMT 2004  Olly Betts <olly@survex.com>

        * tests/api_anydb.cc,tests/api_nodb.cc,docs/bm25.html,
          include/xapian/enquire.h,matcher/bm25weight.cc: Renamed BM25
          parameters to match standard naming in papers and elsewhere
          (A->k3, B->k1, C->k2, D->b), eliminated the extra factor of 2
          which our C had, and reordered the parameters to k1, k2, k3.
          This is an incompatible API change for BM25Weight(), so if
          you are using custom parameters for BM25 you'll need to
          update your code.

Fri Nov 26 15:20:16 GMT 2004  Olly Betts <olly@survex.com>

        * tests/runtest.in: Allow VALGRIND environmental variable to override
          the value we got from configure.

Fri Nov 26 03:50:36 GMT 2004  Olly Betts <olly@survex.com>

        * matcher/bm25weight.cc,matcher/tradweight.cc: termfreq is always
          exact for matching (we only approximate it for query expansion)
          so replace code to work around bad approximations with Assert() to
          make sure this never happens.

Fri Nov 26 00:19:22 GMT 2004  Olly Betts <olly@survex.com>

        * matcher/expandweight.cc,matcher/tradweight.cc: If we estimate the
          term frequency, ensure it has a sane value (>= r and <= N - R + r)
          rather than bodging around the problem later on.

Thu Nov 25 01:29:36 GMT 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_database.cc: Fixed recent cygwin change to
          actually compile.

Thu Nov 25 01:06:03 GMT 2004  Olly Betts <olly@survex.com>

        * bin/quartzcompact.cc: Added --help and --version; Check that the
          source path and desitination path aren't the same; Report each table
          name when we start compacting it, and some simple stats on the
          compaction achieved when we finish.

Tue Nov 23 16:19:09 GMT 2004  Olly Betts <olly@survex.com>

        * configure.ac: Fixed m4 quoting problem.

Tue Nov 23 12:47:54 GMT 2004  Olly Betts <olly@survex.com>

        * configure.ac: Fix the test for GCC3 used to turn on -Werror with
          --enable-maintainer-mode.

Mon Nov 22 03:08:10 GMT 2004  Olly Betts <olly@survex.com>

        * PLATFORMS: Assorted updates.

Mon Nov 22 02:15:22 GMT 2004  Olly Betts <olly@survex.com>

        * tests/quartztest.cc: Test with DB_CREATE_OR_OPEN in writelock1.

Mon Nov 22 01:37:13 GMT 2004  Olly Betts <olly@survex.com>

        * common/utils.cc: define NOMINMAX as a cleaner way to prevent
          windows.h from polluting the namespace and colliding with ANSI C++.

Sat Nov 20 14:36:43 GMT 2004  Olly Betts <olly@survex.com>

        * tests/runtest.in: --logfile-fd was renamed to --log-fd in valgrind
          2.1.2 with no support for the old option name, so we must probe
          to decide which to use.

Fri Nov 19 13:18:43 GMT 2004  Olly Betts <olly@survex.com>

        * backends/quartz/bcursor.cc,backends/quartz/bcursor.h: Eliminated
          Bcursor::get_tag() - it's an internal method only used from one
          other method, and it now just a trivial wrapper around
          Btree::read_tag().

Fri Nov 19 04:20:39 GMT 2004  Olly Betts <olly@survex.com>

        * backends/quartz/bcursor.cc,backends/quartz/btree.cc,
          backends/quartz/btree.h: Factored out near identical code from
          Btree::find_tag() and Bcursor::get_tag() into Btree::read_tag().

Thu Nov 18 03:27:52 GMT 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: Applied the Quartz "DANGEROUS" patch, but
          disabled for now.  This way it won't keep being broken by changes
          to the code.

Tue Nov 16 04:29:25 GMT 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: Ah, it's __sun__/__sun/sun, not
          __solaris__ (at least for x86 Solaris 9).

Tue Nov 16 02:56:44 GMT 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: Solaris defines __solaris__ not
          __SOLARIS__.

Mon Nov 15 12:40:38 GMT 2004  Olly Betts <olly@survex.com>

        * tests/api_db.cc: Added new test userweight1 to test user defined
          matching schemes.

Sun Nov 14 05:20:34 GMT 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_metafile.cc,
          backends/quartz/quartz_metafile.h: Removed unused
          QuartzMetaFile::erase() method.

Sun Nov 14 04:55:05 GMT 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_database.cc: For cygwin, use the underlying
          MoveFile API call for locking, as link() doesn't work on FAT
          partitions.  And don't rely on HAVE_LINK to control whether we
          use link() otherwise - if the configure test somehow misfires, a
          compilation error is better than using rename() on Unix as that
          would cause a second writer to smash the lock of the first.

Thu Nov 11 06:58:41 GMT 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: Removed superfluous statement.

Tue Nov 09 23:50:10 GMT 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: Need to include sys/types.h to define
          ssize_t, size_t, and off_t before we prototype pread and pwrite
          for OSF.

Tue Nov 09 22:39:00 GMT 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: Tweaked the pread/pwrite mess to try to
          get it to work on OSF and x86 Solaris while not breaking it
          elsewhere.

Tue Nov 09 19:29:37 GMT 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc,backends/quartz/btree.h: More refactoring.

Tue Nov 09 17:13:10 GMT 2004  Olly Betts <olly@survex.com>

        * backends/quartz/: More refactoring.  Also rearranged the contents
          of the quartz and btree headers, eliminating btree_types.h in the
          process.

Tue Nov 09 16:47:13 GMT 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_metafile.cc: Using fdcloser is less clear in
          trivial cases.

Tue Nov 09 16:38:47 GMT 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_database.cc: Close the fd of the lock file
          before trying to rename it on Windows.

Tue Nov 09 07:58:02 GMT 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc,backends/quartz/btree.h,
          backends/quartz/btree_util.h: More refactoring.

Tue Nov 09 03:24:59 GMT 2004  Olly Betts <olly@survex.com>

        * xapian-config.in: Added --swigflags option for use with SWIG.

Mon Nov 08 22:54:55 GMT 2004  Olly Betts <olly@survex.com>

        * configure.ac,xapian-config.in: If flags are needed to select ANSI
          mode with the current compiler, then make xapian-config --cxxflags
          include them so that Xapian users don't have to jump through the
          same hoops we do.

Mon Nov 08 04:49:21 GMT 2004  Olly Betts <olly@survex.com>

        * backends/inmemory/inmemory_database.cc,
          backends/inmemory/inmemory_database.h,backends/muscat36/,
          backends/net/net_database.cc,backends/quartz/quartz_database.cc,
          backends/quartz/quartz_database.h,common/database.h,
          common/net_database.h,matcher/localmatch.cc: If a database contains
          no positional information, change NEAR and PHRASE queries into AND
          queries (as otherwise they'd return no matches at all) (bug#56).
        * tests/api_wrdb.cc: Added feature test phraseorneartoand1.

Mon Nov 08 04:09:04 GMT 2004  Olly Betts <olly@survex.com>

        * configure.ac,backends/quartz/btree.cc: Improved what we do to
          turn on pread and pwrite declarations in unistd.h so that it works
          on OSF and doesn't need the HAVE_GLIBC test, yet still works on
          OpenBSD.

Mon Nov 08 03:55:51 GMT 2004  Olly Betts <olly@survex.com>

        * backends/quartz/,testsuite/btreecheck.cc: More refactoring.

Sun Nov 07 20:42:32 GMT 2004  Olly Betts <olly@survex.com>

        * configure.ac: One more tweak.

Sun Nov 07 18:18:19 GMT 2004  Olly Betts <olly@survex.com>

        * configure.ac,include/xapian/version.h.in: Another tweak to hopefully
          get version.h generation to work everywhere.

Sun Nov 07 15:01:23 GMT 2004  Olly Betts <olly@survex.com>

        * configure.ac,include/xapian/version.h.in: Terminating lines with 'N'
          makes Sun's C++ unhappy.  Try ',' instead.

Sun Nov 07 03:54:42 GMT 2004  Olly Betts <olly@survex.com>

        * tests/api_nodb.cc: Added test_weight1 which tests the built-in
          Xapian::Weight subclasses (bug#8).

Sun Nov 07 03:36:19 GMT 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc,backends/quartz/btree_util.h,
          testsuite/btreecheck.cc: More refactoring.

Sun Nov 07 03:33:24 GMT 2004  Olly Betts <olly@survex.com>

        * matcher/bm25weight.cc,matcher/tradweight.cc: Fixed definitions to
          match declarations after recent change.

Sun Nov 07 02:33:50 GMT 2004  Olly Betts <olly@survex.com>

        * configure.ac: Noted LIBRARY_VERSION_INFO which 0.8.4 will get.

Sun Nov 07 02:28:38 GMT 2004  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: BoolWeight::unserialise() returns
          BoolWeight*, etc.  BoolWeight::clone() returns BoolWeight *.

Sun Nov 07 02:24:17 GMT 2004  Olly Betts <olly@survex.com>

        * HACKING: Note that C++ style casts are preferable to C style casts;
          Improve wording in a few places.

Sun Nov 07 01:05:58 GMT 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc,backends/quartz/btree_util.h,
          testsuite/btreecheck.cc: Moved set_block_given_by()
          and block_given_by() into Item class.

Sat Nov 06 21:16:15 GMT 2004  Olly Betts <olly@survex.com>

        * configure.ac,include/xapian/version.h.in: Fix generation of
          version.h to work with aCC -E which concatenates adjacent literal
          strings.

Sat Nov 06 20:58:00 GMT 2004  Olly Betts <olly@survex.com>

        * backends/quartz/,testsuite/btreecheck.cc: Started to refactor the
          Btree manager by introducing Item and Key classes which take care
          of handling the on-disk format.

Sat Nov 06 15:40:05 GMT 2004  Olly Betts <olly@survex.com>

        * xapian-config.in,m4/xapian.m4: Pass across ac_top_srcdir and use it
          if provided to say "configure.ac" or "configure.in" rather than
          "configure.in (or configure.ac)" in the "Add AC_PROG_LIBTOOL"
          error message.

Sat Nov 06 14:49:05 GMT 2004  Olly Betts <olly@survex.com>

        * configure.ac: Updated comment - we now find SOURCEDOC in 2 goes (as
          there are no longer any C sources).

Sat Nov 06 14:43:16 GMT 2004  Olly Betts <olly@survex.com>

        * configure.ac: Oops, STLPORT_CXXFLAGS *is* used (in xapian-config.in)
          so revert the change which removes it.

Sat Nov 06 13:37:23 GMT 2004  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h,matcher/bm25weight.cc,
          matcher/tradweight.cc: Move virtual methods of BM25Weight and
          TradWeight out of the header.

Sat Nov 06 13:19:32 GMT 2004  Olly Betts <olly@survex.com>

        * configure.ac,include/xapian/version.h.in: Another rework of how
          include/xapian/version.h is generated - this time to make it work
          with Sun's C++ compiler again; XAPIAN_VERSION is now a string;
          Define XAPIAN_REVISION (which is 4 for version 0.8.4).

Sat Nov 06 04:22:57 GMT 2004  Olly Betts <olly@survex.com>

        * configure.ac: Don't AC_SUBST(STLPORT_CXXFLAGS) as it is never used
          that way (it's included in AM_CXXFLAGS).

Sat Nov 06 01:03:53 GMT 2004  Olly Betts <olly@survex.com>

        * testsuite/testsuite.h: Removed incorrect comment about how STRINGIZE
          is used.

Fri Nov 05 14:41:59 GMT 2004  Olly Betts <olly@survex.com>

        * include/xapian/database.h: Removed a default parameter value from one
          variant of open_db so that there's only one candidate for
          open_db(string).

Fri Nov 05 14:40:38 GMT 2004  Olly Betts <olly@survex.com>

        * backends/database.cc: Renamed parameter from keys to values to
          reflect current external naming.

Fri Nov 05 14:38:07 GMT 2004  Olly Betts <olly@survex.com>

        * include/xapian/version.h.in,configure.ac: Fixed generation of
          include/xapian/version.h to work with aCC.

Thu Nov 04 12:17:50 GMT 2004  Olly Betts <olly@survex.com>

        * configure.ac: Try "-std strict_ansi" for Compaq C++.

Thu Nov 04 11:22:52 GMT 2004  Olly Betts <olly@survex.com>

        * configure.ac: Fourth argument to AC_CHECK_HEADERS must be non-empty
          to make a difference.

Thu Nov 04 10:21:25 GMT 2004  Olly Betts <olly@survex.com>

        * configure.ac: Found clean fix for inttypes.h problem (previous bodge
          didn't work anyway).

Thu Nov 04 01:18:55 GMT 2004  Olly Betts <olly@survex.com>

        * configure.ac: Eliminated use of \( \) in sed expression as it
          appears to cause problems on HP-UX.

Thu Nov 04 00:54:11 GMT 2004  Olly Betts <olly@survex.com>

        * configure.ac: Added icky workaround to Compaq C++ oddness - cc can
          find inttypes.h but cxx can't.

Wed Nov 03 23:58:48 GMT 2004  Olly Betts <olly@survex.com>

        * api/omenquire.cc,common/multimatch.h,matcher/multimatch.cc,
          net/socketserver.cc: Tweaked to compile with Compaq C++.

Wed Nov 03 22:55:04 GMT 2004  Olly Betts <olly@survex.com>

        * configure.ac: Need to put flags to select ANSI C++ mode in CXXFLAGS
          not AM_CXXFLAGS.

Wed Nov 03 22:27:08 GMT 2004  Olly Betts <olly@survex.com>

        * api/omenquire.cc: Fixed typo.

Wed Nov 03 21:58:53 GMT 2004  Olly Betts <olly@survex.com>

        * api/omenquire.cc: Added explicit cast to try to help Compaq C++
          build.

Wed Nov 03 21:38:29 GMT 2004  Olly Betts <olly@survex.com>

        * configure.ac: Probe for C++ compiler switches for ANSI mode as early
          as possible.  With Compaq's C++, we need -D__USE_STD_IOSTREAM to
          successfully #include <streambuf>.

Wed Nov 03 21:07:43 GMT 2004  Olly Betts <olly@survex.com>

        * configure.ac: Fixed snprintf configure test.

Wed Nov 03 19:37:32 GMT 2004  Olly Betts <olly@survex.com>

        * common/utils.cc: Fixed typo.

Wed Nov 03 19:27:22 GMT 2004  Olly Betts <olly@survex.com>

        * configure.ac,common/utils.cc: Improved snprintf checking.

Wed Nov 03 15:43:54 GMT 2004  Olly Betts <olly@survex.com>

        * getopt/getopt.cc: Fixed to compile when not using glibc.

Wed Nov 03 14:55:29 GMT 2004  Olly Betts <olly@survex.com>

        * bin/omtcpsrv.cc,bin/quartzdump.cc,common/Makefile.am,common/getopt.h,
          common/gnu_getopt.h,getopt/,testsuite/testsuite.cc: Major overhaul
          of getopt use.  Move from getopt(), getopt_long(), getopt_long_only()
          to gnu_getopt(), etc so we don't need to dance around avoiding
          clashes with getopt() stuff in system headers.  The new gnu_getopt.h
          header is cruft free and hopefully won't trip up assorted compilers
          or platforms.

Wed Nov 03 14:53:39 GMT 2004  Olly Betts <olly@survex.com>

        * tests/Makefile.am: quartztest doesn't use getopt directly, so no
          need to link it.

Wed Nov 03 12:56:56 GMT 2004  Olly Betts <olly@survex.com>

        * tests/stemtest.cc: Prune unused #includes.

Wed Nov 03 03:47:46 GMT 2004  Olly Betts <olly@survex.com>

        * getopt/getopt.cc: Defining _NO_PROTO is a really bad idea for C++
          code!

Wed Nov 03 03:34:06 GMT 2004  Olly Betts <olly@survex.com>

        * configure.ac: Removed AC_HEADER_STDC - Compaq's C++ compiler can't
          find inttypes.h, but their C compiler can!

Wed Nov 03 02:48:04 GMT 2004  Olly Betts <olly@survex.com>

        * net/tcpclient.cc,net/tcpserver.cc: Use SOCKLEN_T for the type we
          need to pass to various socket calls, since HPUX defines socklen_t
          yet wants int in those calls.

Wed Nov 03 02:43:26 GMT 2004  Olly Betts <olly@survex.com>

        * autoconf/type_socklen_t.m4,matcher/networkmatch.cc,net/: If
          __WIN32__ is defined, we want winsock2.h instead of sys/socket.h.
          Mingw doesn't seem to even have the latter, so I think previously
          we've been compiling by picking one up from somewhere random!

Wed Nov 03 01:10:01 GMT 2004  Olly Betts <olly@survex.com>

        * autoconf/type_socklen_t.m4: Rewritten to work with HPUX which
          helpfully defines socklen_t but doesn't use it!

Tue Nov 02 21:29:40 GMT 2004  Olly Betts <olly@survex.com>

        * getopt/getopt.cc: Fixes for Compaq C++.

Tue Nov 02 18:51:43 GMT 2004  Olly Betts <olly@survex.com>

        * getopt/getopt.cc: Protect getopt definition for possible getopt
          macro declared in getopt.h.

Tue Nov 02 16:52:21 GMT 2004  Olly Betts <olly@survex.com>

        * configure.ac: AM_CONFIG_HEADER -> AC_CONFIG_HEADERS; removed
          commented out AC_LANG_SAVE and AC_LANG_RESTORE.

Tue Nov 02 15:56:02 GMT 2004  Olly Betts <olly@survex.com>

        * configure.ac: # comments -> dnl comments.

Tue Nov 02 15:54:46 GMT 2004  Olly Betts <olly@survex.com>

        * configure.ac: $GCC -> $GXX; $CC -> $CXX.

Tue Nov 02 15:38:21 GMT 2004  Olly Betts <olly@survex.com>

        * configure.ac,docs/Makefile.am: Removed SOURCEDOC_C_SRC.

Tue Nov 02 06:51:39 GMT 2004  Olly Betts <olly@survex.com>

        * getopt/getopt.cc,getopt/getopt1.cc: Fixed function declarations to
          not use K&R C syntax.

Tue Nov 02 05:31:57 GMT 2004  Olly Betts <olly@survex.com>

        * getopt/getopt.cc: Make _getopt_internal extern "C" too.

Tue Nov 02 04:43:08 GMT 2004  Olly Betts <olly@survex.com>

        * Makefile.am,configure.ac,HACKING,PLATFORMS,backends/muscat36/,
          getopt/Makefile.am,getopt/getopt.cc,getopt/getopt1.cc,languages/:
          Change the few C sources to be C++.  This way we don't need to
          worry about configure choosing a mismatching pair of compilers,
          or about whether configure tests with the C compiler don't apply
          to the C++ compiler, or vice versa.

Tue Nov 02 04:31:49 GMT 2004  Olly Betts <olly@survex.com>

        * backends/muscat36/: More C casts converted to C++ casts.

Tue Nov 02 04:28:07 GMT 2004  Olly Betts <olly@survex.com>

        * matcher/bm25weight.cc,matcher/tradweight.cc: More C casts converted
          to C++ casts.

Tue Nov 02 03:22:52 GMT 2004  Olly Betts <olly@survex.com>

        * backends/muscat36/: Removed unused test harness sources.

Tue Nov 02 02:44:34 GMT 2004  Olly Betts <olly@survex.com>

        * languages/pool.c,languages/pool.h: Removed unused sources.

Tue Nov 02 01:51:30 GMT 2004  Olly Betts <olly@survex.com>

        * configure.ac: AC_TYPE_SIZE_T causes problems with Compaq C++ when it
          fails to spot size_t (which is there) and the "#define size_t
          unsigned long" it adds to config.h breaks "using std::size_t;".
          Also removed AC_C_CONST as I don't believe that's needed either
          in a largely C++ library.  Both of these have been in configure.in
          since the very first version so I suspect autoscan decided we wanted
          them.

Mon Nov 01 05:44:02 GMT 2004  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Fixed compilation problem on alpha Linux.

Mon Nov 01 03:16:36 GMT 2004  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc,api/omstem.cc,
          backends/inmemory/inmemory_database.h,
          backends/multi/multi_termlist.h,backends/quartz/,
          extra/queryparser.yy,matcher/,net/tcpserver.cc,tests/api_anydb.cc,
          tests/api_db.cc,tests/quartztest.cc,testsuite/backendmanager.cc,
          testsuite/btreecheck.cc,testsuite/testsuite.cc: Changed C style
          casts to C++ style.  The syntax is ugly, but they do make the intent
          clearer which is a good thing.

Mon Nov 01 02:56:31 GMT 2004  Olly Betts <olly@survex.com>

        * configure.ac: Select ANSI iostream implementation for Compaq C++.

Mon Nov 01 02:41:58 GMT 2004  Olly Betts <olly@survex.com>

        * configure.ac: Compaq's C++ compiler doesn't know snprintf, yet their
          C compiler does.  Let's try running *all* the configure checks with
          the C++ compiler, since that's what we compile most code with.

Mon Nov 01 01:12:43 GMT 2004  Olly Betts <olly@survex.com>

        * common/netutils.cc: Fixed to compile.

Mon Nov 01 01:06:13 GMT 2004  Olly Betts <olly@survex.com>

        * common/Makefile.am,common/netutils.cc,common/netutils.h:
          encode_tname() and decode_tname() aren't really sensible candidates
          for inlining so move them out of a header.

Sun Oct 31 15:34:18 GMT 2004  Olly Betts <olly@survex.com>

        * configure.ac: Turn on -AA when compiling with HP's aCC.

Sun Oct 31 15:10:02 GMT 2004  Olly Betts <olly@survex.com>

        * testsuite/testutils.cc: Fixed mset_range_is_same() and
          mset_range_is_same_weights() which were only comparing the
          first items in the range.  Luckily the tests still all pass
          so this wasn't hiding any bugs.

Sat Oct 30 19:15:48 BST 2004  Olly Betts <olly@survex.com>

        * configure.ac: Disable pread/pwrite on HP-UX as they don't work when
          LFS in enabled, and we definitely want LFS.

Sat Oct 30 16:42:24 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/bcursor.cc: Fix Bcursor::del() which didn't always
          leave the cursor on the next item like it should.
        * backends/quartz/quartz_postlist.cc: If we're removing a posting
          list entirely, often there will only be one chunk, so avoid
          creating a Bcursor in this case.

Sat Oct 30 16:55:19 BST 2004  Olly Betts <olly@survex.com>

        * languages/header.h: Removed unused #define MAXINT and MININT which
          were clashing with some header on HP-UX.

Sat Oct 30 07:09:33 BST 2004  Olly Betts <olly@survex.com>

        * docs/bm25.html,docs/intro_ir.html: Reworked to talk about Xapian
          rather than Muscat.  Also improved the appearance of the formulae.

Sat Oct 30 06:07:14 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: Btree::read_block - debug log the value
          of p, not the irrelevant contents of the block it points to.

Fri Oct 29 22:37:31 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_postlist.cc: Improved comments.

Fri Oct 29 05:10:02 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: Fixed ultra-obscure bug in the code which
          finds a key suitable to discriminating between two blocks in a
          B-tree branch (discovered by reading the code).  Comparing the keys
          didn't consider the length of the second, so it is possible the code
          would miscompare.  But in reality this is extremely unlikely to
          happen, and even then would probably just mean that the
          discriminating key wouldn't be as short as it could be.

Fri Oct 29 04:12:09 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: Simplified Btree::compare_keys() by
          removing the last case which was dead code as it was covered by
          an earlier case.

Wed Oct 27 21:17:12 BST 2004  Olly Betts <olly@survex.com>

        * HACKING,tests/runtest.in:
          Enhanced runtest to allow it to run test programs under valgrind
          and other tools (gdb was already supported).
        * testsuite/testsuite.cc: Point the user to the runtest script if
          srcdir can't be guessed.  And no longer look for the test program
          in the tests subdirectory of the current directory.
        * common/omdebug.cc: Removed compatibility code for checking
          OM_DEBUG_FILE and OM_DEBUG_TYPES.
        * HACKING: Document that %% in XAPIAN_DEBUG_LOG is substituted with
          the process-id, and that setting XAPIAN_DEBUG_FLAGS to -1 enables
          all debug messages.
        * HACKING: Valgrind now supports x86 FreeBSD and PowerPC Linux.
        * HACKING: Removed mentions of long-dead configure options
          --enable-profiling, --enable-purify and --enable-insure.

Wed Oct 27 21:16:10 BST 2004  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Document parameters of
          Enquire::register_match_decider().

Wed Oct 27 21:14:32 BST 2004  Olly Betts <olly@survex.com>

        * PLATFORMS: Updated.

Wed Oct 13 20:21:38 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc,backends/quartz/btree.h: Revert the
          previous change as runtime sized arrays are a g++ extension.
          Calling new and delete on every call to add_item() is probably
          unwise.

Tue Oct 12 23:40:36 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc,backends/quartz/btree.h: split_p is only
          used by Btree::add_item(), so make it a temporary in that method
          rather than a class member variable which we need to take care to
          allocate and deallocate.

Mon Oct 11 16:32:10 BST 2004  Olly Betts <olly@survex.com>

        * tests/btreetest.cc: Fix memory leaks in test_cursor1.

Mon Oct 11 02:24:50 BST 2004  Olly Betts <olly@survex.com>

        * docs/quartzdesign.html: Use 5 tables in the example for how we keep
          revisions in step, since we use 5 tables in quartz.

Thu Oct 07 22:51:28 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: An interrupted update could cause any
          further updates to fail with "New revision too low" because the
          new revision was being calculated incorrectly - fixed.

Wed Oct 06 15:42:31 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc,include/xapian/database.h: Check that any
          user specified block size is a power of 2.  And if the block size
          passed is invalid, use the default of 8192 rather than throwing an
          exception.

Wed Oct 06 12:19:39 BST 2004  Olly Betts <olly@survex.com>

        * PLATFORMS: Updated from tinderbox.

Wed Oct 06 01:10:46 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc,backends/quartz/quartz_document.cc,
          matcher/multimatch.cc,common/multimatch.h: Fix some warnings
          from Sun's C++ compiler.

Thu Sep 30 22:16:37 BST 2004  Olly Betts <olly@survex.com>

        * common/utils.cc,common/utils.h: Fixes for win32 and sun's c++
          compiler.

Thu Sep 30 18:24:20 BST 2004  Olly Betts <olly@survex.com>

        * common/utils.h,extra/queryparser.yy: Fixed bug which caused
          misparsing of certain prefixed queries, introduced by C_isXXXXX
          change.

Thu Sep 30 11:09:17 BST 2004  Olly Betts <olly@survex.com>

        * tests/api_anydb.cc: Modified version of changequery1 fails - the
          fix is tricky, so just make it SKIP for now.

Wed Sep 29 21:33:29 BST 2004  Olly Betts <olly@survex.com>

        * extra/Makefile.am: Fixed to work when srcdir != builddir.

Wed Sep 29 18:52:04 BST 2004  Olly Betts <olly@survex.com>

        * PLATFORMS,docs/Makefile.am: Workaround odd latex problem.

Wed Sep 29 17:10:00 BST 2004  Olly Betts <olly@survex.com>

        * configure.ac,docs/doxygen_api_conf.in,docs/doxygen_full_conf.in:
          Updated doxygen conf files for doxygen 1.3.8.

Wed Sep 29 16:52:53 BST 2004  Olly Betts <olly@survex.com>

        * common/utils.cc,common/utils.h,extra/Makefile.am,
          extra/queryparser.yy,tests/api_anydb.cc,testsuite/index_utils.cc:
          Provide our own C_isalpha(), etc replacements for isalpha(), etc
          which always work in the C locale and avoid signed char problems.

Tue Sep 28 00:04:11 BST 2004  Olly Betts <olly@survex.com>

        * common/utils.cc,common/utils.h: rmdir() isn't a sensible candidate
          for inlining so move it out of the header.

Mon Sep 27 17:33:23 BST 2004  Olly Betts <olly@survex.com>

        * extra/queryparser.yy: Be smarter about when to add a ':' when adding
          a term prefix.

Mon Sep 27 16:01:37 BST 2004  Olly Betts <olly@survex.com>

        * docs/scalability.html: Added note warning about benchmarking from
          cold.

Mon Sep 27 15:20:13 BST 2004  Olly Betts <olly@survex.com>

        * HACKING: Note that we use doxygen 1.3.8 for snapshots and releases;
          Note that --enable-maintainer-mode now automatically enables -Werror
          with GCC 3.0 or newer.

Wed Sep 22 16:49:20 BST 2004  Olly Betts <olly@survex.com>

        * matcher/: Pruned unneeded #include-s and other tidying, some
          enabled by the previous change.

Wed Sep 22 14:04:27 BST 2004  Olly Betts <olly@survex.com>

        * common/positionlist.h,matcher/: Moved all of the implementations
          of the XXXPostList classes from the .h files into the .cc files.
          All the methods are virtual, so we aren't going to gain anything
          from being able to inline them.

Wed Sep 22 02:58:59 BST 2004  Olly Betts <olly@survex.com>

        * configure.ac: Automatically add -Werror to CFLAGS and CXXFLAGS if
          maintainer mode is enabled and we're using GCC3 or newer.  Don't
          do this for older GCCs as GCC 2.95 issues spurious warnings.

Wed Sep 22 02:41:41 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_record.cc,backends/quartz/quartz_utils.h:
          Introduced CASSERT_TYPE_UNSIGNED to replace the common use of
          CASSERT to assert at compile time that a type is unsigned.

Tue Sep 21 15:58:05 BST 2004  Olly Betts <olly@survex.com>

        * PLATFORMS: Removed reports from versions prior to 0.7.0.  So much
          has changed that these are of little value.

Mon Sep 20 15:24:27 BST 2004  Olly Betts <olly@survex.com>

        * NEWS,PLATFORMS,configure.ac: Version 0.8.3.

Mon Sep 20 15:13:34 BST 2004  Olly Betts <olly@survex.com>

        * AUTHORS: Updated.

Mon Sep 20 14:26:35 BST 2004  Olly Betts <olly@survex.com>

        * xapian.spec.in: Removed reference to xapian-examples' createdatabase
          (which is no longer in xapian-examples).

Mon Sep 20 13:06:59 BST 2004  Olly Betts <olly@survex.com>

        * xapian.spec.in: Updated version from Fabrice Colin (incorporating
          changes from Alan Cox's RPM spec files): split off libs into a
          separate package to allow 32 and 64 bit versions to be installed
          concurrently; include binaries from xapian-examples; updated source
          URLs.

Mon Sep 20 03:25:44 BST 2004  Olly Betts <olly@survex.com>

        * tests/api_anydb.cc: Added regression test for previous bug (test
          checkatleast1).

Mon Sep 20 03:16:14 BST 2004  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Fixed segfault with check_at_least when there
          were no matches.

Sun Sep 19 17:54:52 BST 2004  Olly Betts <olly@survex.com>

        * api/omenquire.cc,common/omdebug.cc: Fixed to compile with debug
          tracing enabled.

Sat Sep 18 19:02:54 BST 2004  Olly Betts <olly@survex.com>

        * tests/api_db.cc: Updated missed use of omprogsrv to xapian-progsrv.

Tue Sep 14 18:09:19 BST 2004  Olly Betts <olly@survex.com>

        * xapian.spec.in,bin/.cvsignore,bin/Makefile.am,debian/control.in,
          debian/xapian-tools.install,docs/remote.html,tests/remotetest.cc,
          testsuite/backendmanager.cc: Rename omtcpsrv to xapian-tcpsrv and
          omprogsrv to xapian-progsrv.

Tue Sep 14 16:25:06 BST 2004  Olly Betts <olly@survex.com>

        * xapian.spec.in: Fixed mangled URL in last checkin.

Tue Sep 14 15:35:00 BST 2004  Olly Betts <olly@survex.com>

        * xapian.spec.in: Updated URL for tarball.

Tue Sep 14 02:49:34 BST 2004  Olly Betts <olly@survex.com>

        * HACKING: Updated the "how to do a release" tasklist.

Mon Sep 13 03:19:47 BST 2004  Olly Betts <olly@survex.com>

        * NEWS,PLATFORMS,configure.ac: Version 0.8.2.

Sat Sep 11 16:39:08 BST 2004  Olly Betts <olly@survex.com>

        * include/xapian/version.h.in: GCC 3.1 reported the wrong value for
          __GXX_ABI_VERSION (100 not 101) so check 3.0 and 3.1 by version
          number, keeping the __GXX_ABI_VERSION check for newer versions.

Sat Sep 11 02:57:48 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/bcursor.cc: Fixed and reenabled Bcursor::prev()
          (not currently used, but it will be useful for running posting
          lists backwards!)

Fri Sep 10 13:13:51 BST 2004  Olly Betts <olly@survex.com>

        * tests/Makefile.am: Need to ship test data for new test.

Thu Sep 09 21:58:37 BST 2004  Olly Betts <olly@survex.com>

        * tests/api_db.cc: Extended feature test sortrel1 to check interaction
          with Enquire::set_sort_forward(false).

Thu Sep 09 21:46:12 BST 2004  Olly Betts <olly@survex.com>

        * api/omenquire.cc,common/multimatch.h,common/omenquireinternal.h,
          include/xapian/enquire.h,matcher/multimatch.cc,net/socketserver.cc,
          tests/api_db.cc,tests/testdata/apitest_sortrel.txt: You can now
          specify to sort by value, then relevance, then docid instead of
          by value then docid.

Thu Sep 09 19:30:07 BST 2004  Olly Betts <olly@survex.com>

        * docs/todo.xml: Removed unused file - todo entries are now in
          bugzilla.

Thu Sep 09 13:11:52 BST 2004  Olly Betts <olly@survex.com>

        * api/omenquire.cc,common/multimatch.h,common/omenquireinternal.h,
          include/xapian/enquire.h,matcher/multimatch.cc,net/socketserver.cc:
          Added optional "checkatleast" parameter to Enquire::get_mset()
          which allows Omega's MIN_HITS functionality to be implemented
          in the matcher (a bit more efficient).

Thu Sep 09 04:18:32 BST 2004  Olly Betts <olly@survex.com>

        * NEWS: Updated.

Thu Sep 09 03:39:52 BST 2004  Olly Betts <olly@survex.com>

        * PLATFORMS: Updated from the tinderbox.  Sun's C++ compiler can
          now build Xapian on sparc!

Thu Sep 09 02:19:43 BST 2004  Olly Betts <olly@survex.com>

        * tests/api_wrdb.cc: Added feature test for
          WritableDatabase::replace_document() and delete_document() with
          a unique term (apitest:uniqueterm1.
        * backends/inmemory/inmemory_alltermslist.cc,
          backends/inmemory/inmemory_database.cc,
          backends/inmemory/inmemory_database.h:
          Fixed bugs thrown up by the new test.

Wed Sep 08 19:45:37 BST 2004  Olly Betts <olly@survex.com>

        * HACKING: Updated details of Solaris open workaround.

Wed Sep 08 19:42:15 BST 2004  Olly Betts <olly@survex.com>

        * common/utils.h,backends/quartz/btree.cc,
          backends/quartz/quartz_database.cc,backends/quartz/quartz_log.cc:
          New version of the Solaris open dance - now we always pass in
          const char * for the filename, and we don't need the dance on
          new versions, so only dance if open is defined.

Wed Sep 08 16:26:15 BST 2004  Olly Betts <olly@survex.com>

        * api/omquery.cc,include/xapian/query.h: Renamed Query::is_empty()
          to Query::empty() for consistency.  Keep Query::is_empty() for
          now as a deprecated alias.

Wed Sep 08 16:24:44 BST 2004  Olly Betts <olly@survex.com>

        * tests/api_wrdb.cc: replace_doc -> replace_doc1; added new test
          replace_doc2 to test using replace_doc to add a document with
          a specified docid.

Wed Sep 08 16:23:50 BST 2004  Olly Betts <olly@survex.com>

        * backends/inmemory/inmemory_database.h: Removed unused member
          variable "indexing".

Wed Sep 08 16:14:47 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_database.cc: If replace_document() is used
          to add a document with did greater than lastdocid, raise lastdocid
          so future calls to add_document() won't clash.

Wed Sep 08 16:13:51 BST 2004  Olly Betts <olly@survex.com>

        * backends/inmemory/inmemory_database.cc: Fixed bug
          Database::replace_document() to work with a document id greater
          than lastdocid.

Wed Sep 08 05:10:01 BST 2004  Olly Betts <olly@survex.com>

        * common/utils.h: The latest fcntl.h dance causes a compile error on
          mingw, so don't use it there.

Wed Sep 08 03:38:20 BST 2004  Olly Betts <olly@survex.com>

        * common/utils.h: Use a namespace as an extra step in the Sun fcntl
          open64 dance.

Tue Sep 07 02:33:50 BST 2004  Olly Betts <olly@survex.com>

        * tests/test.da: Another cruft file removed.

Tue Sep 07 02:21:49 BST 2004  Olly Betts <olly@survex.com>

        * tests/btreetest.cc,tests/quartztest.cc: Moved overwrite1 from
          quartztest to btreetest.  Added const in a few places.

Tue Sep 07 02:07:43 BST 2004  Olly Betts <olly@survex.com>

        * tests/quartztest.cc: Removed overwrite2 test.  Digging back in CVS
          it's been disabled since the day after it added.  After all this
          time it's hard to guess exactly what it was intended to test, so
          just removing it seems simplest.  We already have overwrite1 to test
          getting DatabaseModifiedError.

Tue Sep 07 01:52:25 BST 2004  Olly Betts <olly@survex.com>

        * tests/btreetest.cc: Cleaned up paths to temporary Btrees.

Mon Sep 06 17:51:27 BST 2004  Olly Betts <olly@survex.com>

        * tests/btreetest.cc,tests/quartztest.cc: Now that QuartzTable,
          QuartzDiskTable, QuartzBufferedTable, QuartzCursor,
          QuartzDiskCursor, and QuartzBufferedCursor are gone, move
          quartztest tests which now just use Btree and Bcursor to btreetest.
          This is more logical and should help make quartztest less of a
          monster to compile.

Mon Sep 06 12:47:47 BST 2004  Olly Betts <olly@survex.com>

        * tests/Makefile.am: Ship testdata/apitest_allterms4.txt.

Mon Sep 06 02:46:32 BST 2004  Olly Betts <olly@survex.com>

        * tests/quartztest.cc: Xapian::Database will create the directory for
          the database so there's no need to create it ourselves.

Mon Sep 06 02:40:57 BST 2004  Olly Betts <olly@survex.com>

        * tests/,tests/testdata/apitest_allterms4.txt: Split off tests which
          require a writable database backend and tests which should work with
          any database backend from api_db.cc as it was getting rather large.
          Fixed simplequery2 to work with backends which don't return the
          document length (such as the muscat36 backends).  Fixed allterms4
          to work with muscat36 backends.

Mon Sep 06 02:39:29 BST 2004  Olly Betts <olly@survex.com>

        * backends/muscat36/da_database.cc,backends/muscat36/db_database.cc:
          Fixed to compile now that internal_end_session() has gone.

Mon Sep 06 00:59:36 BST 2004  Olly Betts <olly@survex.com>

        * tests/runtest.in: Added support for running gdb on a test program,
          automatically sorting out srcdir and libtool.

Mon Sep 06 00:49:11 BST 2004  Olly Betts <olly@survex.com>

        * tests/apitest_parser.pm: Removed long unused file.

Sun Sep 05 22:53:27 BST 2004  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Tweaked documentation comment to stop
          doxygen parsing a hyphen as a single entry bullet point list.

Sun Sep 05 20:20:01 BST 2004  Olly Betts <olly@survex.com>

        * testsuite/backendmanager.h: Added missing "std::" so code will
          compile with GCC >= 3.

Sun Sep 05 13:54:58 BST 2004  Olly Betts <olly@survex.com>

        * testsuite/backendmanager.h: Removed superfluous "BackendManager::".

Sun Sep 05 01:54:49 BST 2004  Olly Betts <olly@survex.com>

        * common/utils.cc,common/utils.h: Removed now unused files_exist()
          function.

Sun Sep 05 01:50:35 BST 2004  Olly Betts <olly@survex.com>

        * tests/api_db.cc,tests/apitest.cc,tests/apitest.h,
          testsuite/backendmanager.cc,testsuite/backendmanager.h:
          Cleaned up BackendManager by removing complications only required
          by absentfile1 test, which can be implemented more directly anyway.

Sun Sep 05 01:33:16 BST 2004  Olly Betts <olly@survex.com>

        * tests/quartztest.cc: Cleaned up rather odd code which is a hangover
          from when keys and tags weren't simply C++ strings.

Sat Sep 04 12:35:12 BST 2004  Olly Betts <olly@survex.com>

        * HACKING: Updated details of which autotools we require.

Fri Sep 03 17:51:59 BST 2004  Olly Betts <olly@survex.com>

        * configure.ac: Require autoconf 2.59.  Noted LIBRARY_VERSION_INFO
          which 0.8.2 will probably have.
        * Makefile.am: Require automake 1.8.5.

Fri Sep 03 16:40:11 BST 2004  Olly Betts <olly@survex.com>

        * PLATFORMS: Updated with results from tinderbox.

Fri Sep 03 14:34:00 BST 2004  Olly Betts <olly@survex.com>

        * autoconf/definedir.m4,autoconf/rjb_find_stlport.m4: Quote macro
          names to fix warning from newer aclocal.  Removed comments about
          future autodetection of stlport, as the user will always need to
          decide between the STL supplied with the compiler and stlport.

Thu Sep 02 17:55:33 BST 2004  Olly Betts <olly@survex.com>

        * matcher/andpostlist.cc: Initialise lmax and rmax to 0.  Hopefully
          this will fix SIGFPE on apitest's qterminfo2 on alpha linux.

Thu Sep 02 14:50:20 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_database.cc: Not storing the document length
          and last docid on every add means that the magic key won't always
          exists when there are records and
          QuartzWritableDatabase::get_doccount() is sometimes off by one.  Fix
          crudely for now by making sure that the magic key does always exist.
          Longer term the magic key probably should be in the postlist table
          but that's an incompatible change.

Wed Sep 01 16:15:23 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/: Change QuartzWritableDatabase to store the total
          document length and the last docid itself rather than tallying added
          and removed document length and writing the last docid back every
          time a document is added.  This gives cleaner code and a small
          performance win.  Removed XAPIAN_FLUSH_THRESHOLD_LENGTH as we no
          longer tally the length changes, and made the default flush
          threshold 10000 documents (was 1000).

Wed Sep 01 14:21:19 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: Turn on previously commented-out code to
          make the first key null for blocks more than 1 away from the leaves.
          It saves disk space for a tiny CPU and RAM cost so is bound to be
          a win overall.

Tue Aug 31 13:55:58 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc,backends/quartz/btree.h,
          backends/quartz/btree_util.h: Merged Btree::make_index_item() into
          Btree::enter_key().

Tue Aug 31 01:07:19 BST 2004  Olly Betts <olly@survex.com>

        * NEWS: Updated in preparation for a release.

Tue Aug 31 00:53:35 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: Short-cutting Btree::cancel causes
          problems so disable that for the time being at least.

Fri Aug 27 13:09:56 BST 2004  Olly Betts <olly@survex.com>

        * testsuite/btreecheck.cc: Fixed %% to % (presumably a hangover from
          converting printf to cout).

Thu Aug 26 18:11:50 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_postlist.cc: Reduce quartz postlist chunk
          threshold from 2048 to 2000 so that chunks won't get split by the
          Btree.

Thu Aug 26 18:10:27 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_record.cc: Throw DocNotFoundError if we
          try to delete a record which doesn't exist.

Thu Aug 26 17:18:56 BST 2004  Olly Betts <olly@survex.com>

        * configure.ac: Don't define DATADIR - we no longer use it and clashes
          with more recent mingw headers.

Wed Aug 25 22:47:06 BST 2004  Olly Betts <olly@survex.com>

        * docs/quartzdesign.html: Started section on quartzcompact.

Wed Aug 25 22:45:48 BST 2004  Olly Betts <olly@survex.com>

        * api/omdatabase.cc,include/xapian/database.h: Changed new
          WritableDatabase::replace_document(term, doc) method to return
          the docid which the document was given.

Tue Aug 24 13:45:52 BST 2004  Olly Betts <olly@survex.com>

        * api/omenquire.cc,include/xapian/enquire.h: Added new ESet methods
          swap(), back() and operator[].
        * include/xapian/enquire.h: Added documentation comments for
          MSet methods size(), empty(), swap(), begin(), end(), back().
        * include/xapian/enquire.h: Removed bogus documentation saying
          that some Enquire methods can throw DatabaseOpeningError.

Tue Aug 24 10:24:30 BST 2004  Olly Betts <olly@survex.com>

        * HACKING: Noted automake 1.8 may be problematic.  Tweaked list of
          release tasks.

Tue Aug 24 10:16:38 BST 2004  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: If a matchdecider is specified and no matches
          are requested, the lower bound on the number of matches must be 0
          (since the matchdecider could reject all the matches).

Mon Aug 23 23:03:12 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: Improved the "Db block overwritten"
          message.  The DatabaseCorruptError version now suggests multiple
          writers may be the cause, while the DatabaseModifiedError version
          uses less alarming wording and says to call Database::reopen().

Sun Aug 22 14:07:35 BST 2004  Olly Betts <olly@survex.com>

        * indexer/: Removed the old XML-based indexer framework.  It's not
          worked for ages, and nobody seems interested in ressurecting it.
          If anyone ever is, they can fetch it back from CVS, but otherwise
          it's just bulking up CVS checkouts.

Sun Aug 22 13:02:25 BST 2004  Olly Betts <olly@survex.com>

        * Makefile.am,configure.ac,extra/Makefile.am: Moved the older library
          version information into configure.ac.

Sun Aug 22 12:58:21 BST 2004  Olly Betts <olly@survex.com>

        * HACKING,configure.in,configure.ac,backends/Makefile.am,
          docs/Makefile.am: Renamed configure.in to configure.ac.

Sun Aug 22 12:47:43 BST 2004  Olly Betts <olly@survex.com>

        * xapian-config.in: Add "(or configure.ac)" in message telling the
          user to add a line to their configure.in.

Sun Aug 22 11:38:55 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc,backends/quartz/btree_util.h: Adjusted
          some Asserts to check c is within blocksize rather than
          65536.  Added a FIXME for those which can't be trivially changed.

Sun Aug 22 10:56:56 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_database.cc: No need to force a flush on
          QuartzWritableDatabase::open_document() (the document will read
          things lazily from the database, and that may trigger a forced
          flush).
        * backends/quartz/quartz_database.cc,
          backends/quartz/quartz_database.h: Eliminated
          QuartzDatabase::open_post_list_internal() and
          QuartzDatabase::open_term_list_internal().

Sun Aug 22 01:33:05 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_database.cc,backends/quartz/quartz_record.cc,
          backends/quartz/quartz_record.h: WritableDatabase::get_avlength()
          no longer forces pending changes to be flushed.  This means you can
          now search a modified WritableDatabase without causing a flush
          unless the search includes a term whose postlist has pending
          modifications.

Fri Aug 20 20:03:59 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree_util.h,common/,docs/overview.html,
          docs/quickstart.html,include/xapian/enquire.h,
          matcher/branchpostlist.h,matcher/multimatch.cc,tests/api_db.cc:
          Corrected multiple occurrences of "an Xapian::XXX" to "a Xapian::XXX"
          (presumably these all resulted from replacing "Om" with "Xapian::").

Fri Aug 20 17:38:15 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/,bin/quartzcheck.cc,bin/quartzcompact.cc,
          bin/quartzdump.cc,tests/btreetest.cc,tests/quartztest.cc:
          Merged QuartzCursor into Bcursor.

Fri Aug 20 13:43:04 BST 2004  Olly Betts <olly@survex.com>

        * NEWS,backends/quartz/: Fixed the problem with "lazy tag reading"
          in QuartzCursor and reenable that code.  The problem was with
          deleting the current key, so added QuartzCursor::del() which
          deletes the current key, leaving the cursor on the next item.

Fri Aug 20 13:04:33 BST 2004  Olly Betts <olly@survex.com>

        * tests/api_db.cc: Reenabled test allterms2, but with the iterator
          copying parts removed - TermIterator is an input_iterator so
          that part was invalid.

Thu Aug 19 19:19:48 BST 2004  Olly Betts <olly@survex.com>

        * NEWS: Updated from recent ChangeLog entries.

Thu Aug 19 14:09:28 BST 2004  Olly Betts <olly@survex.com>

        * tests/api_db.cc: Added regression test for bug #37.

Thu Aug 19 13:31:37 BST 2004  Olly Betts <olly@survex.com>

        * matcher/localmatch.cc: Fixed problems handling termweights in
          queries with the same term repeated (bug #37).

Thu Aug 19 13:22:12 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_table.cc: Disable the "lazy tag reading" in
          QuartzCursor for the time being - it seems to cause problems.

Thu Aug 19 12:58:10 BST 2004  Olly Betts <olly@survex.com>

        * bin/quartzcheck.cc,bin/quartzdump.cc: Added calls to
          QuartzCursor::read_tag().

Thu Aug 19 12:56:53 BST 2004  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Removed superfluous clear() of a map.

Thu Aug 19 12:56:08 BST 2004  Olly Betts <olly@survex.com>

        * tests/api_db.cc: Corrected a comment - a pure boolean query has all
          weights set to 0, not 1.

Mon Aug 16 15:41:33 BST 2004  Olly Betts <olly@survex.com>

        * docs/: Removed unused and very out of date class diagrams in dia
          format.  Doxygen generates similar but up-to-date diagrams
          automatically anyway.

Mon Aug 16 15:27:30 BST 2004  Olly Betts <olly@survex.com>

        * xapian.spec.in,debian/libxapianVERSION-dev.install,
          extra/.cvsignore,extra/Makefile.am,extra/omparsequery.h,
          include/Makefile.am,include/om/.cvsignore,include/om/dir_contents,
          include/om/om.h,m4/xapian.m4: Removed the compatibility layer which
          allowed programs written against the pre-0.7.0 API to be compiled.

Mon Aug 16 15:08:08 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_table.cc: Fixed QuartzCursor::find()
          to work again after the last change.

Mon Aug 16 14:43:08 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/,tests/quartztest.cc: QuartzCursor no longer
          automatically reads the tag - you have to call read_tag() to
          get it read.  This speeds up iterator over all the terms in
          a database.  Also commented out QuartzCursor::prev as it's
          unused and untested (at least in its latest form).

Mon Aug 16 12:39:56 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree_types.h: Made Bcursor.rewrite bool rather than
          int.

Mon Aug 16 12:35:07 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc,backends/quartz/btree.h: Calculate and
          store the latest revision number, rather than storing the other
          one and working out which is newer every time we're asked.

Mon Aug 16 12:32:59 BST 2004  Olly Betts <olly@survex.com>

        * docs/install.html: We haven't "only [...] UNIX" for ages, so don't
          claim we are.  We use libtool as well as autoconf and automake.
          Link to the CVS snapshots.  And also mention downloading omega.

Mon Aug 16 12:20:04 BST 2004  Olly Betts <olly@survex.com>

        * docs/index.html: exaplains -> explains.

Mon Aug 16 12:18:34 BST 2004  Olly Betts <olly@survex.com>

        * docs/overview.html: Removed references to "our company" (meaning
          BrightStation) and to the now defunct special parameters which
          the inmemory backend accepted to cause deliberate errors for
          testing.

Sun Aug 15 23:48:20 BST 2004  Olly Betts <olly@survex.com>

        * tests/btreetest.cc: item_count -> get_entry_count(); revision_number
          -> get_open_revision_number().

Sun Aug 15 23:15:34 BST 2004  Olly Betts <olly@survex.com>

        * backends/Makefile.am,backends/inmemory/Makefile.am: Fixed to compile
          with --disable-inmemory (bug #33).

Sat Aug 14 18:56:06 BST 2004  Olly Betts <olly@survex.com>

        * Makefile.am: Improved library versioning comment.

Sat Aug 14 18:55:17 BST 2004  Olly Betts <olly@survex.com>

        * docs/overview.html: Fixed om_queryop to Xapian::Query::op, and added
          missing OP_* codes to the list.

Sat Aug 14 17:44:39 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/bcursor.h,backends/quartz/btree.cc,
          backends/quartz/btree.h,bin/quartzcompact.cc,docs/quartzdesign.html:
          Updated quartz design docs to reflect recent changes.  Also pulled
          out the Btree and Bcursor API docs and slotted them in as doxygen
          documentation comments - this way they're much more likely to
          be kept up-to-date.

Sat Aug 14 15:59:07 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc,backends/quartz/btree.h: Removed unused
          Btree default ctor.

Sat Aug 14 15:45:28 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc,backends/quartz/btree.h: Don't redundantly
          store next_revision - it's always just revision_number + 1.

Sat Aug 14 15:30:30 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: Implemented Btree::cancel directly rather
          than closing and reopening the Btree.

Sat Aug 14 14:46:43 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/,bin/quartzcheck.cc,bin/quartzcompact.cc,
          bin/quartzdump.cc,tests/btreetest.cc,tests/quartztest.cc,
          testsuite/btreecheck.cc,testsuite/btreecheck.h: Eliminated
          QuartzTable which had become just a thin wrapper around Btree.

Fri Aug 13 19:19:02 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_postlist.cc:
          QuartzPostList::move_to_chunk_containing now calls next_chunk if
          required, rather than forcing the caller to do the fix-up.

Fri Aug 13 17:54:53 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_database.cc,
          backends/quartz/quartz_database.h: Added tunable flush thresholds
          - set XAPIAN_FLUSH_THRESHOLD=5000 to flush every 5000 documents
          or XAPIAN_FLUSH_THRESHOLD_LENGTH=1000000 to flush every 1000000
          total change in document length.  Set both to flush whichever is
          reached first.  Set neither and the default is to flush every
          1000 documents as before.

Fri Aug 13 15:54:21 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/: Removed no-longer-used Btree::erase and
          QuartzTable::erase methods.

Fri Aug 13 15:37:15 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc,backends/quartz/quartz_database.cc:
          Changed Btree::create() to remove any pre-existing alternate base
          file, so we no longer need to call Btree::erase before
          Btree::create.

Fri Aug 13 15:37:15 BST 2004  Olly Betts <olly@survex.com>

        * NEWS: Updated with changes since last release.

Fri Aug 13 15:36:04 BST 2004  Olly Betts <olly@survex.com>

        * tests/api_posdb.cc,tests/quartztest.cc: Reworked quartztest's
          positionlist1 into a generic api test as apitest's poslist3.

Thu Aug 12 16:26:42 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_table.cc,backends/quartz/quartz_table.h,
          bin/quartzcheck.cc,bin/quartzdump.cc: QuartzCursor now has a
          Bcursor member, rather than an AutoPtr<Bcursor> member.

Thu Aug 12 14:13:37 BST 2004  Olly Betts <olly@survex.com>

        * tests/btreetest.cc: Fixed up in line with the recent refactoring.

Thu Aug 12 13:23:31 BST 2004  Olly Betts <olly@survex.com>

        * m4/xapian.m4: XO_LIB_XAPIAN now AC_SUBSTs XAPIAN_VERSION.

Thu Aug 12 13:21:36 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/,tests/quartztest.cc: Refactored, replacing
          Quartz*Manager with Quartz*Table.

Thu Aug 12 02:00:58 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/: Merged QuartzTableManager into QuartzDatabase.

Wed Aug 11 23:40:34 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_database.cc,backends/quartz/quartz_database.h:
          Eliminated buffered_tables member of QuartzWritableDatabase.

Wed Aug 11 21:26:35 BST 2004  Olly Betts <olly@survex.com>

        * backends/inmemory/inmemory_database.cc,
          backends/quartz/quartz_database.cc,backends/quartz/quartz_database.h,
          docs/todo.xml: WritableDatabase::replace_document can now be used
          to add a document with a specific docid (to allow keeping docids
          in sync with numeric UIDs from another system).

Wed Aug 11 20:09:15 BST 2004  Olly Betts <olly@survex.com>

        * api/omdatabase.cc,include/xapian/database.h: Added replace_document
          and delete_document variants which take a unique id term name rather
          than a document id.
        * include/xapian/database.h: Better documentation for replace_document
          and delete_document.

Wed Aug 11 16:15:10 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/,bin/quartzcheck.cc,bin/quartzdump.cc,
          tests/quartztest.cc: Eliminated QuartzBufferedTable.

Wed Jun 30 20:34:08 BST 2004  Olly Betts <olly@survex.com>

        * NEWS: Fixed an unwrapped line.

Wed Jun 30 20:32:31 BST 2004  Olly Betts <olly@survex.com>

        * HACKING: Added note about the cvs-tag-release script.

Wed Jun 30 19:05:45 BST 2004  Olly Betts <olly@survex.com>

        * HACKING,NEWS,PLATFORMS,configure.in: Version 0.8.1.

Wed Jun 30 14:23:20 BST 2004  Olly Betts <olly@survex.com>

        * AUTHORS,PLATFORMS: Updated.

Tue Jun 29 23:24:59 BST 2004  Olly Betts <olly@survex.com>

        * tests/api_nodb.cc: Make emptyquery1 check that Query("") causes an
          InvalidArgumentError exception.

Tue Jun 29 17:29:03 BST 2004  Richard Boulton <richard@tartarus.org>

        * Makefile.am: Remove Debian files from distribution tarballs,
          since there will often be multiple patch releases for each
          release.  Debian files will be available from an apt repository
          in future.

Mon Jun 28 01:29:00 BST 2004  Olly Betts <olly@survex.com>

        * NEWS: Mostly updated for 0.8.1 release.

Sun Jun 27 23:37:01 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_postlist.cc: Fixed bug in postlist merging.

Sat Jun 26 00:51:04 BST 2004  Olly Betts <olly@survex.com>

        * AUTHORS: Add Malcolm Baldridge (helped fix a problem with building
          the PHP bindings with newer versions of SWIG and PHP).

Fri Jun 26 00:29:10 BST 2004  Olly Betts <olly@survex.com>

        * HACKING,api/ompositionlistiterator.cc,api/ompostlistiterator.cc,
          api/omtermlistiterator.cc,include/xapian/: MSetIterator and
          ESetIterator are now bidirectional iterators (rather than
          just input iterators);  Fixed post-increment forms of
          PostingIterator, TermIterator, PositionIterator, and ValueIterator
          so that *i++ works (as it must for them to be true input iterators).

Thu Jun 24 18:03:46 BST 2004  Olly Betts <olly@survex.com>

        * PLATFORMS: Added success report for Slackware Linux 9.1.

Mon Jun 21 16:33:16 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_postlist.cc: Corrected -> to . so code
          compiles with debug enabled.

Mon Jun 21 03:25:24 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: Eliminated two calls to abort() - throw
          exceptions instead.

Mon Jun 21 03:21:14 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_postlist.cc: Finish backing out incorrect
          change from "Fri May 07 03:16:29 BST 2004" - failed to change two
          lines back before.

Fri Jun 18 16:48:10 BST 2004  Richard Boulton <richard@tartarus.org>

        * configure.in: Fix typo (STLPORT_CXXLAGS -> STLPORT_CXXFLAGS)

Thu Jun 17 03:46:32 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_database.cc: Cleaned up code to track
          add vs delete vs modify of a posting list entry since we now
          force a flush if an entry is about to be retouched.

Thu Jun 17 03:44:21 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_postlist.cc: Back out incorrect change from
          "Fri May 07 03:16:29 BST 2004".  We do need to call get_or_make_tag
          in this case because we're modifying the tag.

Wed Jun 16 15:40:21 BST 2004  Olly Betts <olly@survex.com>

        * backends/inmemory/inmemory_database.h: Implemented get_lastdocid()
          for InMemory backend.

Wed Jun 16 02:39:41 BST 2004  Olly Betts <olly@survex.com>

        * configure.in: Note the value of LIBRARY_VERSION_INFO which 0.8.1
          would get if it were released now.

Wed Jun 16 02:39:11 BST 2004  Robert Pollak <robert.pollak@fabasoft.com>

        * api/omdatabase.cc, include/xapian/database.h,
          backends/database.cc, common/database.h,
          backends/quartz/quartz_database.cc, backends/quartz/quartz_database.h,
          backends/quartz/quartz_record.cc, backends/quartz/quartz_record.h:
          New method Database::get_lastdocid for re-synchronizing an old
          quartz index.

Wed Jun 16 02:05:07 BST 2004  Richard Boulton <richard@tartarus.org>

        * matcher/multimatch.cc: When collapsing, keep track of the number
          of collapses performed, and use this information to modify the
          bounds and estimate of the number of matches.
        * tests/api_db.cc: Added tests for this.
        * include/xapian/enquire.h: Update documentation comments for
          MSet::get_matches_*() functions to make clear that collapsing and
          cutoffs are taken into account.  (Previously, the most likely
          interpretation of the comments was that they wouldn't be taken
          into account, but the implementation was that percentage cutoffs
          were taken into account.)  Due to this ambiguity, I think it is
          reasonable to say this isn't an API change.

Wed Jun 16 01:55:29 BST 2004  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Rearranged code so that the behaviour can
          be easily seen to be unchanged, but so that it's closer to the
          result of applying Richard's patch for bug #31.

Wed Jun 16 01:27:09 BST 2004  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Trimmed extra whitespace.

Tue Jun 15 15:40:11 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_postlist.cc: Fixed PostlistChunkReader to
          take a copy of the postlist data being read to avoid problems with
          reading data from a string that's been deleted.

Tue Jun 15 15:26:54 BST 2004  Olly Betts <olly@survex.com>

        * HACKING: Updated the list of tasks required for a new release.

Tue Jun 15 15:24:04 BST 2004  Olly Betts <olly@survex.com>

        * Makefile.am,configure.in,extra/Makefile.am: Unify the shlib version
          numbers (the small benefit of tracking them individually makes it
          hard to justify the extra work required, and having one version
          simplifies debian packaging too).

Tue Jun 15 14:52:36 BST 2004  Robert Pollak <robert.pollak@fabasoft.com>

        * extra/xapian/queryparser.h: Fixed memory leaked upon QueryParser
          destruction.

Fri Jun 11 02:18:35 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_postlist.cc: Refactored a loop.

Fri Jun 11 02:17:05 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_postlist.cc: Fixed bug which meant we
          sometimes failed to remove a posting when deleting or replacing
          a document.

Fri Jun 11 02:16:16 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_postlist.cc,
          backends/quartz/quartz_postlist.h: Merged move_to() into skip_to().

Fri Jun 11 02:14:56 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_postlist.cc: Fixed typo in comment.

Thu May 27 15:41:45 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc,backends/quartz/btree.h: Eliminated the
          split cursor - we only actually need a single block buffer to
          handle splitting blocks.

Wed May 26 04:02:18 BST 2004  Olly Betts <olly@survex.com>

        * include/om/om.h,include/xapian/errortypes.h: Removed several unused
          Xapian::Error subclasses (these were used by the indexer framework
          which we decided was a failed experiment).

Wed May 26 01:54:13 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc,backends/quartz/btree.h: More DEBUGCALL
          tracing added; split_root now uses level member rather than a
          parameter.

Sun May 23 00:56:41 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc,backends/quartz/btree.h: Merge split_off()
          into add_item().

Sat May 22 01:28:58 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: Another DEBUGCALL.
        * backends/quartz/quartz_table.h: Improved comments.

Fri May 21 23:17:01 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: Removed unnecessary assignment which is
          a hangover from the shared level code we removed long ago.

Fri May 21 20:31:56 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/,docs/quartzdesign.html,testsuite/btreecheck.cc:
          Removed overwritten flag (unused as we throw an exception anyway).
          If Btree is writable, throw DatabaseCorruptError if we detect
          overwritten.  Make use of bool return types consistent.  Removed
          documentation of Btree error codes (the error codes themselves
          were removed a month ago).

Thu May 20 03:50:46 BST 2004  Olly Betts <olly@survex.com>

        * include/xapian/database.h: Remove references to sessions in doxygen
          comments.

Thu May 20 03:44:28 BST 2004  Olly Betts <olly@survex.com>

        * api/omdatabase.cc,backends/database.cc,
          backends/inmemory/inmemory_database.cc,
          backends/inmemory/inmemory_database.h,
          backends/muscat36/da_database.h,backends/muscat36/db_database.h,
          backends/net/net_database.cc,backends/quartz/quartz_database.cc,
          backends/quartz/quartz_database.h,common/database.h,
          common/net_database.h: Clean up the backend interface.

Thu May 20 03:18:30 BST 2004  Olly Betts <olly@survex.com>

        * backends/database.cc,backends/inmemory/inmemory_database.cc,
          backends/inmemory/inmemory_database.h,backends/muscat36/,
          backends/net/net_database.cc,backends/quartz/quartz_database.cc,
          backends/quartz/quartz_database.h,common/database.h:
          Stripped out the session machinery - all that is actually required
          is to ensure that any unflushed changes are flushed when the dtor
          runs.

Mon May 17 01:04:17 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc,backends/quartz/btree.h,
          backends/quartz/btree_types.h: Reworked split_p and split_n
          members of Cursor into a separate C_split cursor.  This
          reduces the memory overhead of each Bcursor (and hence each
          QuartzPostList).

Sat May 15 01:29:40 BST 2004  Olly Betts <olly@survex.com>

        * docs/quickstart.html: Corrected lingering reference to "om.h" and
          note that we need <iostream>.
        * docs/quickstartindex.cc.html,docs/quickstartexpand.cc.html,
          docs/quickstartsearch.cc.html: Add <iostream>.
        * AUTHORS: Add John Ward for pointing out the above problems.

Fri May 14 00:59:51 BST 2004  Olly Betts <olly@survex.com>

        * HACKING: Added the start of a list of subtasks when doing a release.
          Currently it's always me that does this, but it may not always be
          and anyhow it'll help me to have a list to run through.

Fri May 14 00:59:21 BST 2004  Olly Betts <olly@survex.com>

        * docs/todo.xml: Updated.

Thu May 13 17:14:18 BST 2004  Olly Betts <olly@survex.com>

        * extra/queryparser.yy: When stripping non-alphanums prior to
          reparsing, keep dots ('.').
        * extra/queryparsertest.cc: Pruned near-duplicate queryparsertest
          testcases.

Thu May 13 12:09:19 BST 2004  Olly Betts <olly@survex.com>

        * docs/quartzdesign.html: "interger" -> "integer".

Thu May 13 11:20:44 BST 2004  Olly Betts <olly@survex.com>

        * Makefile.am: Removed bogus extra line added by last change.

Thu May 13 11:11:31 BST 2004  Olly Betts <olly@survex.com>

        * configure.in,Makefile.am,autoconf/.cvsignore,autoconf/Makefile.am,
          m4/.cvsignore,m4/Makefile.am: Removed trivial m4/Makefile.am and
          and autoconf/Makefile.am and do the work from the top level
          Makefile.am instead.  It's easy to see the structure this way, and
          it also removes a couple of recursive make invocations.

Thu May 13 09:32:22 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc,backends/quartz/btree.h: Added DEBUGCALL
          tracing;  Stripped out C_ parameters where they are always the
          internal cursor C.

Thu May 13 00:05:45 BST 2004  Olly Betts <olly@survex.com>

        * extra/queryparser.yy,extra/queryparsertest.cc: If we fail to parse
          a query, try stripping out non-alphanumerics and reparsing.

Wed May 12 14:32:54 BST 2004  Olly Betts <olly@survex.com>

        * common/omtime.h: Corrected file description.

Wed May 12 02:08:44 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: Fixed typos in comment.

Tue May 11 20:55:56 BST 2004  Olly Betts <olly@survex.com>

        * xapian-config.in: Added comment saying why we filter out
          -I/usr/include; Removed no longer used "optarg" stuff; Added licence
          boilerplate text (with (C) dates mined from CVS).

Tue May 11 13:42:38 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/bcursor.cc,backends/quartz/btree.cc: Added lots
          of assertions.

Tue May 11 09:29:51 BST 2004  Richard Boulton <richard@tartarus.org>

        * debian/: Added basic Debian packaging.

Mon May 10 17:17:45 BST 2004  Olly Betts <olly@survex.com>

        * docs/quartzdsign.html: Corrected various pieces of out of date
          information.

Mon May 10 01:30:35 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.h: Removed unused forward declaration of
          class BtreeCheck.

Mon May 10 01:30:24 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: Fixed typo.

Sat May 08 20:14:40 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/: Pruned some #include-s which were unused, or could
          be replaced by forward class declarations.

Fri May 07 14:38:10 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_postlist.cc: Slight efficiency tweak to the
          "deleting the whole posting list" case.

Fri May 07 03:16:29 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_postlist.cc: Removed another unnecessary use
          of QuartzBufferedTable::get_or_make_tag().

Fri May 07 02:56:22 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: Initialise prev_ptr and next_ptr at open
          time for a writable Btree.

Fri May 07 02:46:53 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_postlist.cc: Remove unneeded call to
          QuartzBufferedTable::get_or_make_tag() in a case when we're using a
          cursor which has already fetched the tag.

Thu May 06 23:30:12 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: Improved a comment.

Thu May 06 22:20:43 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: Added a few more assertions.

Thu May 06 02:25:33 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_positionlist.cc,
          backends/quartz/quartz_utils.h: Added SON_OF_QUARTZ define to
          disable incompatible changes to database formats by default, and
          use it to control the docid encoding for keys such that we're always
          inserting at the end of the table when added new documents.

Thu May 06 02:23:02 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_postlist.cc: Improved a FIXME comment.

Thu May 06 00:32:17 BST 2004  Olly Betts <olly@survex.com>

        * extra/queryparsertest.cc: Added test case for `term NOT "a phrase'.

Thu May 06 00:28:32 BST 2004  Olly Betts <olly@survex.com>

        * common/omdebug.cc,common/omdebug.h: Renamed OmTimer class used
          internally by the --enable-debug=profile code to
          Xapian::Internal::Timer.

Wed May 05 13:59:47 BST 2004  Olly Betts <olly@survex.com>

        * docs/scalability.html: Reworded to remove use of first person.

Mon May 03 21:42:05 BST 2004  Olly Betts <olly@survex.com>

        * Makefile.am: Improved wording of a FIXME comment.

Sun May 02 10:18:55 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: Improved a couple of comments.

Sat May 01 04:42:43 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc,backends/quartz/btree.h,
          backends/quartz/quartz_table.cc: Reopening the readonly version
          of a writable Btree is now more efficient.

Sat May 01 01:41:24 BST 2004  Olly Betts <olly@survex.com>

        * PLATFORMS: Added up-to-date success reports for x86-openbsd and
          x86-solaris.

Fri Apr 30 04:05:15 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/: Don't delete and reload the Btree_base just after
          saving it - instead reuse the existing Btree_base object.

Fri Apr 30 02:41:50 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: Clean up new code in Btree::commit()
          from last change.

Thu Apr 29 22:41:05 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc,backends/quartz/quartz_table.cc: Don't
          close and reopen the database table file descriptors every time
          we flush changes.

Thu Apr 29 22:40:36 BST 2004  Olly Betts <olly@survex.com>

        * docs/quartzdesign.html: Improved wording in a couple of places.

Thu Apr 29 16:50:45 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/bcursor.cc: Removed references to Btree::error
          from debug code since Btree::error was removed a week ago.

Tue Apr 27 20:46:25 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc,configure.in: Added configure test for
          glibc, because otherwise we need to include a header before we
          can check for glibc in order to define something we should be
          defining before we include any headers!

Tue Apr 27 17:45:51 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: Only defined _XOPEN_SOURCE if __GLIBC__
          is defined.  OpenBSD seems to do the opposite to Linux and *disable*
          pread and pwrite if this is defined!

Tue Apr 27 14:35:47 BST 2004  Olly Betts <olly@survex.com>

        * api/omenquire.cc,tests/api_db.cc: Need to adjust index by firstitem
          when indexing into items (bug#28).

Mon Apr 26 23:45:15 BST 2004  Olly Betts <olly@survex.com>

        * PLATFORMS: Successfully built with gcc-3.5-20040327 snapshot on x86
          linux.

Fri Apr 23 11:26:07 BST 2004  Olly Betts <olly@survex.com>

        * PLATFORMS: Successfully built and tested on arm linux.

Fri Apr 23 11:24:23 BST 2004  Olly Betts <olly@survex.com>

        * tests/remotetest.cc: Use 127.0.0.1 instead of localhost so that
          tcpmatch1 doesn't fail just because the network setup is broken.

Thu Apr 22 00:54:58 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/: Stripped out Btree_errors as it's almost
          totally unused now.  Fixed up the last few uses.
        * backends/quartz/quartz_table.cc: Fixed another case where read
          and write Btrees should share fds.

Wed Apr 21 02:51:08 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: Check the return value of
          fdatasync()/fsync()/_commit() and raise an error.  They aren't
          likely to fail harmlessly.

Wed Apr 21 02:45:28 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc,backends/quartz/btree.h,
          backends/quartz/quartz_table.cc: Share file descriptors between
          the read and write Btree objects so that a quartz WritableDatabase
          now uses 5 fds rather than 10.

Wed Apr 21 02:37:38 BST 2004  Olly Betts <olly@survex.com>

        * docs/scalability.html: Removed the reference to the Quartz update
          bottleneck "currently being addressed for Xapian 0.8" as it's now
          been addressed!

Wed Apr 21 00:24:08 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: Corrected a comment.

Mon Apr 19 14:42:06 BST 2004  Olly Betts <olly@survex.com>

        * NEWS: Final update for 0.8.0.

Mon Apr 19 14:02:33 BST 2004  Olly Betts <olly@survex.com>

        * AUTHORS: Added people who've contributed build reports for the
          PLATFORMS file.

Mon Apr 19 14:01:38 BST 2004  Olly Betts <olly@survex.com>

        * PLATFORMS: More updates from tinderbox and elsewhere.

Sat Apr 17 02:24:11 BST 2004  Olly Betts <olly@survex.com>

        * PLATFORMS: Lots of updates from tinderbox and mailing list.

Sat Apr 17 00:13:26 BST 2004  Olly Betts <olly@survex.com>

        * HACKING: Added notes about using "using", and pointers to a couple
          of useful C++ web resources.

Mon Apr 12 00:56:04 BST 2004  Olly Betts <olly@survex.com>

        * Makefile.am,NEWS,configure.in,extra/Makefile.am: Version 0.8.0.

Mon Apr 12 00:31:15 BST 2004  Olly Betts <olly@survex.com>

        * NEWS: Updated for 0.8.0.

Sun Apr 11 21:18:47 BST 2004  Olly Betts <olly@survex.com>

        * extra/queryparser.yy,extra/queryparsertest.cc: Don't use a raw term
          for a term which starts with a digit.

Sat Apr 10 17:20:23 BST 2004  Olly Betts <olly@survex.com>

        * AUTHORS: "Open Muscat" not "OmSee"; Updated the list of contributors
          (more work needed...)

Sat Apr 10 16:41:28 BST 2004  Olly Betts <olly@survex.com>

        * m4/xapian.m4: Make XO_LIB_XAPIAN with no arguments do what most
          users will want: check for Xapian and fail if it's not found,
          or AC_SUBST XAPIAN_CXXFLAGS and XAPIAN_LIBS if it is.  Those
          will unusual needs can supply one or both arguments as at
          present.

Sat Apr 10 15:00:28 BST 2004  Olly Betts <olly@survex.com>

        * docs/todo.xml: Updated.

Sat Apr 10 00:32:07 BST 2004  Olly Betts <olly@survex.com>

        * PLATFORMS: Added success report for GCC 3.4 (prerelease).

Sat Apr 10 00:27:58 BST 2004  Olly Betts <olly@survex.com>

        * extra/xapian/queryparser.h: Added doxygen documentation comments.

Sat Apr 10 00:23:13 BST 2004  Olly Betts <olly@survex.com>

        * testsuite/testsuite.cc: Removed a now superfluous line.

Sat Apr 10 00:21:15 BST 2004  Olly Betts <olly@survex.com>

        * testsuite/testsuite.cc: Give a more accurate message if valgrind
          spots a test doing something dodgy (e.g. free() of memory allocated
          with new).

Thu Apr 08 17:22:20 BST 2004  Olly Betts <olly@survex.com>

        * net/.cvsignore: No longer need to ignore readquery.cc.

Thu Apr 08 17:19:43 BST 2004  Olly Betts <olly@survex.com>

        * include/xapian/base.h: Note in doxygen comment why the ref_count
          is mutable.

Thu Apr 08 15:33:16 BST 2004  Olly Betts <olly@survex.com>

        * testsuite/testsuite.cc: valgrinding code needs errno.h too.

Thu Apr 08 15:28:44 BST 2004  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Make Xapian::Weight::Weight() protected
          rather than private as we want to be able to call it from derived
          classes (GCC 3.4 flags this, other compilers seem to miss it).

Tue Apr 06 03:32:39 BST 2004  Olly Betts <olly@survex.com>

        * net/omerr_string.cc,include/xapian/error.h,
          include/xapian/errortypes.h,include/xapian/output.h:
          Fixed some doxygen warnings.

Mon Apr 05 17:21:06 BST 2004  Olly Betts <olly@survex.com>

        * README: There never was an Omsee release - the last BrightStation
          release was "OpenMuscat 0.4.1".

Mon Apr 05 17:19:38 BST 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_database.cc,
          backends/quartz/quartz_database.h: Make the flush criterion 1000
          documents changed (added, removed, or replaced) as that seems to
          perform much better over a wide variety of document sizes.

Thu Apr 01 01:04:17 BST 2004  Olly Betts <olly@survex.com>

        * tests/quartztest.cc: Fixed temporary directory used (a slash was
          missing).

Thu Apr 01 00:39:59 BST 2004  Olly Betts <olly@survex.com>

        * docs/todo.xml: Updated.

Fri Mar 26 22:33:30 GMT 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_database.cc: Fix problems with termfreq and
          collfreq in postlist getting out of step when a recently modified
          or deleted document is deleted or remodified.

Fri Mar 26 12:31:24 GMT 2004  Olly Betts <olly@survex.com>

        * configure.in: Fixed check for --enable-runtime-pseudo-reloc.

Fri Mar 26 12:31:00 GMT 2004  Olly Betts <olly@survex.com>

        * bin/Makefile.am: Removed spurious "-lz" from quartzdump_LDADD.

Thu Mar 25 00:22:13 GMT 2004  Olly Betts <olly@survex.com>

        * bin/quartzcheck.cc: Check the structure with the postlist Btree
          as well as the Btree structures themselves.

Sun Mar 21 00:00:59 GMT 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_table_manager.cc: Fix for building on mingw.

Sat Mar 20 23:04:27 GMT 2004  Olly Betts <olly@survex.com>

        * include/xapian/positioniterator.h,include/xapian/postingiterator.h:
          Add doxygen comments in front of PostingIterator and
          PositionListIterator classes so that doxygen pulls out the
          existing documentation for their methods.

Sat Mar 20 16:23:13 GMT 2004  Olly Betts <olly@survex.com>

        * configure.in,backends/quartz/quartz_table_manager.cc,common/utils.h:
          Added configure test for link() to avoid infinite loop on mingw!

Thu Mar 18 12:20:18 GMT 2004  Olly Betts <olly@survex.com>

        * configure.in: Improved the --enable-runtime-pseudo-reloc check.

Thu Mar 18 00:45:15 GMT 2004  Olly Betts <olly@survex.com>

        * bin/Makefile.am,tests/Makefile.am: Pass the magic mingw/cygwin flag
          when linking the programs in bin and tests.

Thu Mar 18 00:33:22 GMT 2004  Olly Betts <olly@survex.com>

        * configure.in,xapian-config.in: mingw and cygwin both need
          -Wl,--enable-runtime-pseudo-reloc passing when linking.
          Arrange for xapian-config to include this, and check that
          the ld installed is a new enough version (or at least that
          it was at configure time).

Tue Mar 16 01:40:43 GMT 2004  Olly Betts <olly@survex.com>

        * docs/matcherdesign.html: Merged in more details from a message I
          sent to the mailing list.

Mon Mar 15 20:39:21 GMT 2004  Olly Betts <olly@survex.com>

        * tests/quartztest.cc: Fail the test if there's still a directory after
          rmdir(), or there isn't a directory after mkdir().  Close a
          QuartzDatabase or QuartzWritableDatabase before trying to overwrite
          it - cygwin doesn't allow use to delete open/locked files...

Mon Mar 15 20:38:11 GMT 2004  Olly Betts <olly@survex.com>

        * backends/database.cc: Database::Internal::Internal::keep_alive()
          should be Database::Internal::keep_alive().

Mon Mar 15 17:20:58 GMT 2004  Olly Betts <olly@survex.com>

        * include/xapian/base.h: Returning a void result makes SGI's compiler
          complain - don't!

Mon Mar 15 14:34:44 GMT 2004  Olly Betts <olly@survex.com>

        * common/omdebug.cc: Only use O_SYNC (on the debug log) if we have it.

Sun Mar 14 17:48:52 GMT 2004  Olly Betts <olly@survex.com>

        * tests/runtest.in: Mark with @configure_input@.

Thu Mar 11 23:53:43 GMT 2004  Olly Betts <olly@survex.com>

        * common/database.h,common/termlist.h,include/xapian/database.h,
          include/xapian/enquire.h: Attempted fixes for warnings given by
          SGI's MIPSpro C++ compiler.

Thu Mar 11 23:51:10 GMT 2004  Olly Betts <olly@survex.com>

        * configure.in: GCC 2.95 supported -Wno-long-long and is our minimum
          recommended version, so unconditionally use -Wno-long-long with
          GCC, and don't test for it on other compilers (the test incorrectly
          decided to use it with SGI's compiler leading to a warning for
          every file compiled).

Thu Mar 11 17:29:24 GMT 2004  Olly Betts <olly@survex.com>

        * docs/intro_ir.html: Added a link to "Information Retrieval"
          by Keith v.R. which can be read on his website!

Thu Mar 11 17:12:35 GMT 2004  Olly Betts <olly@survex.com>

        * PLATFORMS: Added IRIX success reports from Jim Lynch.

Thu Mar 11 12:17:21 GMT 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_database.cc: Fixes for Sun C++'s fussy
          template matching.

Thu Mar 11 12:12:46 GMT 2004  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Another friend fix for Sun's C++.

Thu Mar 11 01:56:19 GMT 2004  Olly Betts <olly@survex.com>

        * include/xapian/query.h: Another fix for Sun's C++.

Tue Mar 09 21:02:08 GMT 2004  Olly Betts <olly@survex.com>

        * include/xapian/document.h: string -> std::string.

Tue Mar 09 19:04:48 GMT 2004  Olly Betts <olly@survex.com>

        * api/omdocument.cc,common/document.h,include/xapian/document.h,
          tests/api_db.cc,tests/api_posdb.cc: Renamed
          Xapian::Document::add_term_nopos to Xapian::Document::add_term
          (with forwarding wrapper method for compatibility with existing
          code).

Sat Mar 06 02:32:58 GMT 2004  Olly Betts <olly@survex.com>

        * docs/: Updated the quickstart tutorial and removed the warning
          that "this document isn't up to date".

Sat Mar 06 01:56:17 GMT 2004  Olly Betts <olly@survex.com>

        * api/omenquire.cc: Another tweak for Sun's C++ compiler.

Sat Mar 06 01:31:29 GMT 2004  Olly Betts <olly@survex.com>

        * common/omenquireinternal.h: Tweaked friend class declarations a
          bit so Sun's C++ compiler can cope.

Thu Mar 04 23:58:17 GMT 2004  Olly Betts <olly@survex.com>

        * PLATFORMS: Updated with results from the tinderbox.

Thu Mar 04 23:29:28 GMT 2004  Olly Betts <olly@survex.com>

        * tests/btreetest.cc,tests/quartztest.cc: NetBSD mkdir() doesn't cope
          with a trailing / on the path - fixed our code to cope with this.

Wed Mar 03 19:14:09 GMT 2004  Olly Betts <olly@survex.com>

        * docs/todo.xml: Updated.

Fri Feb 13 23:56:44 GMT 2004  Olly Betts <olly@survex.com>

        * api/omquery.cc,tests/api_nodb.cc: Throw error when an empty query is
          used to build in the binary operator Query ctor.  Added regression
          test.

Fri Feb 13 15:08:09 GMT 2004  Olly Betts <olly@survex.com>

        * HACKING: XAPIAN_DEBUG_TYPES should be XAPIAN_DEBUG_FLAGS.

Sat Feb 07 14:26:54 GMT 2004  Olly Betts <olly@survex.com>

        * docs/queryparser.html: Grammar fixes.

Fri Jan 16 02:06:53 GMT 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_postlist.cc: Fixed bug flagged up by deldoc4.

Thu Jan 15 01:00:48 GMT 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_termlist.cc: Use Xapian::doccount instead of
          unsigned int in set_entries().

Thu Jan 15 00:56:47 GMT 2004  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc,backends/quartz/btree.h,
          testsuite/btreecheck.cc: Made some static functions into static
          member functions of Btree so we can avoid duplicating code in
          btreecheck.cc.  Also tweaked compare_keys to use memcmp and
          special case when the keys are the same length (each of these
          changes gives a very small speed gain).

Thu Jan 15 00:54:47 GMT 2004  Olly Betts <olly@survex.com>

        * api/maptermlist.h: Removed a FIXME which already had been fixed.
          Removed a couple of asserts from a function which should never be
          called (and so had `Assert(false)' anyway).

Mon Jan 12 00:32:37 GMT 2004  Olly Betts <olly@survex.com>

        * bin/quartzdump.cc: Backslash escape space and backslash in output
          rather than hex encoding them; renamed start-term and end-term to
          start-key and end-key; removed rather pointless "Calling next"
          message; if there's an error, write it to stderr not stdout, and
          exit with return code 1.

Sun Jan 11 03:23:17 GMT 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_termlist.cc: When possible, pack the wdf into
          the same byte as the reuse length - doing so typically makes the
          termlist 14% smaller!  This change is backward compatible.

Sat Jan 10 03:04:22 GMT 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_postlist.cc: Fixed bug in new postlist
          chunking code.

Sat Jan 10 00:45:04 GMT 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_termlist.cc: Removed unused
          OLD_TERMLIST_FORMAT code.

Fri Jan 09 21:54:34 GMT 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_postlist.cc: Fix incorrect code which just
          happens to build and work with GCC 2.95.

Fri Jan 09 14:40:00 GMT 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_postlist.cc: Tidied the initial call to
          get_chunk() out of the merge loop (gives ~4% speedup!)

Fri Jan 09 01:31:05 GMT 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_postlist.cc: Implement chunking of postlists
          once again.

Thu Jan 08 21:06:37 GMT 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_postlist.cc: Shortcut the very common case
          of appending to a posting list (which happens when we're just
          adding new documents).  Declare small helper functions as "inline".

Wed Jan 07 23:21:59 GMT 2004  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_database.cc: Set threshold for flushing to
          a saner value for the value we are now using.
        * backends/quartz/: Use freq_deltas to update the stats in the first
          chunk of each postlist.

Mon Jan 05 16:00:07 GMT 2004  Olly Betts <olly@survex.com>

        * include/xapian/enquire.h: Made the TradWeight constructor explicit.
          This is technically an API change as before you could pass a
          double where a Xapian::Weight was required - now you must pass
          Xapian::TradWeight(2.0) instead of 2.0.  That seems desirable, and
          it's unlikely any existing code will be affected.

Mon Jan 05 15:08:26 GMT 2004  Olly Betts <olly@survex.com>

        * include/xapian/: Added "explicit" qualifier to internal ctors
          which take a single parameter.

Mon Jan 05 15:04:12 GMT 2004  Olly Betts <olly@survex.com>

        * include/xapian/base.h: Assigning a normal pointer to a RefCntPtr no
          longer creates a temporary RefCntPtr from it.

Thu Dec 25 05:49:03 GMT 2003  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_postlist.cc: Changed to merge a batch of
          changes into a posting list in one pass.

Thu Dec 25 05:48:09 GMT 2003  Olly Betts <olly@survex.com>

        * docs/quartzdesign.html: Some minor improvements.

Thu Dec 25 05:39:57 GMT 2003  Olly Betts <olly@survex.com>

        * tests/api_db.cc: Check returned docids are the expected values in a
          couple more cases.  Improved wording of a comment.

Thu Dec 25 05:38:43 GMT 2003  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_utils.h: Updated explanation of string
          encoding.

Thu Dec 25 05:37:36 GMT 2003  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_values.cc: Fixed problem with dereferencing
          a pointer to the end of a string in debug output.

Sun Dec 21 23:35:49 GMT 2003  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_postlist.cc: Refactor recently relocated code
          to reduce duplication.

Sun Dec 21 21:44:07 GMT 2003  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_postlist.cc: Renamed
          skip_and_check_tname_in_key() to check_tname_in_key() as it doesn't
          do any sort of skipping!

Sun Dec 21 14:54:49 GMT 2003  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_postlist.cc,backends/quartz/quartz_postlist.h,
          tests/quartztest.cc: Subsumed QuartzPostList::add_entry and
          QuartzPostList::delete_entry into QuartzPostList::merge_changes.

Sun Dec 21 03:21:42 GMT 2003  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_database.cc,
          backends/quartz/quartz_postlist.cc,
          backends/quartz/quartz_postlist.h: Move merging on postlist changes
          into QuartzPostList in preparation for an efficient
          reimplementation.

Sun Dec 21 01:47:07 GMT 2003  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_postlist.h,
          backends/quartz/quartz_table_entries.h: Fixed typos and incorrect
          comments.

Sat Dec 20 22:11:26 GMT 2003  Olly Betts <olly@survex.com>

        * backends/quartz/: Removed several needless inclusions of
          quartz_table_entries.h.

Sat Dec 20 16:31:46 GMT 2003  Olly Betts <olly@survex.com>

        * backends/quartz/,docs/quartzdesign.html: Removed all the quartz
          lexicon code and docs.  It's been disabled for ages, and we've
          not missed it.

Sat Dec 20 01:21:47 GMT 2003  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_database.h: Added doxygen comments for the
          QuartzWritableDatabase members we use to buffer changes.

Sat Dec 20 01:19:10 GMT 2003  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_database.cc: Trigger autoflush on
          totlen_added + totlen_removed rather than specially tracking the
          number of document add/delete/replace operations.

Fri Dec 19 22:51:26 GMT 2003  Olly Betts <olly@survex.com>

        * backends/quartz/: Buffer up changes to the postlists and apply them
          all at once (at present they're applied inefficiently, but this is
          change enables us to apply them with an efficient merge).
        * tests/api_db.cc,tests/quartztest.cc: Added a couple of tests, and
          commented out some test lines which fail in debug builds.

Sun Dec 14 03:38:55 GMT 2003  Olly Betts <olly@survex.com>

        * common/omdebug.cc: Open debug log with flag O_WRONLY so that we can
          actually write to it!

Mon Dec 08 01:53:24 GMT 2003  Olly Betts <olly@survex.com>

        * HACKING: Update to mention that building from CVS requires
          ./configure --enable-maintainer-mode (or use bootstrap).

Mon Dec 01 19:03:00 GMT 2003  Olly Betts <olly@survex.com>

        * configure.in: Fixed the "fixed" valgrind test.

Sun Nov 30 23:42:52 GMT 2003  Olly Betts <olly@survex.com>

        * configure.in,testsuite/testsuite.cc: Fix test for valgrind - it
          wasn't working correctly when valgrind was installed but was too
          a version to support VALGRIND_COUNT_ERRORS and VALGRIND_COUNT_LEAKS.

Wed Nov 26 16:31:19 GMT 2003  Olly Betts <olly@survex.com>

        * Makefile.am,extra/Makefile.am: Updated libtool -version-info
          parameters for 0.7.5.

Wed Nov 26 15:32:45 GMT 2003  Olly Betts <olly@survex.com>

        * NEWS,PLATFORMS,configure.in: Version 0.7.5.

Wed Nov 26 15:31:56 GMT 2003  Olly Betts <olly@survex.com>

        * extra/queryparser.yy: Special case stemming language "none".

Tue Nov 25 04:37:50 GMT 2003  Olly Betts <olly@survex.com>

        * api/ompositionlistiterator.cc,api/ompostlistiterator.cc,
          include/xapian/positioniterator.h,include/xapian/postingiterator.h,
          tests/api_db.cc: Added missing default ctors for PostingIterator and
          PositionIterator classes; fixed PositionIterator assignment operator.

Tue Nov 25 03:40:11 GMT 2003  Olly Betts <olly@survex.com>

        * tests/btreetest.cc: Fixed 2 compiler warnings.

Tue Nov 25 02:47:16 GMT 2003  Olly Betts <olly@survex.com>

        * common/,include/xapian/: Fixed incorrect doxygen comments which
          resulted in some missing text in the collated API and internal
          classes documentation.

Fri Nov 21 03:23:57 GMT 2003  Olly Betts <olly@survex.com>

        * Makefile.am,include/xapian/termiterator.h,api/omtermlistiterator.cc:
          TermIterator::TermIterator() fix which actually works!

Fri Nov 21 01:14:23 GMT 2003  Olly Betts <olly@survex.com>

        * HACKING,configure.in,docs/Makefile.am,extra/Makefile.am: Change to
          using AM_MAINTAINER_MODE.  If you're doing development work on
          Xapian, you should configure with "--enable-maintainer-mode" and
          ideally use GNU make.

Fri Nov 21 01:13:25 GMT 2003  Olly Betts <olly@survex.com>

        * include/xapian/termiterator.h,tests/api_nodb.cc: Added TermIterator
          default ctor which had disappeared somehow.  Added regression test.

Thu Nov 20 03:19:37 GMT 2003  Olly Betts <olly@survex.com>

        * configure.in: Fixed test for fdatasync to work (I suspect a change
          in a recent autoconf broke it as it relied on autoconf internal
          naming).

Tue Nov 18 17:53:29 GMT 2003  Olly Betts <olly@survex.com>

        * extra/Makefile.am: Tweaked workaround for FreeBSD make in VPATH
          builds.

Tue Nov 18 17:53:01 GMT 2003  Olly Betts <olly@survex.com>

        * extra/queryparsertest.cc: Added another testcase.

Tue Nov 18 17:37:20 GMT 2003  Olly Betts <olly@survex.com>

        * docs/: Added first cut of documentation for Xapian::QueryParser
          query syntax.
        * docs/scalability.html: Fixed typo.

Fri Oct 31 18:17:13 GMT 2003  Olly Betts <olly@survex.com>

        * extra/queryparser.yy,extra/queryparsertest.cc: Added support for
          term prefixes on phrases and expressions (e.g. author:(twain OR poe)
          subject:"space flight").

Tue Oct 28 15:03:01 GMT 2003  Olly Betts <olly@survex.com>

        * api/omenquire.cc: Added FIXME comment.

Tue Oct 28 15:01:14 GMT 2003  Olly Betts <olly@survex.com>

        * docs/todo.xml: Removed Java from list of language bindings we'd
          like to support, as we should have up-to-date Java bindings soon.

Sun Oct 26 20:18:24 GMT 2003  Olly Betts <olly@survex.com>

        * bin/quartzcompact.cc: Fix the name that the meta file gets copied
          to (was /path/to/dbdirmeta rather than /path/to/dbdir/meta).

Tue Oct 21 22:26:51 BST 2003  Olly Betts <olly@survex.com>

        * extra/Makefile.am: Backed out previous change - the original rule
          does work, but the build machine had a generated file which stopped
          the symlink being generated.

Tue Oct 21 22:14:22 BST 2003  Olly Betts <olly@survex.com>

        * extra/Makefile.am: Tweaked rule to symlink queryparser.cc.

Tue Oct 21 17:31:10 BST 2003  Olly Betts <olly@survex.com>

        * extra/Makefile.am: Added rule to symlink queryparser.cc from source
          tree to build tree - otherwise FreeBSD's make insists on
          regenerating it...

Wed Oct 08 14:04:44 BST 2003  Olly Betts <olly@survex.com>

        * backends/quartz/.cvsignore,tests/Makefile.am,testsuite/.cvsignore:
          Updated to reflect move of libbtreecheck.la from backends/quartz
          to testsuite.

Wed Oct 08 13:22:08 BST 2003  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: Don't pass mode argument to open when we
          aren't specifying O_CREAT.

Thu Oct 02 15:29:38 BST 2003  Olly Betts <olly@survex.com>

        * NEWS: Another entry for omega for 0.7.4.

Thu Oct 02 14:57:25 BST 2003  Olly Betts <olly@survex.com>

        * configure.in,extra/Makefile.am: Version 0.7.4.

Thu Oct 02 14:56:36 BST 2003  Olly Betts <olly@survex.com>

        * HACKING: Improved wording in a few places.

Thu Oct 02 14:39:49 BST 2003  Olly Betts <olly@survex.com>

        * NEWS: Updated.

Thu Oct 02 13:35:46 BST 2003  Olly Betts <olly@survex.com>

        * xapian.spec.in: Don't hardcode the shared library versioning info.

Wed Oct 01 13:51:15 BST 2003  Olly Betts <olly@survex.com>

        * PLATFORMS: Updated - Solaris 8 + Sun Workshop C++ doesn't actually
          pass "make check" (I forgot the tinderbox builds omega before "make
          check").

Tue Sep 30 21:39:20 BST 2003  Olly Betts <olly@survex.com>

        * configure.in: Another stab at fixing the test for -lsocket.

Tue Sep 30 18:29:31 BST 2003  Olly Betts <olly@survex.com>

        * configure.in: Quote arguments to test in a couple of places.

Tue Sep 30 11:20:09 BST 2003  Olly Betts <olly@survex.com>

        * configure.in: Fixed test for -lsocket.

Tue Sep 30 10:17:09 BST 2003  Olly Betts <olly@survex.com>

        * PLATFORMS: Updated - Solaris 8 + Sun Workshop C++ builds and passes
          "make check" (but Omega fails to build).

Mon Sep 29 00:41:19 BST 2003  Olly Betts <olly@survex.com>

        * configure.in: Fixed dependency libs for libxapian.

Sun Sep 28 23:55:49 BST 2003  Olly Betts <olly@survex.com>

        * Makefile.am,backends/quartz/Makefile.am,
          backends/quartz/btreecheck.cc,backends/quartz/btreecheck.h,
          bin/Makefile.am,testsuite/Makefile.am,testsuite/btreecheck.cc,
          testsuite/btreecheck.h: libbtreecheck.la now has an explicit
          dependency on libxapian.la.

Sun Sep 28 17:29:55 BST 2003  Olly Betts <olly@survex.com>

        * Makefile.am,configure.in: Tell libtool about any libraries which
          libxapian needs to depend on.

Fri Sep 26 09:39:29 BST 2003  Olly Betts <olly@survex.com>

        * bin/Makefile.am: Swap order of libbtreecheck.la and libxapian.la
          when linking quartzcheck to see if that gets it to work with
          Sun's CC.

Thu Sep 25 17:25:17 BST 2003  Olly Betts <olly@survex.com>

        * xapian-config.in: Fixed stupid mistake in previous check-in.

Thu Sep 25 16:50:00 BST 2003  Olly Betts <olly@survex.com>

        * xapian-config.in: Link with libxapianqueryparser before libxapian,
          since that's the dependency order.

Thu Sep 25 16:43:20 BST 2003  Olly Betts <olly@survex.com>

        * include/om/om.h: Updated comment about why we `#include <iostream>'.

Thu Sep 25 13:13:37 BST 2003  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc,backends/database.cc,common/omdebug.cc,
          common/omstringstream.h,include/xapian/output.h: Removed or replaced
          uses of <iostream> and <iosfwd> - we don't need or want the library
          to pull in cin and friends.

Thu Sep 25 13:12:31 BST 2003  Olly Betts <olly@survex.com>

        * Makefile.am: Improved several comments.

Thu Sep 25 11:57:03 BST 2003  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc: Removed `#include <iostream>' left over from
          debugging; changed to `using namespace std;'.

Mon Sep 15 00:41:10 BST 2003  Olly Betts <olly@survex.com>

        * extra/queryparser.yy: Fixed to build with Sun's C++ compiler.

Thu Sep 11 03:35:29 BST 2003  Olly Betts <olly@survex.com>

        * dummy.c,dummy.cc,Makefile.am: Change the default file to be C++ so
          that automake tells libtool that this is a C++ library.
        * Makefile.am: Pass -no-undefined to libtool so that it will build
          a DLL on MS Windows.

Wed Sep 10 02:53:46 BST 2003  Olly Betts <olly@survex.com>

        * docs/scalability.html: Fixed oops (32GB should be 32TB);  Added
          note about Linux 2.4 and ext2 filesize limits.

Tue Sep 09 03:36:05 BST 2003  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_database.cc: don't start the document's
          TermIterator from scratch on every iteration in replace_document().
          Should be a small performance win.

Sun Sep 07 22:17:27 BST 2003  Olly Betts <olly@survex.com>

        * configure.in: Fixed check for socketpair - we were automatically
          disabling the remote backend on platforms where socketpair is
          in libsocket (such as Solaris).

Sun Sep 07 19:56:57 BST 2003  Olly Betts <olly@survex.com>

        * PLATFORMS: Added success report for cygwin from Eric B. Ridge.

Sun Sep 07 03:53:48 BST 2003  Olly Betts <olly@survex.com>

        * testsuite/testsuite.cc: Also need to rerun test if it "probably
          leaked".

Sun Sep 07 03:51:37 BST 2003  Olly Betts <olly@survex.com>

        * tests/api_db.cc: Use x & (x - 1) trick to check for x being a power
          of 2, rather than an elaborate loop with shifting; use Xapian::docid
          rather than "int" and "unsigned int".

Sun Sep 07 02:24:06 BST 2003  Olly Betts <olly@survex.com>

        * api/omenquire.cc: Fixed small memory leak if
          Xapian::Enquire::set_query() is called more than once.

Sun Sep 07 02:12:47 BST 2003  Olly Betts <olly@survex.com>

        * common/omenquireinternal.h,include/xapian/enquire.h: Fixed
          Xapian::ESet to have reference counted internals
        * Makefile.am: bumped libxapian version-info to 1:0:0 because of this.

Sun Sep 07 02:09:50 BST 2003  Olly Betts <olly@survex.com>

        * testsuite/testsuite.cc: Delete any buffered test output before
          asking valgrind to check for leaks, as otherwise the buffered
          output may be reported as a leak; also fixed |= to != in several
          places - a cosmetic bug which lead to extra newlines after test
          output.

Sun Sep 07 00:09:32 BST 2003  Olly Betts <olly@survex.com>

        * testsuite/testsuite.cc: Actually open temporary file for valgrind
          to log to.

Sat Sep 06 20:50:58 BST 2003  Olly Betts <olly@survex.com>

        * configure.in,testsuite/testsuite.cc: Fixed up detection of valgrind
          and testsuite code to use it.

Sat Sep 06 20:48:17 BST 2003  Olly Betts <olly@survex.com>

        * tests/btreetest.cc: Reinstated non-superfluous `/'s which I had
          overeagerly removed!

Sat Sep 06 17:28:00 BST 2003  Olly Betts <olly@survex.com>

        * matcher/Makefile.am: Ship networkmatch.cc even if "make dist" is run
          from a tree with the remote backend disabled.

Thu Aug 28 00:01:22 BST 2003  Olly Betts <olly@survex.com>

        * tests/btreetest.cc: Removed superfluous `/'s from constructed paths.

Fri Aug 15 15:12:24 BST 2003  Olly Betts <olly@survex.com>

        * PLATFORMS: Updated with current testsuite results for mingw build.

Fri Aug 15 15:10:59 BST 2003  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: Use O_BINARY for database I/O if it
          exists.

Fri Aug 15 15:10:30 BST 2003  Olly Betts <olly@survex.com>

        * common/utils.h: mkdir() only takes one argument on mingw.

Fri Aug 15 01:26:22 BST 2003  Olly Betts <olly@survex.com>

        * common/utils.h,testsuite/backendmanager.cc: Touch file using
          open() rather than system().

Fri Aug 15 01:06:06 BST 2003  Olly Betts <olly@survex.com>

        * common/utils.h: Fixed parameter name of system from "filename" to
          "command" (cosmetic change).

Thu Aug 14 22:31:23 BST 2003  Olly Betts <olly@survex.com>

        * net/progclient.cc: Tidied a little.

Tue Aug 12 12:50:19 BST 2003  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_database.cc: Pass 0 for the lexicon/postlist
          table when creating a termlist just to find the doc length.

Tue Aug 12 02:08:50 BST 2003  Olly Betts <olly@survex.com>

        * api/maptermlist.h,api/omdocument.cc,common/documentterm.h:
          Removed unused OmDocumentTerm::termfreq member variable.

Tue Aug 12 00:53:02 BST 2003  Olly Betts <olly@survex.com>

        * api/omdocument.cc,common/documentterm.h: OmDocumentTerm ctor now
          takes wdf, and replaced set_wdf() with inc_wdf() and dec_wdf().

Mon Aug 11 16:11:26 BST 2003  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_table_entries.cc: Removed rather unnecessary
          use of const_cast.

Mon Aug 11 16:11:05 BST 2003  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_table.cc: Removed unused variable.

Mon Aug 11 16:09:57 BST 2003  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_postlist.cc: Fixed typo in comment.

Mon Aug 11 15:51:20 BST 2003  Olly Betts <olly@survex.com>

        * tests/quartztest.cc: adddoc2 now checks that there weren't any extra
          values created.

Mon Aug 11 12:55:49 BST 2003  Olly Betts <olly@survex.com>

        * configure.in: Sorted out tests for gethostbyname and gethostbyaddr
          using standard autoconf macros.

Mon Aug 11 12:05:13 BST 2003  Olly Betts <olly@survex.com>

        * common/match.h,matcher/: Removed unused open_document() method from
          SubMatch and derived classes; calls made by the matcher to
          Document::Internal::open_document() now use the lazy flag provided
          for precisely this purpose, but apparently never used - this should
          give quite a speed boost to any matcher options which use values
          (e.g. sort, collapse).

Sun Aug 10 02:25:59 BST 2003  Olly Betts <olly@survex.com>

        * PLATFORMS: Out of curiosity, I tried to build with a Linux->DJGPP
          cross-compiler I had to hand.  It built (just had to disable the
          remote backend if socketpair isn't found and add the workaround for
          not having snprintf).

Sun Aug 10 01:38:17 BST 2003  Olly Betts <olly@survex.com>

        * common/utils.cc: Fixed to compile if snprintf isn't available.

Sun Aug 10 01:37:44 BST 2003  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: Fixed "initialisation reordered" warning.

Sun Aug 10 01:26:58 BST 2003  Olly Betts <olly@survex.com>

        * acinclude.m4: Updated in line with previous change.

Sun Aug 10 01:00:08 BST 2003  Olly Betts <olly@survex.com>

        * configure.in: If fork is found, but socketpair isn't, automatically
          disable the remote backend rather than configure dying with an
          error.
        * autoconf/: Removed various unused autoconf macros.

Sat Aug 09 23:57:44 BST 2003  Olly Betts <olly@survex.com>

        * backends/quartz/btree.h: Made "overwritten" protected.

Sat Aug 09 23:45:26 BST 2003  Olly Betts <olly@survex.com>

        * docs/quartzdesign.html: Wrapped an overlong line.

Sat Aug 09 23:31:30 BST 2003  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc,backends/quartz/btree.h,
          backends/quartz/quartz_table.cc,docs/quartzdesign.html:
          Improved class Btree's encapsulation.

Sat Aug 09 22:30:13 BST 2003  Olly Betts <olly@survex.com>

        * NEWS: Fixed a few typos.

Sat Aug 09 22:29:52 BST 2003  Olly Betts <olly@survex.com>

        * PLATFORMS: Updated with results from the Tinderbox.

Sat Aug 09 22:19:12 BST 2003  Fabrice Colin

        * xapian.spec.in: Updated RPM packaging to reflect changes in 0.7.3.

Fri Aug 08 01:38:40 BST 2003  Olly Betts <olly@survex.com>

        * Makefile.am,configure.in,extra/Makefile.am: Version 0.7.3.

Fri Aug 08 01:35:04 BST 2003  Olly Betts <olly@survex.com>

        * NEWS: Updated.

Fri Aug 08 01:34:29 BST 2003  Olly Betts <olly@survex.com>

        * PLATFORMS: Updated with more tinderbox results.

Wed Aug 06 16:27:34 BST 2003  Olly Betts <olly@survex.com>

        * HACKING: Noted that libtool 1.5 is the first version to actually
          support linking C++ libraries properly.

Wed Aug 06 16:25:15 BST 2003  Olly Betts <olly@survex.com>

        * api/omenquire.cc,net/socketcommon.cc,common/omenquireinternal.h:
          Moved rset serialisation into a method of RSet::Internal, so
          omrset_to_string() is now just glue code.  This eliminates the
          need for it to be a friend of RSet::Internal which Sun's C++
          compiler didn't seem to be able to cope with.

Wed Aug 06 01:57:11 BST 2003  Olly Betts <olly@survex.com>

        * api/omenquire.cc: Applied patch from Olivier Galibert to fix
          MSetIterator::get_document() when get_mset() was called with
          first != 0.
        * tests/api_db.cc: Added regression test (msetiterator3).

Mon Aug 04 12:40:25 BST 2003  Olly Betts <olly@survex.com>

        * languages/Makefile.am: Fixed compilation for compilers other than
          GCC.

Wed Jul 30 17:03:14 BST 2003  Olly Betts <olly@survex.com>

        * common/getopt.h: Another try - the previous one failed on FreeBSD.

Wed Jul 30 15:07:58 BST 2003  Olly Betts <olly@survex.com>

        * common/getopt.h: Another iteration of the getopt C++ prototype fix
          as the previous one failed on Solaris.

Wed Jul 30 02:38:47 BST 2003  Olly Betts <olly@survex.com>

        * testsuite/backendmanager.cc: Fixed breakage caused by remotetest
          cleanup.

Tue Jul 29 13:22:20 BST 2003  Olly Betts <olly@survex.com>

        * tests/remotetest.cc: Cleaned up uses of
          BackendManager::get_database() to pass a string rather than a vector
          with one string in.

Tue Jul 29 11:58:21 BST 2003  Olly Betts <olly@survex.com>

        * testsuite/testutils.cc: Added output of const vector<unsigned int>
          for platforms which use our internal stringstream implementation.

Tue Jul 29 11:42:54 BST 2003  Olly Betts <olly@survex.com>

        * PLATFORMS: Updated with results from the tinderbox.

Tue Jul 29 01:21:53 BST 2003  Olly Betts <olly@survex.com>

        * testsuite/testsuite.cc,testsuite/testsuite.h: Only use \r in test
          output if the output is a tty.

Mon Jul 28 23:56:10 BST 2003  Olly Betts <olly@survex.com>

        * xapian-config.in: Fixed fix of --cxxflags for uninstalled VPATH
          builds.

Mon Jul 28 23:37:15 BST 2003  Olly Betts <olly@survex.com>

        * testsuite/backendmanager.cc: Increased default timeout used by
          tests running on the remote backend from 10 seconds to 5 minutes
          to avoid tests failing just because the machine running them is
          slow and/or busy.

Mon Jul 28 15:41:12 BST 2003  Olly Betts <olly@survex.com>

        * testsuite/testutils.h: Fixed check for broken exception handling
          - we were getting "Xapian::" prefixed to one version and not on the
          other.

Mon Jul 28 15:34:54 BST 2003  Olly Betts <olly@survex.com>

        * tests/runtest.in: Set srcdir if it isn't already to make it easy
          to manually run test programs from a VPATH build.

Mon Jul 28 10:38:04 BST 2003  Olly Betts <olly@survex.com>

        * xapian-config.in: Fixed --cxxflags for uninstalled VPATH builds.

Mon Jul 28 10:37:17 BST 2003  Olly Betts <olly@survex.com>

        * PLATFORMS: Updated FreeBSD success report.

Sun Jul 27 16:01:25 BST 2003  Olly Betts <olly@survex.com>

        * configure.in: Explicitly remove include/xapian/version.h from
          APIDOC_SRC to avoid us trying to run doxygen unnecessarily.

Sun Jul 27 14:31:36 BST 2003  Olly Betts <olly@survex.com>

        * docs/todo.xml: Assorted updates.

Sun Jul 27 13:02:36 BST 2003  Olly Betts <olly@survex.com>

        * extra/.cvsignore: We still create libomqueryparser.la for backward
          compatibility.

Sun Jul 27 04:56:40 BST 2003  Olly Betts <olly@survex.com>

        * xapian-config.in,m4/xapian.m4: Added --from-xo-lib-xapian option
          to xapian-config for use by XO_LIB_XAPIAN to allow us to give a
          more helpful error message if asked to link an uninstalled
          libxapian.

Sun Jul 27 04:46:48 BST 2003  Olly Betts <olly@survex.com>

        * xapian-config.in: Fixed --cxxflags in non-installed case.
          Tidied up --help output and error messages.

Sun Jul 27 01:40:39 BST 2003  Olly Betts <olly@survex.com>

        * tests/api_db.cc: Check termfreq in allterms4.

Sun Jul 27 01:39:57 BST 2003  Olly Betts <olly@survex.com>

        * extra/queryparsertest.cc: Fixed for relocated queryparser.h.

Sun Jul 27 00:59:56 BST 2003  Olly Betts <olly@survex.com>

        * .cvsignore,backends/quartz/.cvsignore,extra/.cvsignore: Updated.

Sun Jul 27 00:19:11 BST 2003  Olly Betts <olly@survex.com>

        * tests/Makefile.am: Oops, failed to remove btreecheck.cc reference
          in previous check-in.

Sat Jul 26 23:36:01 BST 2003  Olly Betts <olly@survex.com>

        * backends/quartz/Makefile.am,bin/Makefile.am,tests/Makefile.am:
          Hopefully fixed "make dist" in VPATH builds.

Sat Jul 26 22:58:27 BST 2003  Olly Betts <olly@survex.com>

        * backends/quartz/Makefile.am: Need to distribute btreecheck.cc.

Sat Jul 26 20:05:47 BST 2003  Olly Betts <olly@survex.com>

        * xapian-config.in,extra/Makefile.am,extra/queryparser.h,
          extra/queryparser.yy,extra/xapian/queryparser.h: Sorted out
          xapian-config so it handles using QueryParser too.

Sat Jul 26 19:03:04 BST 2003  Olly Betts <olly@survex.com>

        * xapian-config.in: Updated logic in --libs and --cxxflags in line
          with recent change in --ltlibs.

Sat Jul 26 18:31:11 BST 2003  Olly Betts <olly@survex.com>

        * xapian-config.in: Reworked logic for finding libxapian.la in
          --ltlibs - it may not yet exist in the non-installed case.
        * m4/xapian.m4: Don't pass --libs when checking if xapian-config
          works as it will fail in the non-installed case.

Sat Jul 26 01:25:46 BST 2003  Olly Betts <olly@survex.com>

        * NEWS: Updated.

Fri Jul 25 10:20:18 BST 2003  Olly Betts <olly@survex.com>

        * NEWS: Updated in preparation for 0.7.3 release.

Thu Jul 24 23:20:14 BST 2003  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_alltermslist.cc,
          backends/quartz/quartz_alltermslist.h,tests/api_db.cc:
          Fixed allterms TermIterator to not give duplicate terms with a
          quartz database when a posting list is chunked; added regression
          test (allterms4).

Mon Jul 21 15:06:59 BST 2003  Richard Boulton <richard@tartarus.org>

        * include/xapian/enquire.h: Fix incorrect documentation comment
          for Enquire::set_set_forward().  (Looked like a cut&paste error)

Mon Jul 21 01:10:55 BST 2003  Olly Betts <olly@survex.com>

        * docs/install.html,m4/xapian.m4: Added XO_LIB_XAPIAN to replace
          OM_PATH_XAPIAN.  XO_LIB_XAPIAN will automagically enable use of
          "xapian-config --ltlibs" if A[CM]_PROG_LIBTOOL is used in
          configure.in.

Sun Jul 20 16:00:43 BST 2003  Olly Betts <olly@survex.com>

        * .cvsignore,Makefile.am,configure.in,xapian-config.in,
          xapian-config.nodep.in: Reworked xapian-config so that it
          now supports linking with libtool - using libtool means that the
          run-time library path is set and that you can now link with an
          uninstalled libxapian.  Also xapian-config will now work
          once configure is run, rather than only after "make all".

Thu Jul 17 01:42:47 BST 2003  Olly Betts <olly@survex.com>

        * backends/quartz/bcursor.cc,backends/quartz/btree.cc: Check for
          EINTR when reading or writing blocks and retry the operation.

Thu Jul 17 00:56:35 BST 2003  Olly Betts <olly@survex.com>

        * COPYING: Updated FSF address, and reinstated missing section: "How
          to Apply These Terms to Your New Programs"

Thu Jul 17 00:48:40 BST 2003  Olly Betts <olly@survex.com>

        * HACKING,bootstrap: Removed bootstrap in favour of top-level
          bootstrap.

Mon Jul 14 23:36:14 BST 2003  Olly Betts <olly@survex.com>

        * PLATFORMS: Updated some linux results: RH7.3 on x86, and Debian on
          alpha and arm.

Mon Jul 14 23:33:17 BST 2003  Olly Betts <olly@survex.com>

        * configure.in,Makefile.am,extra/Makefile.am: Added versioning
          information to libxapian and libomqueryparser.

Mon Jul 14 23:32:15 BST 2003  Olly Betts <olly@survex.com>

        * bin/quartzdump.cc,testsuite/testsuite.cc: Added long option support
          to quartzdump, and to the testsuite programs.

Mon Jul 14 22:45:53 BST 2003  Olly Betts <olly@survex.com>

        * tests/internaltest.cc: Changed test exception1 to actually test
          something (hopefully what was originally intended!)

Mon Jul 14 17:15:28 BST 2003  Olly Betts <olly@survex.com>

        * common/getopt.h: #include <stdlib.h> before defining getopt as a
          macro - hopefully that'll avoid problems with clobbering prototypes
          of getopt() in system headers.

Sat Jul 12 09:15:26 BST 2003  Olly Betts <olly@survex.com>

        * bin/quartzcompact.cc: Need stdio.h for rename().

Sat Jul 12 01:11:54 BST 2003  Olly Betts <olly@survex.com>

        * HACKING: Noted another reason why libtool 1.5 is needed.

Sat Jul 12 01:11:08 BST 2003  Olly Betts <olly@survex.com>

        * docs/mkdoc.pl: Don't choke on a comment at the end of the
          DIST_SUBDIRS line in a Makefile.am.

Fri Jul 11 22:00:36 BST 2003  Olly Betts <olly@survex.com>

        * HACKING: Added note about additional tools needed for building a
          distribution.

Fri Jul 11 15:13:08 BST 2003  Olly Betts <olly@survex.com>

        * NEWS,PLATFORMS,configure.in: Version 0.7.2.

Fri Jul 11 12:36:18 BST 2003  Olly Betts <olly@survex.com>

        * NEWS: Updated in preparation for 0.7.2.

Fri Jul 11 12:12:40 BST 2003  Olly Betts <olly@survex.com>

        * configure.in: Fixed test for snprintf.

Fri Jul 11 09:37:14 BST 2003  Olly Betts <olly@survex.com>

        * testsuite/testsuite.cc: Fixed dereference of a NULL pointer which
          was happening when a test threw an unexpected exception.

Fri Jul 11 09:31:40 BST 2003  Olly Betts <olly@survex.com>

        * testsuite/backendmanager.cc: Backed out incorrect hunk of previous
          patch which was causing test failures.

Fri Jul 11 01:48:21 BST 2003  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_table_manager.cc,tests/quartztest.cc,
          testsuite/backendmanager.cc: Tidying up around directory creation.

Fri Jul 11 00:57:12 BST 2003  Olly Betts <olly@survex.com>

        * include/xapian/database.h: Document that the directory is created.

Fri Jul 11 00:53:59 BST 2003  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_table_manager.cc: When asked to create a
          quartz database, try to create the directory if it doesn't already
          exist.  Then we don't have to do it in every single Xapian program
          which wants to create a database...

Fri Jul 11 00:36:00 BST 2003  Olly Betts <olly@survex.com>

        * common/getopt.h: Removed space between \ and newline.

Fri Jul 11 00:32:40 BST 2003  Olly Betts <olly@survex.com>

        * PLATFORMS: Added MacOS X 10.2 success report.

Thu Jul 10 20:05:58 BST 2003  Olly Betts <olly@survex.com>

        * common/getopt.h: Fixed to work better with C++ compilers on
          non-glibc platforms.

Thu Jul 10 19:21:00 BST 2003  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: Modified setting of _XOPEN_SOURCE to
          actually work!

Thu Jul 10 19:19:30 BST 2003  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: Defined _XOPEN_SOURCE=500 for GLIBC
          so we get pread() and pwrite().

Thu Jul 10 00:28:25 BST 2003  Olly Betts <olly@survex.com>

        * HACKING,Makefile.am,configure.in,bindings/.cvsignore,
          bindings/Makefile.am,bindings/dir_contents,bindings/guile/.cvsignore,
          bindings/guile/Makefile.am,bindings/php4/.cvsignore,
          bindings/php4/ABOUT,bindings/php4/Makefile.am,bindings/python/,
          bindings/swig/,bindings/tcl8/.cvsignore,bindings/tcl8/Makefile.am,
          docs/todo.xml: Removed bindings - they'll shortly reappear in a
          separate module named xapian-bindings.

Thu Jul 10 00:03:04 BST 2003  Olly Betts <olly@survex.com>

        * bindings/swig/om_util_perl5.i: Removed.

Wed Jul 09 15:35:56 BST 2003  Olly Betts <olly@survex.com>

        * bindings/guile/Makefile.am,bindings/php4/Makefile.am,
          bindings/python/Makefile.am,bindings/swig/,
          bindings/tcl8/Makefile.am: Removed omtypes.i and merged omstem.i
          into xapian.i; added forward declaration for upwrapped classes
          to xapian.i.

Wed Jul 09 15:34:11 BST 2003  Olly Betts <olly@survex.com>

        * bindings/java/,bindings/java/com/muscat/om/,bindings/java/native/:
          Removed old Java bindings - we'll do them using SWIG instead.

Wed Jul 09 14:51:51 BST 2003  Olly Betts <olly@survex.com>

        * bindings/php4/Makefile.am,bindings/php4/xapian/.cvsignore: More
          work on the php4 bindings.

Wed Jul 09 03:00:17 BST 2003  Olly Betts <olly@survex.com>

        * bindings/guile/Makefile.am,bindings/python/Makefile.am,
          bindings/tcl8/Makefile.am: Worked towards getting guile and tcl8
          bindings up-to-date.
        * bindings/php4/.cvsignore: Ignore the whole xapian subdirectory.

Wed Jul 09 02:37:12 BST 2003  Olly Betts <olly@survex.com>

        * bindings/perl5/: Removed remaining files.

Wed Jul 09 02:30:55 BST 2003  Olly Betts <olly@survex.com>

        * configure.in,bindings/Makefile.am,bindings/php4/Makefile.am:
          Working towards getting the php4 bindings functional again.

Wed Jul 09 01:27:39 BST 2003  Olly Betts <olly@survex.com>

        * bindings/swig/om_util_php4.i: om_termname -> std::string.

Wed Jul 09 01:25:11 BST 2003  Olly Betts <olly@survex.com>

        * docs/overview.html,include/xapian/base.h,include/xapian/database.h:
          Improvements to doxygen-generated documentation.

Wed Jul 09 01:23:55 BST 2003  Olly Betts <olly@survex.com>

        * configure.in,docs/todo.xml: Added check for SWIG version (require
          at least 1.3.14).

Tue Jul  8 20:59:08 2003  James Aylett  <james@tartarus.org>

        * common/utils.h: missing #include <ctype.h>

Tue Jul  8 18:06:23 2003  James Aylett  <james@tartarus.org>

        * bindings/swig/xapian.i: over-enthusiastic automatic
          conversion of termname to std::string

Tue Jul 08 17:45:16 BST 2003  Olly Betts <olly@survex.com>

        * common/utils.h: Improved mingw implementation of rmdir().

Tue Jul 08 17:43:21 BST 2003  Olly Betts <olly@survex.com>

        * NEWS,PLATFORMS,configure.in: Version 0.7.1.

Sun Jul 06 21:35:08 BST 2003  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: Minor tweak.

Sun Jul 06 21:34:30 BST 2003  Olly Betts <olly@survex.com>

        * common/utils.h: Compile fixes for mingw.

Sun Jul 06 17:59:26 BST 2003  Olly Betts <olly@survex.com>

        * docs/scalability.html: Fixed typo.

Sun Jul 06 13:02:09 BST 2003  Olly Betts <olly@survex.com>

        * docs/scalability.html: Fixed typo.

Sun Jul 06 12:56:08 BST 2003  Olly Betts <olly@survex.com>

        * docs/Makefile.am,docs/index.html,docs/scalability.html: Added new
          document on Xapian's scalability.

Sun Jul 06 12:15:34 BST 2003  Olly Betts <olly@survex.com>

        * backends/quartz/: Made quartz block count unsigned, which should
          nearly double the size of database for a given block size.

Sun Jul 06 11:47:46 BST 2003  Olly Betts <olly@survex.com>

        * backends/quartz/: Use BLK_UNUSED rather than literal -1.

Sun Jul 06 11:47:14 BST 2003  Olly Betts <olly@survex.com>

        * common/utils.h: Fixed last check-in to compile.

Sun Jul 06 11:01:03 BST 2003  Olly Betts <olly@survex.com>

        * common/utils.h,tests/btreetest.cc,tests/quartztest.cc,
          testsuite/backendmanager.cc: Replaced system("rm -rf ...") with
          rmdir() function and added two ms windows implementations for
          Sam to try.

Sat Jul 05 10:37:35 BST 2003  Olly Betts <olly@survex.com>

        * getopt/getopt.c: Suppress "unused variable" warnings from getopt.c.

Sat Jul 05 02:21:11 BST 2003  Olly Betts <olly@survex.com>

        * docs/todo.xml: Updated.

Sat Jul 05 02:09:06 BST 2003  Olly Betts <olly@survex.com>

        * configure.in,backends/quartz/btree.cc: Use pread() and pwrite() if
          available - this avoids one syscall per block read/write.

Fri Jul 04 22:05:14 BST 2003  Olly Betts <olly@survex.com>

        * PLATFORMS: Added results from building 0.7.0 on my Linux dev box.

Fri Jul 04 18:52:07 BST 2003  Olly Betts <olly@survex.com>

        * extra/Makefile.am: Distribute symboltab.h.

Fri Jul 04 18:04:53 BST 2003  Olly Betts <olly@survex.com>

        * common/Makefile.am: Distribute documentterm.h.

Fri Jul 04 15:30:28 BST 2003  Olly Betts <olly@survex.com>

        * configure.in: Disabled guile, tcl8, and php4 here as well as in
          bindings/Makefile.am.

Fri Jul  4 11:27:53 2003  James Aylett  <james@tartarus.org>

        * bindings/Makefile.am: change commenting so mkdoc.pl doesn't
          choke

Fri Jul  4 10:51:04 2003  James Aylett  <james@tartarus.org>

        * bootstrap: add missing ';;' as case pattern delimiter

Thu Jul 03 23:46:14 BST 2003  Olly Betts <olly@survex.com>

        * bindings/Makefile.am,bindings/python/Makefile.am: Fixed to work with
          "make dist".

Thu Jul 03 23:29:06 BST 2003  Olly Betts <olly@survex.com>

        * NEWS,PLATFORMS,configure.in: Version 0.7.0.

Thu Jul 03 22:57:22 BST 2003  Olly Betts <olly@survex.com>

        * PLATFORMS: Updated (Linux GCC 2.95 and Linux to mingw cross).

Thu Jul 03 22:55:54 BST 2003  Olly Betts <olly@survex.com>

        * extra/queryparser.yy,extra/queryparsertest.cc: Allow more than one
          adjacent phrase generating character.

Thu Jul 03 22:12:18 BST 2003  Olly Betts <olly@survex.com>

        * extra/queryparser.yy,extra/queryparsertest.cc: Always ignore phrase
          generating characters at start and end of query.

Thu Jul 03 21:02:10 BST 2003  Olly Betts <olly@survex.com>

        * extra/Makefile.am: Fixed for mingw compile.

Thu Jul 03 19:24:50 BST 2003  Olly Betts <olly@survex.com>

        * buildall,docs/OMAims: Removed unwanted old files.

Thu Jul 03 19:18:41 BST 2003  Olly Betts <olly@survex.com>

        * backends/quartz/runquartztest: Obsolete, so removed.

Thu Jul 03 01:26:03 BST 2003  Olly Betts <olly@survex.com>

        * common/omenquireinternal.h: Fix for building with GCC 3.3.

Thu Jul 03 01:02:54 BST 2003  Olly Betts <olly@survex.com>

        * NEWS: Updated.

Wed Jul 02 22:18:07 BST 2003  Olly Betts <olly@survex.com>

        * backends/quartz/bcursor.cc,backends/quartz/bcursor.h:
          Made Bcursor::get_key(string * key) const.

Wed Jul 02 21:51:43 BST 2003  Olly Betts <olly@survex.com>

        * backends/quartz/: Workaround for shared_level problem turns out to
          be arguably the better approach, so made it permanent and tidied up
          code.

Mon Jun 23 21:39:50 BST 2003  Olly Betts <olly@survex.com>

        * NEWS: Updated in preparation for 0.7.0 release.

Mon Jun 23 21:18:23 BST 2003  Olly Betts <olly@survex.com>

        * extra/omparsequery.h: Corrected include protection token comment on
          #endif to match that used in the #ifdef.

Mon Jun 23 21:10:33 BST 2003  Olly Betts <olly@survex.com>

        * bootstrap: Check for Bison 1.875 which doesn't work with Xapian.

Mon Jun 23 21:08:35 BST 2003  Olly Betts <olly@survex.com>

        * HACKING: Automake 1.7 works reliably with Xapian; CFLAGS=-Werror can
          now be used as we suppress the warnings from the Snowball generated
          C code.

Mon Jun 23 16:55:54 BST 2003  Olly Betts <olly@survex.com>

        * api/,backends/inmemory/inmemory_database.cc,
          backends/inmemory/inmemory_database.h,backends/quartz/,
          bindings/swig/om_util_python.i,bindings/swig/xapian.i,common/,
          include/Makefile.am,include/xapian.h,include/om/om.h,include/xapian/,
          matcher/localmatch.h,matcher/phrasepostlist.h,tests/api_db.cc,
          tests/api_posdb.cc,tests/quartztest.cc:
          Xapian::Xapian::PostListIterator -> Xapian::PostingIterator;
          Xapian::PositionListIterator -> Xapian::PositionIterator;
          xapian/postlistiterator.h -> xapian/postingiterator.h;
          xapian/positionlistiterator.h -> xapian/positioniterator.h.

Mon Jun 23 15:31:30 BST 2003  Olly Betts <olly@survex.com>

        * backends/database.cc,backends/inmemory/inmemory_database.h,
          backends/muscat36/,backends/quartz/,bindings/python/Makefile.am,
          bindings/swig/om_util.i,bindings/swig/omstem.i,docs/quickstart.html,
          docs/todo.xml,include/xapian/database.h,include/xapian/enquire.h,
          include/xapian/errortypes.h,tests/api_db.cc,tests/quartztest.cc,
          testsuite/backendmanager.cc,testsuite/textfile_indexer.cc:
          Xapian::OpeningError renamed to Xapian::DatabaseOpeningError.
        * include/om/om.h: OmOpeningError now maps to
          Xapian::DatabaseOpeningError.

Mon Jun 23 01:44:45 BST 2003  Olly Betts <olly@survex.com>

        * api/,backends/inmemory/inmemory_database.cc,
          backends/muscat36/da_database.cc,backends/muscat36/db_database.cc,
          backends/net/net_database.cc,backends/net/net_termlist.cc,
          backends/net/net_termlist.h,backends/quartz/,bin/omprogsrv.cc,
          bin/quartzdump.cc,common/,include/xapian/error.h,
          include/xapian/errorhandler.h,matcher/emptymatch.h,net/,
          tests/quartztest.cc,tests/stemtest.cc,testsuite/testsuite.cc,
          testsuite/textfile_indexer.cc: Use '#include <...>' for headers
          in include/.

Thu Jun 19 17:55:07 BST 2003  Olly Betts <olly@survex.com>

        * common/netserver.h,common/socketserver.h,matcher/localmatch.cc,
          matcher/multimatch.cc,net/socketserver.cc: Removed unused header
          inclusion; pass Stats and Xapian::Database by const reference, not
          value.

Thu Jun 19 14:50:49 BST 2003  Olly Betts <olly@survex.com>

        * extra/queryparser.yy,extra/symboltab.h: Force control characters to
          spaces; Added note that accent normalisation is perhaps done at the
          wrong time...

Thu Jun 19 14:40:36 BST 2003  Olly Betts <olly@survex.com>

        * extra/queryparsertest.cc: Added test for control characters.

Thu Jun 19 14:31:12 BST 2003  Olly Betts <olly@survex.com>

        * extra/queryparsertest.cc: Added checks for weird whitespace in
          queries.

Wed Jun 18 19:02:14 BST 2003  Olly Betts <olly@survex.com>

        * extra/queryparser.yy: Reworked parsing of boolean operators to
          improve error reporting.
        * extra/queryparsertest.cc: Added 2 more testcases and fixed to better
          handle tests for expected errors.

Wed Jun 18 19:00:55 BST 2003  Olly Betts <olly@survex.com>

        * extra/queryparser.yy: Trim leading and trailing whitespace before
          attempting to parse the query.

Wed Jun 18 17:58:56 BST 2003  Olly Betts <olly@survex.com>

        * extra/queryparser.yy: `using namespace Xapian;'

Fri Jun 06 01:33:33 BST 2003  Olly Betts <olly@survex.com>

        * docs/quartzdesign.html: Commented out the section on the Lexicon,
          which we no longer use.

Thu Jun 05 22:40:21 BST 2003  Olly Betts <olly@survex.com>

        * bindings/python/.cvsignore,bindings/python/Makefile.am,
          bindings/python/dothemake.txt,bindings/swig/om_util_python.i:
          Cleaned up building of python bindings by making better use of
          automake.

Thu Jun 05 22:17:40 BST 2003  Olly Betts <olly@survex.com>

        * languages/Makefile.am: Reenable standard warnings apart from the
          -Wunused.

Thu Jun 05 20:21:08 BST 2003  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc: Fixed a couple of problems with the new
          query serialisation.

Thu Jun 05 17:55:21 BST 2003  Olly Betts <olly@survex.com>

        * HACKING,configure.in: Flex is no longer used, so removed configure
          tests and note in HACKING.

Thu Jun 05 17:53:30 BST 2003  Olly Betts <olly@survex.com>

        * tests/remotetest.cc: In test netexpand1, use TEST() rather than
          Assert() so that the check is made in non-debug builds too.

Thu Jun 05 17:52:17 BST 2003  Olly Betts <olly@survex.com>

        * api/omqueryinternal.cc,common/socketcommon.h,docs/todo.xml,
          include/xapian/query.h,net/: Reworked query serialisation so that
          the code is now all in api/omqueryinternal.cc.  Serialisation is
          now rather more compact and no longer relies on flex for parsing.

Thu Jun 05 17:45:00 BST 2003  Olly Betts <olly@survex.com>

        * bin/Makefile.am: omprogsrv depends on libtest.la, so it need to be
          in check_PROGRAMS.

Thu Jun 05 17:09:10 BST 2003  Olly Betts <olly@survex.com>

        * Makefile.am: Moved bindings after extra in SUBDIRS - the bindings
          wrap Xapian::QueryParser so they need to be built after it.

Thu Jun 05 01:28:01 BST 2003  Olly Betts <olly@survex.com>

        * bindings/python/Makefile.am: Use $(SWIG) (as detected by configure).

Thu Jun 05 00:46:16 BST 2003  Olly Betts <olly@survex.com>

        * configure.in,bindings/Makefile.am,bindings/python/Makefile.am:
          Check for python and find the correct paths for building python
          bindings; Added dependencies for building _xapian.so.

Wed Jun  4 17:19:37 2003  James Aylett  <james@tartarus.org>

        * configure.in, Makefile.am, bindings: build system will build
          bindings as part of normal build process.  No longer build
          Perl or Java bindings; for Perl, use Search::Xapian; Java will
          be replaced with SWIG-based bindings.

        * bindings: bindings now use Xapian:: namespace names rather than
          the old Om* ones. Almost all of the API should now be wrapped.

Wed Jun 04 02:52:38 BST 2003  Olly Betts <olly@survex.com>

        * docs/overview.html: Added start of "Design Principles" section.
        * docs/todo.xml: Added a couple more items.

Wed Jun 04 02:51:56 BST 2003  Olly Betts <olly@survex.com>

        * Makefile.am: Build testsuite later - it now doesn't need to be built
          until just before tests.

Wed Jun 04 02:43:08 BST 2003  Olly Betts <olly@survex.com>

        * backends/muscat36/: Split up spec into comments in the appropriate
          header files; fixed to build after recent Om -> Xapian changes.

Wed Jun 04 01:56:46 BST 2003  Olly Betts <olly@survex.com>

        * HACKING: Bison 1.75 and 1.875a both checked with parsequery.yy
          - no problems found.

Mon Jun 02 20:14:22 BST 2003  Olly Betts <olly@survex.com>

        * ChangeLog.0: Fixed 2 typos.

Mon Jun 02 20:09:01 BST 2003  Olly Betts <olly@survex.com>

        * NEWS: Updated in preparation for 0.7.0 release.

Mon Jun 02 16:25:18 BST 2003  Olly Betts <olly@survex.com>

        * configure.in: Fix m4 quoting so that MINOR_VERSION is set correctly.

Mon Jun  2 15:22:30 2003  James Aylett  <james@tartarus.org>

        * bindings/swig/xapian.i: move QueryParser wrapping to use
          the new namespace location, and fix include so it can work
          out of the build directory rather than just the installed
          library

Mon Jun 02 14:15:14 BST 2003  Olly Betts <olly@survex.com>

        * Makefile.am,configure.in,bindings/Makefile.am,docs/todo.xml:
          Added --enable-bindings to configure - if this is specified and
          swig is detected, try to build the language bindings.

Mon Jun 02 12:46:18 BST 2003  Olly Betts <olly@survex.com>

        * backends/database.cc: Fixed parsing of port number in remote stub
          databases.

Sat May 31 15:03:47 BST 2003  James Aylett  <james@tartarus.org>

        * bindings/swig: update so can build Python bindings against
          latest Xapian; untested, and other languages are likely to
          fail

Fri May 30 02:59:48 BST 2003  Olly Betts <olly@survex.com>

        * extra/queryparser.yy,extra/queryparsertest.cc: Embedded '.' is
          now a phrase maker; Ignore `""' in query; Ignore ')' at start
          of query.

Fri May 30 01:22:49 BST 2003  Olly Betts <olly@survex.com>

        * extra/queryparsertest.cc: Added another 405 queries which fail to
          parse (courtesy of Arjen van der Meijden).

Thu May 29 19:08:28 BST 2003  Olly Betts <olly@survex.com>

        * docs/todo.xml,extra/queryparsertest.cc: Extracted two more
          queryparser testcases which need fixing from the old todo list.

Thu May 29 17:14:04 BST 2003  Olly Betts <olly@survex.com>

        * extra/queryparser.yy,extra/queryparsertest.cc: A phrasemaker isn't
          a phrasemaker unless it's preceded by an alphanumeric, "+", or "-";
          If a single term is in (), ignore the ().

Thu May 29 16:45:39 BST 2003  Olly Betts <olly@survex.com>

        * extra/queryparser.yy,extra/queryparsertest.cc: Improved handling
          of various odd queries encountered in real life applications.

Thu May 29 01:50:51 BST 2003  Olly Betts <olly@survex.com>

        * docs/todo.xml: Updated more.

Thu May 29 01:26:50 BST 2003  Olly Betts <olly@survex.com>

        * api/,backends/database.cc,backends/inmemory/,backends/multi/,
          backends/muscat36/,backends/net/,backends/quartz/,common/,
          docs/overview.html,docs/quickstart.html,
          docs/quickstartexpand.cc.html,extra/queryparser.yy,include/om/om.h,
          include/xapian/,matcher/,net/,tests/api_db.cc,tests/api_posdb.cc,
          tests/quartztest.cc,testsuite/: Converted remaining om_xxx types
          to Xapian::xxx.

Wed May 28 23:06:18 BST 2003  Olly Betts <olly@survex.com>

        * docs/todo.xml: Updated.

Wed May 28 22:59:17 BST 2003  Olly Betts <olly@survex.com>

        * tests/api_db.cc: Spelling correction: accross -> across.

Wed May 28 20:24:32 BST 2003  Olly Betts <olly@survex.com>

        * extra/: OmQueryParser -> Xapian::QueryParser, etc.

Wed May 28 20:03:48 BST 2003  Olly Betts <olly@survex.com>

        * api/omdocument.cc: Removed include of defunct header
          modifieddocument.h.

Wed May 28 20:00:56 BST 2003  Olly Betts <olly@survex.com>

        * api/maptermlist.h,api/omdocument.cc,api/omvalueiterator.cc,
          backends/inmemory/inmemory_document.cc,
          backends/inmemory/inmemory_document.h,backends/muscat36/,
          backends/net/net_document.cc,backends/net/net_document.h,
          backends/quartz/quartz_document.cc,backends/quartz/quartz_document.h,
          common/Makefile.am,common/document.h,common/modifieddocument.h,
          include/xapian/document.h,tests/api_db.cc: Fixed bug in refactored
          Xapian::Document when modifying a copy.  Added regression test.

Wed May 28 19:23:26 BST 2003  Olly Betts <olly@survex.com>

        * common/omenquireinternal.h,include/xapian/database.h,
          include/xapian/enquire.h,include/xapian/query.h: Where possible,
          declare classes rather than including headers (in public headers).

Wed May 28 17:32:14 BST 2003  Olly Betts <olly@survex.com>

        * include/xapian/document.h: Just declare "class TermIterator;" rather
          than including <xapian/termiterator.h>.

Tue May 27 16:59:34 BST 2003  Olly Betts <olly@survex.com>

        * common/progserver.h,common/socketserver.h,net/socketserver.cc:
          Reduced needless header inclusion.

Tue May 27 16:53:40 BST 2003  Olly Betts <olly@survex.com>

        * bin/omprogsrv.cc,tests/api_db.cc: Use variable name "dbs" in
          preference to "dbgrp".  OmDatabaseGroup hasn't existed for
          years!

Tue May 27 16:51:30 BST 2003  Olly Betts <olly@survex.com>

        * Makefile.am: Fixed typo: "bin" should be "net" in remote_subdirs.

Tue May 27 02:43:32 BST 2003  Olly Betts <olly@survex.com>

        * backends/quartz/Makefile.am: Removed -I referencing testsuite
          directory.

Tue May 27 02:39:43 BST 2003  Olly Betts <olly@survex.com>

        * backends/quartz/,docs/tests.html,tests/: Moved quartztest and
          btreetest to tests/ directory.

Tue May 27 02:03:07 BST 2003  Olly Betts <olly@survex.com>

        * Makefile.am,configure.in,xapian.spec.in,backends/quartz/,bin/,
          docs/remote.html,netprogs/,tests/api_db.cc,tests/remotetest.cc,
          testsuite/backendmanager.cc,testsuite/testsuite.cc: Sorted out
          the source tree structure so that programs which aren't tests which
          were previously built by "make check" are now be built by "make".

Tue May 27 01:01:40 BST 2003  Olly Betts <olly@survex.com>

        * autoconf/dir_contents,backends/dir_contents,
          backends/inmemory/dir_contents,backends/multi/dir_contents,
          backends/muscat36/dir_contents,backends/net/dir_contents,
          backends/quartz/dir_contents,bindings/dir_contents,
          common/dir_contents,docs/dir_contents,include/om/dir_contents,
          include/xapian/dir_contents,include/dir_contents,
          indexer/dir_contents,indexer/indexgraph/dir_contents,
          languages/dir_contents,m4/dir_contents,tests/dir_contents:
          Updated all the dir_contents files - many were out-of-date.

Tue May 27 00:42:54 BST 2003  Olly Betts <olly@survex.com>

        * Makefile.am: Filter any .la files out of dependency_libs.

Tue May 27 00:11:18 BST 2003  Olly Betts <olly@survex.com>

        * netprogs/.cvsignore,netprogs/Makefile.am,netprogs/nettest.cc,
          tests/.cvsignore,tests/Makefile.am,tests/remotetest.cc:
          netprogs/nettest -> tests/remotetest.

Mon May 26 23:49:49 BST 2003  Olly Betts <olly@survex.com>

        * netprogs/nettest.cc: Removed test tcpclient1 - the functionality it
          tests is also tested by tcpmatch1, and it introduces dependencies on
          internal headers.

Mon May 26 22:00:01 BST 2003  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_table_manager.cc: Give a better error message
          if asked to open a pre-0.6 Quartz database.

Mon May 26 20:43:21 BST 2003  Olly Betts <olly@survex.com>

        * HACKING,Makefile.am,backends/Makefile.am,docs/mkdoc.pl,
          net/Makefile.am: Fixed to never leave partial files in place of the
          expected output if a build is interrupted.

Mon May 26 16:50:59 BST 2003  Olly Betts <olly@survex.com>

        * HACKING: Added note adapted from an old email noting why compile-time
          options are generally best avoided.

Mon May 26 12:03:29 BST 2003  Olly Betts <olly@survex.com>

        * testsuite/backendmanager.cc,testsuite/textfile_indexer.cc: Corrected
          odd uses of std::string::erase() (instead of `str = str.erase(n, m)'
          just use `str.erase(n,m)').

Sun May 25 22:59:44 BST 2003  Olly Betts <olly@survex.com>

        * PLATFORMS: Updated.

Sun May 25 22:58:28 BST 2003  Olly Betts <olly@survex.com>

        * languages/Makefile.am: Suppress "unused" warnings in Snowball
          generated C code.

Sun May 25 21:43:34 BST 2003  Olly Betts <olly@survex.com>

        * api/omtermlistiterator.cc: Removed iostream.h include left over from
          debugging.

Sun May 25 12:27:11 BST 2003  Olly Betts <olly@survex.com>

        * docs/,extra/omparsequery.h,extra/parsequery.yy,include/Makefile.am,
          include/xapian.h,include/om/om.h,tests/,testsuite/backendmanager.cc,
          testsuite/backendmanager.h,testsuite/testutils.h: Created xapian.h
          header and changed everything to use it.

Sat May 24 23:35:46 BST 2003  Olly Betts <olly@survex.com>

        * api/,backends/inmemory/inmemory_database.cc,
          backends/inmemory/inmemory_document.h,
          backends/quartz/quartz_database.cc,backends/quartz/quartztest.cc,
          common/,include/Makefile.am,include/om/om.h,
          include/om/omvalueiterator.h,include/xapian/,
          testsuite/backendmanager.cc: OmValueIterator -> Xapian::ValueIterator
          etc.

Fri May 23 15:32:29 BST 2003  Olly Betts <olly@survex.com>

        * api/,backends/database.cc,backends/inmemory/,backends/muscat36/,
          backends/net/net_database.cc,backends/net/net_document.cc,
          backends/net/net_document.h,backends/quartz/,common/,docs/,
          include/Makefile.am,include/om/om.h,include/om/omdocument.h,
          include/om/omvalueiterator.h,include/xapian/,indexer/omindexer.h,
          matcher/,net/,netprogs/nettest.cc,tests/api_db.cc,tests/api_posdb.cc,
          tests/internaltest.cc,testsuite/: OmDocument -> Xapian::Document, etc.
        * include/Makefile.am: Fixed library headers to install in xapian and
          om subdirectories as they should.

Fri May 23 15:31:05 BST 2003  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: Consistently use int4 for block number -
          it really should be unsigned and this is a first step.

Mon May 19 13:20:46 BST 2003  Olly Betts <olly@survex.com>

        * configure.in: Create include/xapian if it doesn't exist so that
          VPATH builds work.

Mon May 19 13:17:16 BST 2003  Olly Betts <olly@survex.com>

        * Makefile.am: Disabled exported symbol regex for now.

Tue May 13 05:08:54 BST 2003  Olly Betts <olly@survex.com>

        * api/,backends/database.cc,backends/dir_contents,backends/inmemory/,
          backends/multi/,backends/muscat36/,backends/net/,backends/quartz/,
          common/,docs/,extra/omparsequery.h,include/,matcher/,net/,netprogs/,
          tests/: OmDatabase -> Xapian::Database, etc.

Tue May 13 05:07:41 BST 2003  Olly Betts <olly@survex.com>

        * NEWS: Corrected spelling: "maintainance" to "maintenance".

Tue May 13 00:40:47 BST 2003  Olly Betts <olly@survex.com>

        * ChangeLog.0,NEWS,backends/inmemory/inmemory_database.h,
          backends/muscat36/da_database.h,backends/muscat36/db_database.h,
          backends/quartz/quartz_postlist.h,
          indexer/indexgraph/omstopwordnode.cc: Spelling correction:
          "occurence" should be "occurrence".

Mon May 12 22:39:27 BST 2003  Olly Betts <olly@survex.com>

        * api/ompositionlistiteratorinternal.h,
          include/om/ompositionlistiterator.h: Removed unused files.

Mon May 12 20:51:03 BST 2003  Olly Betts <olly@survex.com>

        * api/omdatabaseinternal.cc,backends/database.cc: Moved database
          factory functions from api to backends.

Fri May 09 04:02:29 BST 2003  Olly Betts <olly@survex.com>

        * common/expandweight.h: Removed cruft.

Fri May 09 03:50:36 BST 2003  Olly Betts <olly@survex.com>

        * common/rset.h: Removed unused RSetI ctor variant.

Fri May 09 02:00:03 BST 2003  Olly Betts <olly@survex.com>

        * api/omenquire.cc,common/,docs/overview.html,include/om/om.h,
          include/xapian/enquire.h,include/xapian/output.h,matcher/,
          net/socketclient.cc,net/socketcommon.cc,net/socketserver.cc,
          netprogs/nettest.cc,tests/api_db.cc: OmRSet -> Xapian::RSet.

Fri May 09 01:06:32 BST 2003  Olly Betts <olly@survex.com>

        * api/omenquire.cc: Fixed MSet::Internal::get_description() to include
          class name.

Fri May 09 01:04:12 BST 2003  Olly Betts <olly@survex.com>

        * common/rset.h,matcher/expand.cc,matcher/rset.cc: RSetI now uses
          set<Xapian::docid> (as OmRSet::Internal) rather than
          vector<RSetItem>.

Fri May 09 00:41:20 BST 2003  Olly Betts <olly@survex.com>

        * api/omenquire.cc,common/,docs/quickstartexpand.cc.html,matcher/:
          RSet internal class renamed to RSetI to aid upcoming OmRSet ->
          Xapian::RSet change.  RSetI looks like it can be eliminated
          later.

Thu May 08 23:54:44 BST 2003  Olly Betts <olly@survex.com>

        * tests/: Removed make_dbgrp() helper function from apitest as it
          makes the test code less clear without making it easier to write.

Thu May 08 01:24:53 BST 2003  Olly Betts <olly@survex.com>

        * api/ompostlistiterator.cc,docs/overview.html,tests/api_db.cc:
          Fixed OmWeight and OmMatchDecider in comments, docs, and
          testsuite.

Thu May 08 01:16:30 BST 2003  Olly Betts <olly@survex.com>

        * api/omenquire.cc,backends/multi/multi_postlist.h,common/,
          include/om/om.h,include/xapian/enquire.h,matcher/,
          net/socketclient.cc,net/socketserver.cc: OmMatchDecider ->
          Xapian::MatchDecider; OmWeight -> Xapian::Weight; BoolWeight,
          TradWeight, BM25Weight -> Xapian::.

Wed May 07 23:06:47 BST 2003  Olly Betts <olly@survex.com>

        * backends/quartz/btreetest.cc,backends/quartz/quartztest.cc,
          configure.in,netprogs/nettest.cc,tests/,testsuite/: Minor overhaul
          of testsuite.

Wed May 07 17:54:34 BST 2003  Olly Betts <olly@survex.com>

        * backends/,common/document.h,matcher/Makefile.am,matcher/document.cc:
          Removed do_ wrappers for Document methods get_value(),
          get_all_values() and get_data().  The wrappers used to perform
          thread locking, but now they're just pointless overhead.

Wed May 07 17:24:00 BST 2003  Olly Betts <olly@survex.com>

        * HACKING: Started section of API structure.

Wed May 07 02:16:03 BST 2003  Olly Betts <olly@survex.com>

        * api/omenquire.cc,common/expand.h,common/omenquireinternal.h,
          common/omstringstream.h,docs/quickstart.html,include/om/om.h,
          include/xapian/enquire.h,include/xapian/output.h,matcher/expand.cc,
          matcher/multimatch.cc,net/socketcommon.cc,netprogs/nettest.cc,
          tests/api_db.cc,testsuite/testutils.cc: OmMSet -> Xapian::MSet,
          similarly for OmMSetIterator, OmESet, and OmESetIterator.

Tue May 06 19:31:42 BST 2003  Olly Betts <olly@survex.com>

        * include/xapian/query.h: New file I failed to checkin on Friday.

Tue May 06 14:16:41 BST 2003  Olly Betts <olly@survex.com>

        * HACKING,configure.in,tests/.cvsignore,tests/Makefile.am,
          tests/runtest.in,testsuite/testsuite.cc: Sorted out autodetection
          of valgrind for running testsuite.
        * HACKING: Added note about how to run gdb on dynamically linked
          binaries built using libtool.
        * HACKING: Recommend libtool 1.5 as in 1.4.2 libtool --mode=execute
          doesn't seem to handle programs with arguments.

Tue May 06 00:25:03 BST 2003  Olly Betts <olly@survex.com>

        * PLATFORMS: Updated.

Fri May 02 16:58:15 BST 2003  Olly Betts <olly@survex.com>

        * configure.in: Improved check that LEX is flex - it will now accept
          "flex" with a path and/or prefix.

Fri May 02 16:12:46 BST 2003  Olly Betts <olly@survex.com>

        * api/,common/,include/,matcher/,net/,netprogs/nettest.cc,
          netprogs/omtcpsrv.cc,tests/api_db.cc,tests/api_posdb.cc,
          testsuite/testutils.cc,testsuite/testutils.h: OmEnquire ->
          Xapian::Enquire, OmQuery -> Xapian::Query, etc.

Fri May 02 03:14:28 BST 2003  Olly Betts <olly@survex.com>

        * tests/internaltest.cc: Reenabled tests for leak checking and fixed
          them up to work with valgrind.

Fri May 02 02:14:28 BST 2003  Olly Betts <olly@survex.com>

        * testsuite/testsuite.cc,testsuite/testsuite.h: If a testsuite program
          is run using "valgrind --logfile-fd=255 ./footest" then the harness
          will show valgrind's output for tests which fail because valgrind
          spotted errors or leaks (untested under valgrind).

Thu May 01 21:25:01 BST 2003  Olly Betts <olly@survex.com>

        * api/omenquire.cc,api/omquery.cc,api/omqueryinternal.cc,common/,
          docs/overview.html,docs/quickstart.html,extra/omparsequery.h,
          extra/parsequery.yy,extra/parsequerytest.cc,include/,matcher/,
          net/,netprogs/nettest.cc,tests/api_db.cc,tests/api_nodb.cc,
          tests/api_posdb.cc: OmQuery -> Xapian::Query, etc.  For now
          I've had to expose Xapian::Query::Internal in xapian/query.h
          which isn't ideal.

Wed Apr 30 20:37:27 BST 2003  Olly Betts <olly@survex.com>

        * api/omenquire.cc,common/omenquireinternal.h,include/:
          typedefs om_* -> Xapian::*, but not changed all internal uses yet.

Wed Apr 30 03:51:52 BST 2003  Olly Betts <olly@survex.com>

        * api/,backends/,common/,extra/omparsequery.h,extra/parsequery.yy,
          include/,matcher/localmatch.h,matcher/orpostlist.h,tests/api_db.cc:
          OmPostListIterator -> Xapian::PostListIterator, etc.

Wed Apr 30 02:13:31 BST 2003  Olly Betts <olly@survex.com>

        * docs/matcherdesign.html,include/om/omenquire.h: Merged docs
          discussing OmMSetIterator::get_collapse_count() into the doxygen
          documentation comments - they're docs aimed at the API user so
          really don't belong in the internal matcher design docs.

Wed Apr 30 01:08:39 BST 2003  Olly Betts <olly@survex.com>

        * .cvsignore: Added config.guess.

Tue Apr 29 21:08:40 BST 2003  Olly Betts <olly@survex.com>

        * include/om/om.h,include/xapian/base.h,include/xapian/error.h,
          include/xapian/errorhandler.h,include/xapian/expanddecider.h,
          include/xapian/positionlistiterator.h,include/xapian/stem.h,
          include/xapian/termiterator.h: OM_HGUARD_* -> XAPIAN_INCLUDED_*.

Tue Apr 29 20:37:01 BST 2003  Olly Betts <olly@survex.com>

        * api/,backends/,common/,include/,indexer/omnodeinstanceiterator.h,
          indexer/ompaditerator.h,net/readquery.h,testsuite/indexer.h:
          om/omoutput.h -> xapian/output.h; om/omtypes.h -> xapian/types.h.

Tue Apr 29 18:28:27 BST 2003  Olly Betts <olly@survex.com>

        * api/,backends/,common/,include/,matcher/,net/socketserver.cc,tests/,
          testsuite/backendmanager.cc,testsuite/testsuite.cc: OmTermIterator
          -> Xapian::TermIterator, etc.

Tue Apr 29 17:39:34 BST 2003  Olly Betts <olly@survex.com>

        * common/omdebug.cc: Setting XAPIAN_DEBUG_LOG caused an exception
          (with GCC 3.0 at least) unless the value contained %% - fixed.

Tue Apr 29 14:29:36 BST 2003  Olly Betts <olly@survex.com>

        * api/ompositionlistiterator.cc: Fixed to compile in debug mode.

Tue Apr 29 01:06:02 BST 2003  Olly Betts <olly@survex.com>

        * xapian.spec.in: Removed %changelog - it hasn't been reliably updated
          and only really makes sense when the packaging is done by a third
          party anyway.

Tue Apr 29 01:03:20 BST 2003  Fabrice Colin

        * xapian.spec.in: Fixed packaging of docs.

Tue Apr 29 00:33:21 BST 2003  Olly Betts <olly@survex.com>

        * HACKING,testsuite/testsuite.cc,testsuite/testsuite.h: valgrind is
          now mostly hooked into the testsuite.
        * HACKING: Bison 1.875 doesn't work but Bison 1.875a probably does;
          suggest CXXFLAGS=-Werror, not CFLAGS.

Tue Apr 29 00:14:00 BST 2003  Olly Betts <olly@survex.com>

        * INSTALL: Updated.

Wed Apr 23 14:31:51 BST 2003  Olly Betts <olly@survex.com>

        * api/omtermlistiterator.cc,api/omtermlistiteratorinternal.h,
          api/omvalueiteratorinternal.h,backends/inmemory/inmemory_database.cc,
          backends/inmemory/inmemory_positionlist.cc,
          common/inmemory_positionlist.h: Added InMemoryPositionList ctor
          which takes the positions data to avoid needing to construct and
          immediately call set_data().

Wed Apr 23 14:14:34 BST 2003  Olly Betts <olly@survex.com>

        * api/,backends/,common/,include/,matcher/: OmPositionListIterator
          -> Xapian::PositionListIterator, etc.

Wed Apr 23 13:47:49 BST 2003  Olly Betts <olly@survex.com>

        * xapian.spec.in: Minor tweaks.

Sun Apr 20 22:55:04 BST 2003  Olly Betts <olly@survex.com>

        * extra/omparsequery.h,include/xapian/stem.h,tests/api_db.cc,
          tests/api_nodb.cc,tests/api_posdb.cc,testsuite/backendmanager.cc:
          OmStem -> Xapian::Stem; OmExpandDecider -> Xapian::ExpandDecider.

Sun Apr 20 22:52:42 BST 2003  Olly Betts <olly@survex.com>

        * configure.in,api/omenquire.cc,common/expand.h,
          common/omenquireinternal.h,docs/overview.html,include/,
          matcher/expand.cc,tests/api_db.cc: OmExpandDecider ->
          Xapian::ExpandDecider, etc.

Sun Apr 20 22:42:32 BST 2003  Olly Betts <olly@survex.com>

        * PLATFORMS,api/,backends/,common/,docs/,include/,matcher/,net/,
          netprogs/,tests/,testsuite/: OmError -> Xapian::Error, etc.

Fri Apr 18 22:40:31 BST 2003  Sam Liddicott <sam@liddicott.com>

        * matcher/multimatch.cc: Fixed so that it updates the OmMSetItem in
          the MSet with the collapse_count from the OmMSetItem twin in
          collapse_tab or we lose collapse_count if newer collapsing hits are
          less relevant than the hits they collapse over.  I think we need
          collapse_tab maybe to keep a reference to the item in the mset?  But
          this works for now.
        * xapian.spec.in: Fixed to also install include/xapian stuff

Fri Apr 18 19:17:56 BST 2003  Olly Betts <olly@survex.com>

        * configure.in,include/Makefile.am,include/om/.cvsignore,
          include/om/Makefile.am,include/om/om.h,include/om/om.h.in,
          include/xapian/.cvsignore,include/xapian/Makefile.am,
          include/xapian/dir_contents,include/xapian/version.h.in:
          C++ ABI version checking is now done by xapian/version.h.

Fri Apr 18 17:57:21 BST 2003  Olly Betts <olly@survex.com>

        * configure.in,api/omstem.cc,include/Makefile.am,include/om/om.h.in,
          include/om/omstem.h,include/xapian/.cvsignore,
          include/xapian/Makefile.am,include/xapian/base.h,
          include/xapian/stem.h: Reworked OmStem to use reference counted
          internals; renamed OmStem to Xapian::Stem and added a #define for
          compatibility with existing code.

Fri Apr 18 17:02:56 BST 2003  Olly Betts <olly@survex.com>

        * api/,backends/,common/,docs/overview.html,docs/quickstart.html,
          docs/quickstartexpand.cc.html,extra/,include/om/,matcher/,net/,
          tests/,testsuite/: Use std::string instead of typedef-ing it as
          om_termname.  The typedef doesn't really buy us anything.  Keep
          a typedef for compatibility with existing code for now.

Fri Apr 18 16:12:32 BST 2003  Olly Betts <olly@survex.com>

        * PLATFORMS: GCC 3.2.2 on Redhat 7.1 works with CXXFLAGS=-Werror

Thu Apr 10 20:05:27 BST 2003  Olly Betts <olly@survex.com>

        * common/Makefile.am,common/indexer.h,testsuite/Makefile.am,
          testsuite/indexer.h: Moved indexer.h from common to testsuite
          and altered it to use iosfwd instead of iostream and to
          declare OmDocument as a class instead of include omdocument.h.

Thu Apr 10 18:55:55 BST 2003  Olly Betts <olly@survex.com>

        * xapian-config.nodep.in: Removed --prefix and --exec-prefix - you
          can't reliably install Xapian with a different prefix to the one
          it was configured with, yet these options give the impression you
          can.

Thu Apr 10 18:53:53 BST 2003  Olly Betts <olly@survex.com>

        * .cvsignore: Added config.sub.

Thu Apr 10 02:41:50 BST 2003  Olly Betts <olly@survex.com>

        * NEWS,configure.in: Updated for 0.6.5 release.

Thu Apr 10 02:29:12 BST 2003  Olly Betts <olly@survex.com>

        * docs/doxygen_api_footer.html_tmpl,docs/doxygen_full_footer.html_tmpl,
          docs/overview.html: Use http://www.doxygen.org/ as URL for doxygen.
        * docs/overview.html: Fixed bad link to our own website!

Thu Apr 10 02:12:00 BST 2003  Olly Betts <olly@survex.com>

        * Makefile.am,backends/Makefile.am,backends/net/.cvsignore,
          backends/net/Makefile.am,netprogs/.cvsignore: Renamed libnetdb.la
          to libremote.la, and LIB_REMOTE1 to LIBNET_LA.

Thu Apr 10 02:08:24 BST 2003  Olly Betts <olly@survex.com>

        * PLATFORMS: Updated mingw notes to reflect the change to
          automatically disable the remote backend when fork() isn't
          available.

Thu Apr 10 01:56:34 BST 2003  Olly Betts <olly@survex.com>

        * docs/mkdoc.pl: Fixed to only look at directories listed in
          DIST_SUBDIRS.

Thu Apr 10 00:23:28 BST 2003  Olly Betts <olly@survex.com>

        * configure.in: Automatically disable the remote backend if we don't
          have fork() since the remote backend requires it in several places;
          AM_CONDITIONAL ENABLE_SHARED isn't used anywhere so commented it
          out.

Wed Apr 09 22:48:20 BST 2003  Olly Betts <olly@survex.com>

        * NEWS: Updated with recent changes.

Wed Apr 09 22:43:31 BST 2003  Olly Betts <olly@survex.com>

        * docs/remote_protocol.html: Talk about Server/Client rather than
          ProgServer/ProgClient; reworked first paragraph.

Wed Apr 09 13:23:05 BST 2003  Olly Betts <olly@survex.com>

        * docs/Makefile.am: Install docs in /usr/share/doc/xapian-core to be
          FHS compliant.
        * xapian.spec.in: Package quartzcheck and quartzcompact too; sorted
          out docs so they all install in the right place.

Wed Apr 09 01:16:11 BST 2003  Olly Betts <olly@survex.com>

        * configure.in,backends/quartz/quartz_log.cc,
          backends/quartz/quartz_table_manager.cc,common/omdebug.cc,
          common/omdebug.h: Don't use HAVE_GETPID - if it's not set we assume
          GetCurrentProcessId() works, so it's cleaner to test with
          #ifdef WIN32 instead.

Tue Apr 08 19:56:57 BST 2003  Olly Betts <olly@survex.com>

        * PLATFORMS: Updated with the results of many test builds.

Tue Apr 08 19:55:15 BST 2003  Olly Betts <olly@survex.com>

        * configure.in,backends/quartz/Makefile.am,backends/quartz/btree.cc,
          netprogs/nettest.cc,common/getopt.h,common/omtime.h,common/utils.cc,
          common/utils.h,tests/Makefile.am,tests/api_db.cc: Now builds with
          Linux to mingw cross-compiler.
        * tests/Makefile.am: don't include findheaders.pl in the tarball -
          it's no longer used.
        * tests/internaltest.cc: removed "#include <dlfcn.h>" and disabled
          code which used to use it.
        * testsuite/backendmanager.cc,testsuite/backendmanager.h: fixed to
          work if any backends are disabled.

Tue Apr 08 16:09:11 BST 2003  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc,backends/quartz/quartz_log.cc,
          backends/quartz/quartz_table_manager.cc,testsuite/testsuite.cc:
          Some fixes for building with Linux to mingw cross-compiler.

Tue Apr 08 02:26:51 BST 2003  Olly Betts <olly@survex.com>

        * backends/quartz/btreetest.cc: If we don't have <sstream> and so are
          using our own stringstream implementation, we can't pass it as an
          ostream reference so BtreeCheck::check() can't be run in btreetest.
          This is only an issue on old compilers (for GCC <= 2.95.2 it seems)
          so just disable the checking in that case - it's probably not worth
          the effort of trying to make our stringstream a subclass of ostream.

Tue Apr 08 01:20:36 BST 2003  Olly Betts <olly@survex.com>

        * testsuite/testsuite.cc: Updated unfinished hooks to use valgrind in
          the test harness.

Fri Apr 04 03:12:27 BST 2003  Olly Betts <olly@survex.com>

        * api/omenquire.cc,api/omstem.cc,common/omdebug.cc: Fixed to compile
          when configure-d with --enable-debug-verbose --enable-debug=full.

Fri Apr 04 03:10:53 BST 2003  Olly Betts <olly@survex.com>

        * common/omstringstream.h: Removed unused code for writing
          vector<string> to our own implementation of om_ostringstream.

Fri Apr 04 03:08:35 BST 2003  Olly Betts <olly@survex.com>

        * api/ompostlistiterator.cc: Use "using namespace std;"; replaced
          gratuitous use of om_ostringstream.

Fri Apr 04 03:07:05 BST 2003  Olly Betts <olly@survex.com>

        * tests/api_nodb.cc: Use "using namespace std;"; removed stray cout
          debug line.

Wed Apr 02 16:54:50 BST 2003  Olly Betts <olly@survex.com>

        * tests/internaltest.cc: More Sun C++ fixes.
        * PLATFORMS: Updated.

Wed Apr 02 16:39:48 BST 2003  Olly Betts <olly@survex.com>

        * tests/api_db.cc,net/tcpserver.cc,common/tcpserver.h: More Sun C++
          fettling.

Wed Apr 02 15:42:54 BST 2003  Olly Betts <olly@survex.com>

        * matcher/emptymatch.h,tests/api_db.cc: More fixes for Sun C++.

Wed Apr 02 15:13:58 BST 2003  Olly Betts <olly@survex.com>

        * api/omenquire.cc,api/omqueryinternal.cc,
          backends/inmemory/inmemory_database.h,common/document.h,
          common/netclient.h,common/netserver.h,common/networkstats.h,
          common/omlinebuf.h,common/stats.h,include/om/omerror.h,
          include/om/omerrorhandler.h,indexer/indexgraph/nodetest.cc,
          indexer/indexgraph/omindexerbuilder.cc,
          indexer/indexgraph/omindexerinternal.h,
          indexer/indexgraph/omstopwordnode.cc,
          indexer/indexgraph/regexcommon.h,indexer/indexgraph/toposort.h,
          tests/api_db.cc,tests/api_nodb.cc,testsuite/backendmanager.h:
          More fixes for Sun C++; removed many superfluous ";" after "}".

Wed Apr 02 03:45:42 BST 2003  Olly Betts <olly@survex.com>

        * api/omdocument.cc,api/omenquire.cc,api/omtermlistiteratorinternal.h,
          backends/inmemory/inmemory_database.h,backends/quartz/btree.cc,
          backends/quartz/btree.h,common/alltermslist.h,common/expandweight.h,
          common/getopt.h,common/utils.h,include/om/omenquire.h,
          matcher/expandweight.cc,matcher/multimatch.cc,
          testsuite/backendmanager.h: Resolved various issues so that
          libxapian now builds with Sun's C++ compiler.  However
          libomqueryparser and the test programs don't yet.

Tue Apr 01 02:52:57 BST 2003  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_types.h: use "unsigned int" rather than
          "unsigned long int" so that quartz_tablesize_t matches om_doccount
          on 64 bit machines.

Mon Mar 31 19:34:54 BST 2003  Olly Betts <olly@survex.com>

        * AUTHORS,xapian.spec.in: Merged in changes to RPM packaging from
          Fabrice Colin and reworked further.

Fri Mar 28 20:04:04 GMT 2003  Olly Betts <olly@survex.com>

        * NEWS: Updated.

Fri Mar 28 19:53:59 GMT 2003  Olly Betts <olly@survex.com>

        * README: Removed out-of-date sourceforge references; tidied up
          wording in places.

Fri Mar 28 19:52:11 GMT 2003  Olly Betts <olly@survex.com>

        * HACKING: Removed out-of-date sourceforge references; tidied up
          wording in places; docs/tests.txt is now docs/tests.html .

Fri Mar 28 17:35:15 GMT 2003  Olly Betts <olly@survex.com>

        * NEWS: Wrote most of the entries for the next release.

Fri Mar 28 17:34:57 GMT 2003  Olly Betts <olly@survex.com>

        * docs/todo.xml: Updated.

Thu Mar 27 05:42:41 GMT 2003  Olly Betts <olly@survex.com>

        * .cvsignore,Makefile.am,configure.in,docs/.cvsignore,docs/Makefile.am,
          docs/index.html,docs/todo2html.pl: removed machinery to generate
          TODO, TODO.release, docs/todo.html, and docs/todo-release.html from
          docs/todo.xml - bug and todo items will be tracked in bugzilla
          instead.

Thu Mar 27 05:25:12 GMT 2003  Olly Betts <olly@survex.com>

        * docs/todo.xml: Removed completed items and those already fed into
          bugzilla.

Thu Mar 27 05:17:05 GMT 2003  Olly Betts <olly@survex.com>

        * api/omstem.cc,include/om/omstem.h: Added default OmStem ctor,
          and "none" language.  Both of these give a stemmer object which
          leaves terms unchanged which should allow for simpler logic
          in programs using Xapian.  The default ctor also removes the
          need to mess with pointers in some cases.

Thu Mar 27 04:52:27 GMT 2003  Olly Betts <olly@survex.com>

        * NEWS: Started to prepare for next release.

Thu Mar 27 04:49:52 GMT 2003  Olly Betts <olly@survex.com>

        * include/om/omenquire.h,include/om/omerror.h: Improved documentation
          comments.

Thu Mar 27 01:09:04 GMT 2003  Olly Betts <olly@survex.com>

        * docs/todo.xml,tests/api_db.cc: Added regression test for Quartz
          bug which caused problems with long terms on machines with signed
          chars.

Wed Mar 26 20:30:18 GMT 2003  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: fixed interaction of collapsing and
          sort_bands == 1.

Wed Mar 26 01:04:30 GMT 2003  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Fixed sort_bands == 1 bug which would
          incorrectly reject many documents with a low score.

Thu Mar 06 13:04:06 GMT 2003  Sam Liddicott <sam.liddicott@orange.co.uk>

        * docs/matcherdesign.html: Add writeup about document collapsing.

Thu Mar 06 11:32:05 GMT 2003  Sam Liddicott <sam.liddicott@orange.co.uk>

        * Add collapse_count threshold checking to ensure that most
          relevant collapsed-away hit is more relevant than threshold
          (if specified)

Mon Mar 03 14:04:56 GMT 2003  Olly Betts <olly@survex.com>

        * docs/quartzdesign.html: Corrected 2kB to 2KB.

Fri Feb 28 10:11:04 GMT 2003  Sam Liddicott <sam.liddicott@orange.co.uk>

        * Add get_collapse_count() to OmMSetIterator
        * Add collapse_count to OmMSetItem
        * Add collapse_count tracking to get_mset()

Thu Feb 27 15:28:08 GMT 2003  Olly Betts <olly@survex.com>

        * common/match.h,common/multimatch.h,matcher/multimatch.cc: Optimise
          the common sort_bands == 1 case better.
        * tests/api_db.cc: sortbands2 now tests 1 sortband as well as 10.

Wed Feb 26 09:58:01 GMT 2003  Sam Liddicott <sam.liddicott@orange.co.uk>

        * bootstrap: Fix success message when building in non-src dir
          as configure is written to the src dir.

Mon Feb 24 10:33:52 GMT 2003  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Disabled (for now) sort_bands
          optimisation which is misbehaving.  Fixed forward ordered boolean
          optimisation broken by last check-in.
        * tests/api_db.cc: Added test_sortbands2 based on James' test code.

Sun Feb 23 20:28:47 GMT 2003  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: Fixed problem with sort_bands when asking
          for an m-set which didn't start with the first match.

Sun Jan 05 22:20:33 GMT 2003  Olly Betts <olly@survex.com>

        * testsuite/index_utils.cc: Handling of ^x was just downright wrong
          due to a typo.

Sun Jan 05 22:19:56 GMT 2003  Olly Betts <olly@survex.com>

        * backends/quartz/.cvsignore: Ignore quartzcompact binary.

Sun Jan 05 22:18:57 GMT 2003  Olly Betts <olly@survex.com>

        * extra/parsequerytest.cc: Fixed to build with GCC 2.95.

Tue Dec 24 20:21:03 GMT 2002  Olly Betts <olly@survex.com>

        * NEWS: Added omega 0.6.4 changes.

Tue Dec 24 19:53:10 GMT 2002  Olly Betts <olly@survex.com>

        * NEWS,PLATFORMS,configure.in: Version 0.6.4.

Tue Dec 24 19:29:27 GMT 2002  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_database.cc,backends/quartz/quartz_table.cc:
          Don't bother checking is position_list is empty - just delete it and
          let the layer below handle not having anything to delete.
        * backends/quartz/quartz_termlist.cc,docs/todo.xml: Fixed unpacking
          of termlist on platforms where char is signed.

Tue Dec 24 05:48:06 GMT 2002  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_database.cc: Fixed double setting of position
          list when updating a document with term position information.  The
          behaviour before was correct, just inefficient.

Mon Dec 23 04:44:46 GMT 2002  Olly Betts <olly@survex.com>

        * docs/todo.xml: Updated.

Mon Dec 23 03:22:19 GMT 2002  Olly Betts <olly@survex.com>

        * extra/parsequery.yy: If a stemmed form with a "." is in the query,
          include the "." on the form in the unstem multimap.

Sun Dec 22 21:44:06 GMT 2002  Olly Betts <olly@survex.com>

        * extra/omparsequery.h,extra/parsequery.yy,extra/parsequerytest.cc:
          Added support for searching probabilistic fields (using
          <field>:<term>).

Sat Dec 21 01:38:59 GMT 2002  Olly Betts <olly@survex.com>

        * configure.in: Don't include "om.h" in APIDOC_SRC, otherwise
          people building from source will need to regenerate the source
          docs which will require them to have doxygen installed.

Fri Dec 20 15:39:51 GMT 2002  James Aylett  <james@tartarus.org>

        * Bindings build using SWIG 1.3.14u-20020706-1222, with very
          basic functionality tested with the Python target.

Fri Dec 20 12:38:26 GMT 2002  James Aylett  <tartarus@users.sourceforge.net>

        * Tidied up some bindings-related issues, including changes to
          the Python bindings to work with Python 2.2. This probably won't
          compile as it stands, but it's disabled anyway.

Sun Dec 15 18:23:42 GMT 2002  Olly Betts <olly@survex.com>

        * api/omdatabase.cc,backends/muscat36/da_database.cc,
          backends/muscat36/db_database.cc,matcher/phrasepostlist.cc:
          Muscat 3.6 DA and DB databases don't have word position information.
          Instead of throwing an exception when this information is requested,
          return an empty position list (i.e. behave as a quartz database with
          no position information would).

Sun Dec 15 03:08:28 GMT 2002  Olly Betts <olly@survex.com>

        * backends/muscat36/: DADatabase and DBDatabase ctors need to public
          so that they can called from the database factory functions.
        * api/omenquire.cc,backends/muscat36/,backends/quartz/btree.cc,
          tests/api_db.cc: Fixed compilation warnings.

Sat Dec 14 23:02:55 GMT 2002  Olly Betts <olly@survex.com>

        * docs/quartzdesign.html,docs/todo.xml: Updated.

Sat Dec 14 22:57:41 GMT 2002  Olly Betts <olly@survex.com>

        * backends/quartz/Makefile.am,backends/quartz/quartzcheck.cc,
          backends/quartz/quartzcompact.cc,backends/quartz/quartzdump.cc:
          Enhanced quartzcheck to check all the btrees in a quartz database
          if passed a directory name.  It also default to "v" rather than
          "+" which is more appropriate for an end user checking if tables
          in a non-trivial sized database are corrupt.  Added quartzcompact
          utility to make a copy of a quartz database with full compaction
          turned on - this results in a smaller database which is faster to
          search.  The next update will result in a lot of block splitting
          though (since all blocks are as full as possible).

Sat Dec 14 16:28:11 GMT 2002  Olly Betts <olly@survex.com>

        * NEWS: Updated for 0.6.3 release.

Sat Dec 14 04:28:16 GMT 2002  Olly Betts <olly@survex.com>

        * PLATFORMS,configure.in: Version 0.6.3.

Sat Dec 14 03:54:08 GMT 2002  Olly Betts <olly@survex.com>

        * extra/omparsequery.h,extra/parsequery.yy: Create an "unstem" multimap
          so users can convert the stemmed terms back into their query
          representation.

Sat Dec 14 03:48:27 GMT 2002  Olly Betts <olly@survex.com>

        * docs/todo.xml: Updated.

Sat Dec 14 02:37:41 GMT 2002  Olly Betts <olly@survex.com>

        * docs/todo.xml: Updated.

Sat Dec 14 02:26:29 GMT 2002  Olly Betts <olly@survex.com>

        * docs/remote_protocol.html,net/socketclient.cc,net/socketserver.cc:
          Updated remote protocol description.

Sat Dec 14 02:05:59 GMT 2002  Olly Betts <olly@survex.com>

        * docs/: Updated.

Fri Dec 13 23:43:23 GMT 2002  Olly Betts <olly@survex.com>

        * include/om/om.h.in: Removed bogus // in the middle of a comment.

Fri Dec 13 22:17:41 GMT 2002  Olly Betts <olly@survex.com>

        * configure.in,testsuite/testsuite.cc: Added hooks for using valgrind
          to find leaks in the test suite.  Just need to sort out suitable
          hooks in valgrind now!

Fri Dec 13 19:57:23 GMT 2002  Olly Betts <olly@survex.com>

        * docs/: OmSettings removal updates.

Fri Dec 13 19:44:23 GMT 2002  Olly Betts <olly@survex.com>

        * bindings/: Made a start updating bindings for OmSettings removal.

Fri Dec 13 19:13:36 GMT 2002  Olly Betts <olly@survex.com>

        * api/omenquire.cc,common/omenquireinternal.h,include/om/omenquire.h,
          net/socketclient.cc,tests/api_db.cc: Finished removal of OmSettings
          - all tests now pass once more!

Fri Dec 13 16:35:12 GMT 2002  Olly Betts <olly@survex.com>

        * api/,backends/quartz/quartz_table_manager.h,common/,docs/,include/,
          matcher/,net/,tests/internaltest.cc: Removed last use of OmSettings.
          Just a check-point check in - the code compiles, but doesn't pass
          tests yet.

Fri Dec 13 12:53:01 GMT 2002  Olly Betts <olly@survex.com>

        * netprogs/nettest.cc: Updated disabled code to use new database
          factory functions; Added "using namespace std;".

Thu Dec 12 23:52:32 GMT 2002  Olly Betts <olly@survex.com>

        * docs/todo.xml: Tidied my desk and converted lots of scraps of paper
          to todo entries.

Thu Dec 12 16:43:22 GMT 2002  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: Added workaround for shared_level problem;
          Improved error reporting.

Thu Dec 12 01:05:00 GMT 2002  Olly Betts <olly@survex.com>

        * docs/overview.html: Updated docs on stub databases.

Wed Dec 11 20:49:11 GMT 2002  Olly Betts <olly@survex.com>

        * api/omdatabaseinternal.cc,include/om/omdatabase.h,tests/api_db.cc:
          Reimplemented stub databases in the new scheme of things.
        * backends/inmemory/: fully disabled inmemory_errornext and
          inmemory_abortnext code.

Tue Dec 10 13:47:44 GMT 2002  Olly Betts <olly@survex.com>

        * HACKING: Added note that Bison 1.50 seems to work with Xapian's
          .yy files.

Mon Dec 09 20:13:00 GMT 2002  Olly Betts <olly@survex.com>

        * api/omenquire.cc,common/omenquireinternal.h,docs/todo.xml,
          include/om/omenquire.h,tests/api_db.cc: OmEnquire::get_eset()
          now takes a flags argument of bit constants |-ed together
          instead of 2 bools.

Mon Dec 09 12:52:38 GMT 2002  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc,backends/quartz/btree.h: Applied patch
          from Martin Porter with better fix for sequential addition bug.

Mon Dec 09 09:57:42 GMT 2002  Olly Betts <olly@survex.com>

        * docs/todo.xml: Updated.

Mon Dec 09 07:32:46 GMT 2002  Olly Betts <olly@survex.com>

        * backends/quartz/quartztest.cc: Corrected name of database used
          by test adddoc2 (was using testdb_adddoc1!)

Mon Dec 09 05:10:09 GMT 2002  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_postlist.cc,backends/quartz/quartz_table.cc:
          More fettling.

Mon Dec 09 04:48:39 GMT 2002  Olly Betts <olly@survex.com>

        * backends/quartz/: Minor code fettle.

Mon Dec 09 03:32:11 GMT 2002  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_postlist.cc: Gratuitous layout fettling.

Mon Dec 09 03:30:27 GMT 2002  Olly Betts <olly@survex.com>

        * docs/quartzdesign.html: Improved wording and punctuation in 3
          places.

Mon Dec 09 03:25:09 GMT 2002  Olly Betts <olly@survex.com>

        * common/,docs/todo.xml,include/om/omenquire.h,matcher/,
          net/socketclient.cc,net/socketserver.cc,netprogs/omprogsrv.cc,
          netprogs/omtcpsrv.cc: Fixed the remote backend to handle non-default
          weighting schemes.  You can now even implement your own weighting
          scheme and use it with the remote backend provided you register it
          with SocketServer at runtime.

Sat Dec 07 21:18:39 GMT 2002  Olly Betts <olly@survex.com>

        * PLATFORMS: Updated.

Sat Dec 07 21:09:52 GMT 2002  Olly Betts <olly@survex.com>

        * NEWS,PLATFORMS,configure.in: Version 0.6.2.

Sat Dec 07 20:24:46 GMT 2002  Olly Betts <olly@survex.com>

        * NEWS: Updated.

Sat Dec 07 20:21:41 GMT 2002  Olly Betts <olly@survex.com>

        * docs/quickstart.html: Fixed parameters passed to OmQuartz__open().

Sat Dec 07 20:17:42 GMT 2002  Olly Betts <olly@survex.com>

        * backends/quartz/quartztest.cc: Fixed parameters passed to
          OmQuartz__open().

Sat Dec 07 16:41:25 GMT 2002  Olly Betts <olly@survex.com>

        * docs/tests.html,testsuite/testsuite.cc: The testsuite won't install
          its signal handler if XAPIAN_SIG_DFL is set.

Sat Dec 07 16:39:01 GMT 2002  Olly Betts <olly@survex.com>

        * HACKING: OM_DEBUG_XXX -> XAPIAN_DEBUG_YYY.

Sat Dec 07 04:48:37 GMT 2002  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: max_item_size wasn't being set due to
          some over-zealous code pruning.  It was defaulting to 0, and
          was causing the code to write off the end of allocated memory
          blocks.

Sat Dec 07 03:22:05 GMT 2002  Olly Betts <olly@survex.com>

        * backends/inmemory/,matcher/multimatch.cc: Minor code tidying.
        * backends/quartz/btree.cc: Added Assert in Btree::add() to detect
          running off end of buffer.

Sat Dec 07 03:20:52 GMT 2002  Olly Betts <olly@survex.com>

        * matcher/localmatch.cc: fixed handling of wtscheme() - we were
          trying to use it for the extra weights, and then double
          deleting it!

Fri Dec 06 23:05:22 GMT 2002  Olly Betts <olly@survex.com>

        * api/omstem.cc,backends/quartz/,common/omdebug.cc,common/utils.h,
          matcher/tradweight.cc,net/socketcommon.cc,net/tcpclient.cc,
          tests/api_db.cc: Fixed to build with configure --enable-debug=full.

Fri Dec 06 23:01:08 GMT 2002  Olly Betts <olly@survex.com>

        * common/omdebug.cc,common/omdebug.h: Fixed permissions on newly
          created log file (was getting 000!); Simplified class internals;
          Renamed env vars: OM_DEBUG_FILE is now XAPIAN_DEBUG_LOG,
          OM_DEBUG_TYPES is now XAPIAN_DEBUG_FLAGS (old versions still work
          for now).

Fri Dec 06 22:58:57 GMT 2002  Olly Betts <olly@survex.com>

        * testsuite/testsuite.cc: Fixed so running "gdb .libs/apitest"
          finds srcdir (for an in-tree build at least).

Fri Dec 06 03:51:35 GMT 2002  Olly Betts <olly@survex.com>

        * common/,include/om/omenquire.h,matcher/localmatch.h,matcher/rset.cc,
          matcher/stats.cc: Fixed to compile with GCC 3.0.

Thu Dec 05 23:28:29 GMT 2002  Olly Betts <olly@survex.com>

        * include/om/omdatabase.h: Added missing "std::".

Thu Dec 05 23:27:57 GMT 2002  Olly Betts <olly@survex.com>

        * docs/remote.html: Updated from OmSettings to factory functions.

Thu Dec 05 23:26:42 GMT 2002  Olly Betts <olly@survex.com>

        * PLATFORMS: ixion is actually Linux 2.2.

Thu Dec 05 04:32:40 GMT 2002  Olly Betts <olly@survex.com>

        * testsuite/backendmanager.cc: Fixed BackendManager::do_getdb_quartz()
          and do_getwritedb_quartz() to work correctly and so resolved some
          test failures.

Wed Dec 04 03:35:12 GMT 2002  Olly Betts <olly@survex.com>

        * api/omdatabaseinternal.cc,backends/quartz/,docs/todo.xml,
          include/om/omdatabase.h: Replace create and allow_overwrite
          boolean flags with OM_DB_XXX constants.  And we now support
          OM_DB_CREATE_OR_OPEN which is a common action to want to
          perform, but was fiddly to achieve before.

Tue Dec 03 23:59:30 GMT 2002  Olly Betts <olly@survex.com>

        * docs/todo.xml: Updated.

Tue Dec 03 23:26:27 GMT 2002  Olly Betts <olly@survex.com>

        * api/omenquire.cc,backends/quartz/quartz_postlist.h,common/,
          docs/omsettings,docs/todo.xml,include/om/omenquire.h,matcher/,
          net/socketcommon.cc,net/socketserver.cc,tests/api_db.cc,
          tests/api_posdb.cc: Weighting schemes are now specified by passing
          in a weighting object, rather than via OmSetttings.  The weight
          class can be sub-classed by the library user to allow them to
          specify their own weighting scheme).  Everything works apart
          from the remote backend where the weighting scheme type and
          parameters aren't passed across the link.

Mon Dec 02 20:12:31 GMT 2002  Olly Betts <olly@survex.com>

        * NEWS: Updated with changes since 0.6.1.

Mon Dec 02 19:44:37 GMT 2002  Olly Betts <olly@survex.com>

        * api/ompostlistiterator.cc,backends/multi/multi_postlist.h,
          common/irweight.h,common/leafpostlist.h,matcher/: IRWeight
          renamed to OmWeight in preparation for making it externally
          visible.

Mon Dec 02 18:10:55 GMT 2002  Olly Betts <olly@survex.com>

        * matcher/bm25weight.cc,matcher/irweight.cc,matcher/tradweight.cc,
          matcher/tradweight.h: Started to rework weighting scheme code.

Mon Dec 02 17:36:21 GMT 2002  Olly Betts <olly@survex.com>

        * api/omdatabaseinternal.cc,backends/quartz/quartz_table_manager.cc:
          Tidying up after the recent backend reworking.

Mon Dec 02 03:59:39 GMT 2002  Olly Betts <olly@survex.com>

        * matcher/: Changed BoolWeight ctor not to take an OmSettings
          parameter which is simply ignored.

Mon Dec 02 01:35:41 GMT 2002  Olly Betts <olly@survex.com>

        * include/om/omdatabase.h: Added documentation comments for all of
          the database factory functions.

Sun Dec 01 21:45:49 GMT 2002  Olly Betts <olly@survex.com>

        * include/om: Added \file documentation comments so doxygen
          extracts documentation for functions too.
        * docs/: Made a start on updating for the new database factory
          functions.

Sun Dec 01 15:38:10 GMT 2002  Olly Betts <olly@survex.com>

        * api/,backends/,common/,docs/omsettings,docs/todo.xml,
          include/om/omdatabase.h,netprogs/,tests/,testsuite/backendmanager.cc,
          testsuite/backendmanager.h: No longer use OmSettings to specify
          parameters for constructing databases.  Instead there's a factory
          function for each database type - temporary naming scheme is
          OmXxx__open(), mostly because it's easy to grep for later.  At
          present stub databases and the machinery in InMemory to allow
          the multierrhandler1 test aren't working.  Everything else should
          be.

Thu Nov 28 20:15:47 GMT 2002  Olly Betts <olly@survex.com>

        * api/omenquire.cc,common/omenquireinternal.h,docs/omsettings,
          docs/overview.html,include/om/omenquire.h,tests/api_db.cc:
          No longer use OmSettings in OmEnquire::get_eset(); fixed
          reversed sense of use_query_terms (and fixed reversed sense
          test in apitest which meant this wasn't spotted).

Thu Nov 28 20:14:54 GMT 2002  Olly Betts <olly@survex.com>

        * docs/index.html: Link to annotated class lists in doxygen generated
          documentation rather than rather empty index page.

Thu Nov 28 02:23:33 GMT 2002  Olly Betts <olly@survex.com>

        * configure.in,NEWS: Version 0.6.1.

Thu Nov 28 01:38:05 GMT 2002  Olly Betts <olly@survex.com>

        * PLATFORMS: Updated.

Thu Nov 28 01:33:25 GMT 2002  Olly Betts <olly@survex.com>

        * backends/quartz/: Fixed to compile with GCC 3.0.

Thu Nov 28 01:32:31 GMT 2002  Olly Betts <olly@survex.com>

        * PLATFORMS: Updated with test results from 0.5.4 release.

Wed Nov 27 22:11:38 GMT 2002  Olly Betts <olly@survex.com>

        * backends/quartz/btree.h: fixed "public:" bodge added during
          factoring-out of BtreeCheck.

Wed Nov 27 05:01:14 GMT 2002  Olly Betts <olly@survex.com>

        * NEWS,PLATFORMS,configure.in: Updated for 0.6.0 release.

Wed Nov 27 05:00:39 GMT 2002  Olly Betts <olly@survex.com>

        * AUTHORS,HACKING: Removed or replaced sourceforge.net URLs.

Wed Nov 27 04:58:29 GMT 2002  Olly Betts <olly@survex.com>

        * docs/quartzdesign.html: Reworded "under development" warning;
          Updated Btree::check(), which is now BtreeCheck::check().

Wed Nov 27 01:36:26 GMT 2002  Olly Betts <olly@survex.com>

        * backends/quartz/btreecheck.cc,backends/quartz/btreecheck.h,
          backends/quartz/btreetest.cc: Tidied up BtreeCheck - btreetest now
          sends check output to tout so it's only displayed if the check fails
          (or btreetest is run with -v).

Tue Nov 26 19:47:24 GMT 2002  Olly Betts <olly@survex.com>

        * backends/quartz/: Split the btree checking code out into a separate
          file, so it's not linked in when we don't need it.

Tue Nov 26 05:47:32 GMT 2002  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: Suppress all output from a successful
          Btree::Check() is no options are specified, so that btreetest
          generates clean output when all tests pass.

Tue Nov 19 02:08:30 GMT 2002  Olly Betts <olly@survex.com>

        * NEWS: Updated.

Tue Nov 19 01:46:35 GMT 2002  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc,backends/quartz/btree.h,
          backends/quartz/btreetest.cc,backends/quartz/quartztest.cc,
          docs/quartzdesign.html: Quartz B-tree minimum blocksize is
          now 2048 bytes (as was in fact documented already).  This
          means the max term length is now always 252 bytes.

Mon Nov 18 22:16:57 GMT 2002  Olly Betts <olly@survex.com>

        * api/omenquire.cc,matcher/expand.cc,matcher/expandweight.cc:
          Bit of an expand tidy up.

Mon Nov 18 19:49:09 GMT 2002  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_termlist.cc: I'd put the new termlist stuff
          in the disabled branch of a "#ifdef" so it wasn't being used!  Fixed
          this and made it actually compile as an encore.

Mon Nov 18 02:51:55 GMT 2002  Olly Betts <olly@survex.com>

        * docs/todo.xml: Retargetted 0.6 tasks for 0.7 or 0.8; updated a few
          entries.

Mon Nov 18 02:28:55 GMT 2002  Olly Betts <olly@survex.com>

        * docs/quartzdesign.html,backends/quartz/: We can just store the term
          name raw in position list key, since we know its length from the key
          length; tweaked storing of deltas to store (delta - 1) as 0 is
          invalid.

Mon Nov 18 00:47:54 GMT 2002  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_termlist.cc: First cut of compressed term
          lists.

Sun Nov 17 20:19:23 GMT 2002  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_lexicon.cc,backends/quartz/quartz_values.cc:
          Use new pack_uint_last() and unpack_uint_last() where appropriate.

Sun Nov 17 20:03:24 GMT 2002  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_record.cc,backends/quartz/quartz_utils.h:
          Added a more compact integer packing for the last integer in
          a key or tag.

Sun Nov 17 18:54:05 GMT 2002  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc,backends/quartz/btree.h: more
          int -> bool changes.
        * backends/quartz/btree_base.cc: Clarified comments.

Sun Nov 17 14:19:30 GMT 2002  Olly Betts <olly@survex.com>

        * docs/quartzdesign.html: Updated to reflect removal of Btree_item.

Sun Nov 17 14:12:12 GMT 2002  Olly Betts <olly@survex.com>

        * backends/quartz/: Eliminate Btree_item - wherever it's used we
          only actually want the tag or key, so it's cleaner and clearer
          to just pass a pointer to a string.

Sun Nov 17 13:34:08 GMT 2002  Olly Betts <olly@survex.com>

        * backends/quartz/,docs/quartzdesign.html: Quartz mini-overhaul:
          Removed Btree::Bcursor_create() and just made Bcursor's ctor
          public - now you can just create a Bcursor on the stack rather
          than being forced to use AutoPtr; removed valid_handle - the
          code is clearer without it; sys_close now inlined from header;
          changed int/char to bool where appropriate; changed some methods
          which now always throw on error to return void not bool; moved
          quartztest's test_btree1 to btreetest as test_simple1; changed
          a few remaining uses of "struct Btree" to just plain "Btree";
          brought the btree docs in quartzdesign.html up-to-date, apart
          from the error handling section.

Sat Nov 16 01:45:28 GMT 2002  Olly Betts <olly@survex.com>

        * backends/inmemory/inmemory_database.cc,
          backends/inmemory/inmemory_database.h,
          backends/quartz/quartz_table.cc: Tidying up odds and ends.

Fri Nov 15 17:46:38 GMT 2002  Olly Betts <olly@survex.com>

        * NEWS: Updated ready for 0.6.0 with changes made so far.

Fri Nov 15 17:06:58 GMT 2002  Olly Betts <olly@survex.com>

        * testsuite/testsuite.cc: Avoid double debug output if we get a
          signal inside the testsuite code itself.

Fri Nov 15 17:00:15 GMT 2002  Olly Betts <olly@survex.com>

        * backends/quartz/btree_api.txt,docs/Makefile.am,docs/index.html,
          docs/quartzdesign.html,docs/remote_protocol.html,
          net/README_progprotocol.txt: Converted Btree API documentation
          to HTML and add it to the quartz design document; converted the
          (seriously out of date) remote protocol document to HTML, moved it
          into docs/, and linked it in.

Fri Nov 15 13:05:06 GMT 2002  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_record.cc,backends/quartz/quartz_utils.h,
          docs/quartzdesign.html: Changed encoding of keys for quartz record
          and termlist tables.

Fri Nov 15 12:54:39 GMT 2002  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_table_entries.cc: Fixed
          QuartzTableEntries::empty() which would never return true before.

Fri Nov 15 03:08:49 GMT 2002  Olly Betts <olly@survex.com>

        * backends/quartz/btree_api.txt: Fixed typos.

Fri Nov 15 03:06:41 GMT 2002  Olly Betts <olly@survex.com>

        * backends/quartz/quartztest.cc,backends/quartz/btreetest.cc:
          added another test (btreetest: emptykey1) and added extra
          checks to existing tests.

Thu Nov 14 01:59:06 GMT 2002  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc,tests/api_db.cc,docs/todo.xml:
          match_sort_bands code fettled, and added regression test for the
          >100% problem (test_sortbands1).

Tue Nov 12 00:00:44 GMT 2002  Olly Betts <olly@survex.com>

        * backends/inmemory/inmemory_database.h,backends/quartz/,
          include/om/omtypes.h: Pushed average length calc down into
          QuartzRecordManager; removed unnecessary types om_totlength
          and om_termid.

Mon Nov 11 18:10:23 GMT 2002  Olly Betts <olly@survex.com>

        * docs/index.html: Fixed broken link.

Mon Nov 11 18:07:41 GMT 2002  Olly Betts <olly@survex.com>

        * backends/quartz/,docs/quartzdesign.html: Store next free docid
          and total doc length in the same tag in QuartzRecord.

Wed Nov 06 22:38:40 GMT 2002  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_database.cc,backends/quartz/quartz_database.h:
          Eliminated QuartzDatabase::get_doccount_internal() and
          QuartzDatabase::get_avlength_internal() - now the thread
          locking code has gone, the indirection serves no purpose.

Wed Nov 06 17:50:12 GMT 2002  Olly Betts <olly@survex.com>

        * backends/quartz/: Removed QuartzBufferedTable::write() (unused and
          unimplemented), and merged QuartzBufferedTable::write_internal()
          into QuartzBufferedTable::write_internal().

Wed Nov 06 01:56:41 GMT 2002  Olly Betts <olly@survex.com>

        * backends/quartz/: disable quartz lexicon table unless USE_LEXICON
          is defined.

Wed Nov 06 01:54:30 GMT 2002  Olly Betts <olly@survex.com>

        * docs/overview.html: Corrected link to API docs on website.

Mon Nov 04 02:35:22 GMT 2002  Olly Betts <olly@survex.com>

        * include/om/omerror.h,net/omerr_string.cc,netprogs/omprogsrv.cc,
          netprogs/omtcpsrv.cc,testsuite/testsuite.cc: don't use typeid().

Mon Nov 04 01:31:47 GMT 2002  Olly Betts <olly@survex.com>

        * testsuite/testsuite.cc: Catch by const reference.

Mon Nov 04 01:18:53 GMT 2002  Olly Betts <olly@survex.com>

        * HACKING: Added note about use of various C++ features.  Also
          tidied up various odds and ends.

Sun Nov 03 22:59:34 GMT 2002  Olly Betts <olly@survex.com>

        * api/omdatabaseinternal.cc: Eliminated entirely superfluous use of
          dynamic_cast.

Sun Nov 03 22:46:34 GMT 2002  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc,common/database.h,common/net_database.h:
          Replace Database::is_network() with Database::as_networkdatabase()
          which returns a pointer or NULL.  This eliminates the need to use
          dynamic_cast in MultiMatch.

Wed Oct 23 05:24:14 BST 2002  Olly Betts <olly@survex.com>

        * docs/todo.xml: Resolved TODO entry by consulting Stroustrup
          (it is safe to throw and catch an exception in a destructor,
          even when that destructor is being called during a stack unwind
          caused by an exception being thrown).

Wed Oct 16 20:05:39 BST 2002  Olly Betts <olly@survex.com>

        * backends/quartz/btreetest.cc: Suppress (most) output from
          Btree::check unless verbose (-v) is enabled.

Mon Oct 14 15:13:18 BST 2002  Olly Betts <olly@survex.com>

        * testsuite/testsuite.cc: Fixed compilation problem with std:: on
          GCC 3.2.

Mon Oct 14 15:07:03 BST 2002  Olly Betts <olly@survex.com>

        * api/omstem.cc: French and Finnish stemmers were switched!

Mon Oct 14 02:49:12 BST 2002  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_utils.h: change sort preserving packing for
          strings.  This one does better provided the strings being packed
          don't contain many zero bytes (which is true of the termnames which
          we pack with this).

Mon Oct 14 02:45:20 BST 2002  Olly Betts <olly@survex.com>

        * tests/stemtest.cc: Updated to reflect new naming of stemming test
          data.

Sun Oct 13 17:06:26 BST 2002  Olly Betts <olly@survex.com>

        * docs/todo.xml: Updated.

Sun Oct 13 16:40:24 BST 2002  Olly Betts <olly@survex.com>

        * api/omstem.cc,backends/quartz/,common/,extra/omparsequery.h,matcher/,
          net/socketclient.cc: Added private copy ctors and assignment
          operators to classes with pointer members (which shouldn't be
          copied).

Sun Oct 13 15:12:40 BST 2002  Olly Betts <olly@survex.com>

        * docs/todo.xml: Updated.

Sun Oct 13 02:33:57 BST 2002  Olly Betts <olly@survex.com>

        * .cvsignore: Added install-sh.

Sun Oct 13 02:16:31 BST 2002  Olly Betts <olly@survex.com>

        * backends/quartz/{quartz_lexicon.cc,quartz_lexicon.h}: key to lexicon
          is now simply the termname - no need to encode the length there too
          since the Btree knows how long the key is.
        * backends/quartz/{quartz_table_manager.cc,quartz_values.cc}: finished
          the terminology change from "attribute" to "value" (including
          renaming the btree files, which is why it wasn't done before).

Sun Oct 13 02:09:00 BST 2002  Olly Betts <olly@survex.com>

        * tests/api_db.cc: Snowball stems "this" to "this" rather than "thi",
          so update apitest source to reflect this.

Sun Oct 13 01:03:04 BST 2002  Olly Betts <olly@survex.com>

        * configure.in: Removed references to languages/*/Makefile.

Sun Oct 13 00:50:01 BST 2002  Olly Betts <olly@survex.com>

        * docs/indexerquickstart.html,docs/quartzdesign.html: Updated.

Sat Oct 12 23:34:52 BST 2002  Olly Betts <olly@survex.com>

        * languages/{api.c,api.h,header.h,utilities.c}: 4 new files.

Sat Oct 12 23:29:50 BST 2002  Olly Betts <olly@survex.com>

        * languages/: removed all the old .cvsignore files.

Sat Oct 12 22:34:01 BST 2002  Olly Betts <olly@survex.com>

        * api/omstem.cc,docs/stemming.html,docs/todo.xml,languages/: Replaced
          our stemmers with those from Snowball.  Note that these give better
          results, but this also means that existing databases won't work
          quite correctly if they contain stemmed terms.

Sat Oct 12 17:17:26 BST 2002  Olly Betts <olly@survex.com>

        * configure.in,NEWS: Version 0.5.3.

Sat Oct 12 16:49:50 BST 2002  Olly Betts <olly@survex.com>

        * PLATFORMS,api/omvalueiteratorinternal.h,extra/parsequery.yy,
          include/om/omdocument.h: Fixed std:: namespace issues to
          allow compilation with GCC 3 once again.

Sat Oct 12 15:43:22 BST 2002  Olly Betts <olly@survex.com>

        * docs/todo.xml: Updated.

Fri Oct 11 02:14:47 BST 2002  Olly Betts <olly@survex.com>

        * backends/quartz/Makefile.am: Include test data for btreetest
          in distribution tarball.

Fri Oct 11 01:43:03 BST 2002  Olly Betts <olly@survex.com>

        * backends/quartz/{z_note,z_sequence,z_Cversion/,z_make/,z_test/}:
          Removed all the unused old C btree stuff.

Thu Oct 10 17:32:10 BST 2002  Olly Betts <olly@survex.com>

        * backends/quartz/{btree.cc,btree.h}: More Btree tidying.

Thu Oct 10 17:14:28 BST 2002  Olly Betts <olly@survex.com>

        * backends/quartz/{bcursor.cc,btree.cc,btree.h}: Btree::prev* and
          Btree::next* are no longer static methods.
        * backends/quartz/btree.h: Tweaked comments so doxygen will
          understand them.

Thu Oct 10 16:12:29 BST 2002  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_postlist.cc: return docids rather
          than passing in a pointer to fill in.

Thu Oct 10 16:08:22 BST 2002  Olly Betts <olly@survex.com>

        * backends/quartz/quartzcheck.cc: Fixed #include-d files;
          Example in usage message now uses the directory where
          omega looks for its database by default.

Thu Oct 10 15:25:10 BST 2002  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc,backends/quartz/btree.h: More comment
          improvements; Removed superfluous Cursor parameter from
          Btree::add_kt() - it always gets passed the C member of Btree
          which we have available anyway.

Thu Oct 10 14:49:11 BST 2002  Olly Betts <olly@survex.com>

        * backends/quartz/btree.cc: Removed "struct" from in front of
          Btree and Cursor; Updated and reformatted many comments.

Thu Oct 10 03:45:56 BST 2002  Olly Betts <olly@survex.com>

        * testsuite/backendmanager.cc: Reworded comment to make it clearer.

Thu Oct 10 03:29:52 BST 2002  Olly Betts <olly@survex.com>

        * docs/todo.xml: Updated.

Wed Oct 09 14:05:07 BST 2002  Olly Betts <olly@survex.com>

        * backends/quartz/{quartz_alltermslist.cc,quartz_alltermslist.h,
          quartz_database.cc}: Implemented
          QuartzAllTermsList::get_approx_size().

Wed Oct 09 10:46:42 BST 2002  Olly Betts <olly@survex.com>

        * extra/omparsequery.h,include/om/omvalueiterator.h: Don't use
          "using std::foo;" in externally visible headers.

Wed Oct 09 10:26:05 BST 2002  Olly Betts <olly@survex.com>

        * extra/omparsequery.h: fixed unused parameter warning.

Tue Oct 08 20:32:46 BST 2002  Olly Betts <olly@survex.com>

        * tests/stemtest.cc: Added missing space to output.

Tue Oct 08 20:10:35 BST 2002  Olly Betts <olly@survex.com>

        * With GCC, add warning flags "-Wall -W" rather than "-Wall -Wunused"
          (-Wall implies -Wunused anyway).  Fixed all the warnings this throws
          up, except in languages/ (that code is to be replaced with Snowball
          soon).

Tue Oct 08 19:57:03 BST 2002  Olly Betts <olly@survex.com>

        * testsuite/: Disable colour test output if stdout isn't a terminal;
          reworked check for broken exception handling as the previous
          version never seemed to fire; added "using" for all the things
          we want from std::; improved how signal handlers are set and
          unset; report exception class for exceptions derived from OmError
          rather than a blanket "OMEXCEPT"; added private copy ctor and
          assignment to test_driver to prevent copying.

Tue Oct 08 19:53:02 BST 2002  Olly Betts <olly@survex.com>

        * include/om/Makefile.am: remove include/om/om.h on "make distclean",
          not "make clean".  Otherwise "./configure ; make clean ; make"
          fails which is wrong.

Sun Oct 06 18:37:39 BST 2002  Olly Betts <olly@survex.com>

        * PLATFORMS: Updated.
        * docs/: Removed Martin's paper - background information for stemmers
          is best left to the Snowball documentation.

Sat Oct 05 20:31:55 BST 2002  Olly Betts <olly@survex.com>

        * NEWS,configure.in: 0.5.2 release.

Sat Oct 05 03:01:49 BST 2002  Olly Betts <olly@survex.com>

        * PLATFORMS: Updated.

Sat Oct 05 02:09:35 BST 2002  Olly Betts <olly@survex.com>

        * docs/todo.xml: Updated.

Fri Oct 04 22:34:12 BST 2002  Olly Betts <olly@survex.com>

        * PLATFORMS,testsuite/testutils.h: Code to spot mishandled exceptions
          doesn't always work - noted this in PLATFORMS, and tweaked the code
          a little.

Fri Oct 04 19:08:08 BST 2002  Olly Betts <olly@survex.com>

        * backends/quartz/.cvsignore: Added quartzcheck.

Fri Oct 04 18:24:55 BST 2002  Olly Betts <olly@survex.com>

        * docs/: converted all text docs to HTML (except omsettings which will
          has odd markup (LaTeX?) and will probably soon be obsolete anyway).
        * docs/todo.xml: updated.

Fri Oct 04 17:18:33 BST 2002  Olly Betts <olly@survex.com>

        * net/socketcommon.cc: Fixed handling of timeouts in the past.

Fri Oct 04 13:51:39 BST 2002  Olly Betts <olly@survex.com>

        * PLATFORMS,testsuite/testutils.h: Use typeid() to spot when GCC 2.95
          mishandles an exception, and don't count this as a test failure.

Fri Oct 04 03:59:29 BST 2002  Olly Betts <olly@survex.com>

        * api/omdatabaseinternal.cc,backends/multi/multi_termlist.h,
          matcher/multimatch.cc,matcher/networkmatch.cc,matcher/networkmatch.h:
          pulled uses of dynamic_cast<> to higher up in the code.

Fri Oct 04 03:53:44 BST 2002  Olly Betts <olly@survex.com>

        * PLATFORMS,backends/quartz/{btree.cc,quartz_metafile.cc}: Fixed quartz
          problems on platforms where sizeof(long) != 4.
        * PLATFORMS: Updated in the light of investigations into test failures
          on x86 Redhat Linux - only multierrhandler1 with the remote backend
          is actually a problem.

Wed Oct 02 16:32:48 BST 2002  Olly Betts <olly@survex.com>

        * NEWS: Updated for 0.5.1 release.

Wed Oct 02 16:01:50 BST 2002  Olly Betts <olly@survex.com>

        * PLATFORMS,configure.in: 0.5.1 release.

Tue Oct 01 13:34:24 BST 2002  Olly Betts <olly@survex.com>

        * docs/: tweaked navigation links in index.html; converted bm25
          text document to HTML and linked it in; added todo entry to
          locate the "illusion of control" paper.

Tue Oct 01 12:48:41 BST 2002  Olly Betts <olly@survex.com>

        * docs/: renamed intro.html to install.html, and userman.html to
          overview.html; changed navbar on index.html.

Tue Oct 01 12:37:20 BST 2002  Olly Betts <olly@survex.com>

        * bootstrap: fixed adding of directory with xapian.m4 in to
          ACLOCAL_FLAGS; added trap to tell user if bootstrapping failed.

Tue Oct 01 12:33:38 BST 2002  Olly Betts <olly@survex.com>

        * HACKING,Makefile.am,bootstrap,buildall,xapian.spec.in,
          autoconf/dir_contents,docs/todo.xml: Added bootstrap script as a
          replacement for buildall (buildall left in place for now until
          bootstrap receives wider testing).

Tue Oct 01 12:19:32 BST 2002  Olly Betts <olly@survex.com>

        * HACKING,Makefile.am,configure.in,PLATFORMS: require automake 1.6.3
          (and hence autoconf 2.54) to fix problem building tests/internaltest
          with Solaris make.

Mon Sep 30 20:30:42 BST 2002  Olly Betts <olly@survex.com>

        * PLATFORMS: Improved wording about bogus OMEXCEPT failures);
          Added results for OpenBSD 3.0 and Solaris 8 on x86 (both work).

Mon Sep 30 20:25:03 BST 2002  Olly Betts <olly@survex.com>

        * docs/: Pruned .cvsignore; removed cvs.html (link to CVS info
          on website directly); removed using_stemmers.html - those
          wishing to use the C API to the stemmers ought to look at
          Snowball instead; include HTML versions of quickstart*.cc
          in tarballs; improved wording in various places.

Mon Sep 23 19:33:31 BST 2002  Olly Betts <olly@survex.com>

        * net/Makefile.am: Fixed building of readquery.cc from readquery.ll.

Sun Sep 22 03:57:20 BST 2002  Olly Betts <olly@survex.com>

        * PLATFORMS: Updated.

Fri Sep 20 15:09:25 BST 2002  Olly Betts <olly@survex.com>

        * PLATFORMS: Added note about bogus OMEXCEPT test failures with
          GCC 2.95.

Fri Sep 20 01:36:35 BST 2002  Olly Betts <olly@survex.com>

        * NEWS,PLATFORMS,configure.in: 0.5.0 release!

Fri Sep 20 01:01:52 BST 2002  Olly Betts <olly@survex.com>

        * Makefile.am: Perl module we need to process todo.xml is XML::Parser
          not XML, so corrected error message.
        * configure.in: Commented out MSG_WARN() when Perl modules XML::Parser
          or Text::Format aren't found.  In a release tarball, this only
          matters if you modify docs/todo.xml, and the warning message(s) may
          alarm those building the software.

Thu Sep 19 00:57:23 BST 2002  Olly Betts <olly@survex.com>

        * .cvsignore: Added depcomp, missing, mkinstalldirs.

Thu Sep 19 00:49:01 BST 2002  Olly Betts <olly@survex.com>

        * HACKING: Added note about safe way to generate files in make rules.

Thu Sep 19 00:45:51 BST 2002  Olly Betts <olly@survex.com>

        * PLATFORMS: Tested on Solaris 7 with GCC 2.95.3 (works) and Solaris 8
          Sun Workshop C++ compiler (fails to compile).

Thu Sep 19 00:41:53 BST 2002  Olly Betts <olly@survex.com>

        * ar-wrapper-solaris,ltconfig,Makefile.am: libtool 1.4 doesn't use
          ltconfig, and that's the only thing that uses ar-wrapper-solaris,
          so removed both.  Fairly sure the problem they address was fixed
          in libtool so time ago.  Xapian doesn't build with Sun's C++
          compiler at the moment anyway, so it's moot for the release.

Thu Sep 19 00:26:37 BST 2002  Olly Betts <olly@survex.com>

        * docs/todo2html.pl: Handle release "*" specially - it indicates
          tasks to be done for each release.

Thu Sep 19 00:05:40 BST 2002  Olly Betts <olly@survex.com>

        * configure.in,include/om/om.h.in: Tweaked how generation of om.h
          works to avoid problems with Sun's C++ compiler.

Wed Sep 18 19:21:47 BST 2002  Olly Betts <olly@survex.com>

        * net/Makefile.am,net/readquery.ll: #include <config.h>
          must be included before any other headers, but that seems to be
          impossible to arrange in lex/flex so we use echo and cat in the
          Makefile to arrange this.

Wed Sep 18 17:35:00 BST 2002  Olly Betts <olly@survex.com>

        * include/om/Makefile.am: We want to install om/om.h, but not
          distribute it or people with a different compiler to whoever
          ran "make dist" will get the "ABI mismatch" error.

Wed Sep 18 13:16:14 BST 2002  Richard Boulton <richard@tartarus.org>

        * docs/.cvsignore: Add docs/doxygen_full_warnings.
        * include/om/.cvsignore: Add include/om/om.h.

Wed Sep 18 11:06:12 BST 2002  James Aylett  <tartarus@users.sourceforge.net>

        * include/om/Makefile.am: We really should install om/om.h, or
          applications can't build against us.

Wed Sep 18 05:10:24 BST 2002  Richard Boulton <richard@tartarus.org>

        * docs/doxygen_{api,full}_header.html_tmpl: Remove meta robots tag -
          why shouldn't this be indexed?  Now the omega I set up pointing
          at copies of this should actually index something.

Wed Sep 18 04:52:20 BST 2002  Olly Betts <olly@survex.com>

        * configure.in: Merged two sed invocations into one - we don't want
          configure to run any slower than it has to.

Wed Sep 18 04:17:58 BST 2002  Richard Boulton <richard@tartarus.org>

        * configure.in: Don't put confdefs.h into SOURCEDOC_H_SRC - this
          file only exists during the configure run.  Fixes failure of
          "make doxygen_docs" in docs/

Tue Sep 17 13:07:39 BST 2002  James Aylett  <tartarus@users.sourceforge.net>

        * Updated PLATFORMS file.

Mon Sep 16 19:40:02 BST 2002  Olly Betts <olly@survex.com>

        * docs/todo.xml: Updated.

Mon Sep 16 18:09:29 BST 2002  Olly Betts <olly@survex.com>

        * tests/api_db.cc: don't run consistency1 test on the remote backend
          - it's particularly slow with that, and testing it there doesn't
          actually improve the test coverage really.

Mon Sep 16 17:15:46 BST 2002  Olly Betts <olly@survex.com>

        * configure.in,docs/Makefile.am: Added workaround for pattern length
          limits in Solaris sed.

Mon Sep 16 17:13:20 BST 2002  Olly Betts <olly@survex.com>

        * include/om/om.h.in: Added explanatory comments for developers.

Mon Sep 16 14:22:48 BST 2002  James Aylett  <tartarus@users.sourceforge.net>

        * om/om.h needs to be in CLEANFILES or make distcheck fails

Mon Sep 16 13:37:04 BST 2002  James Aylett  <tartarus@users.sourceforge.net>

        * Now om/om.h is built from om/om.h.in, it may be in the build
          directly. Consequently, we need to add that to the include path
          for VPATH builds. Plus (also for VPATH), om/om.h needs to be
          output after AC_OUTPUT, because otherwise the destination
          directory may not exist.

Mon Sep 16 04:19:54 BST 2002  Olly Betts <olly@survex.com>

        * configure.in,docs/todo.xml,include/om/Makefile.am,include/om/om.h,
          include/om/om.h.in: When building the library with GCC, generate
          include/om/om.h with preprocessor code to check that any version
          of GCC used to build applications has a matching C++ ABI.

          This means that users get a nice explanatory error message rather
          than a confusing link failure (or worse a program which builds
          but crashes).  Another benefit is that the check happens near the
          start of compilation of the first source file which uses Xapian
          in the user's application, rather than during the first attempt
          to link with Xapian.

Sun Sep 15 01:42:19 BST 2002  Olly Betts <olly@survex.com>

        * net/tcpserver.cc: Solved std mystery - "using namespace std;" was
          inside a #ifdef which wasn't enabled!

Sun Sep 15 01:21:34 BST 2002  Richard Boulton <richard@tartarus.org>

        * tests/tcpserver.cc: Hacky fix to compile with gcc-3.2 snapshot in
          Debian unstable - add a FIXME to work out why this is needed.
        * todo: add entry about checking ABI versions using
          __GXX_ABI_VERSION macro.

Sat Sep 14 22:39:11 BST 2002  Olly Betts <olly@survex.com>

        * configure.in,tests/Makefile.am,tests/internaltest.cc: It turns out
          that internaltest *does* need -fno-access-control, so put it back.
          Not quite sure how I missed this.  Changed to skip refcnt tests
          when -fno-access-control isn't available (rather than omitting them
          entirely).

        * tests/api_db.cc: Fixed compile problem.

Sat Sep 14 21:44:34 BST 2002  Olly Betts <olly@survex.com>

        * internaltest: doesn't actually need -fno-access-control these
          days, so removed it and the configure tests for it.

        * stemtest: recoded to be all in C++ and removed use of intermediate
          files for random data tests - now runs ~15% faster; no longer need
          HAVE_PERL so removed from configure.

        * apitest: use C++ streams rather than stdio; stubdb1 now cleans up
          the temporary file it creates.

Sat Sep 14 12:54:52 BST 2002  Olly Betts <olly@survex.com>

        * docs/Makefile.am: fix "mv apidoc/latex/refman.ps avidoc.ps" which
          fails after recent change.

Sat Sep 14 11:15:33 BST 2002  James Aylett  <tartarus@users.sourceforge.net>

        * Renamed simple* programs in quickstart docs to quickstart* to
          avoid confusion with the simple* programs in xapian-examples.
          (Thanks to Alex Bowley for pointing out the confusion.)

Sat Sep 14 10:00:35 BST 2002  James Aylett  <tartarus@users.sourceforge.net>

        * configure.in: returned AC_CONDITIONAL for HAVE_PERL

Sat Sep 14 09:29:08 BST 2002  Richard Boulton <richard@tartarus.org>

        * buildall: change to srcdir before testing for necessary tools
          so that scripts which guess which autotools version to use have more
          information available to guess with: for example, the Debian
          autoconf version guessing script looks for "configure.ac" as a sign
          that autoconf 2.50+ is required.

Sat Sep 14 02:50:23 BST 2002  Olly Betts <olly@survex.com>

        * docs/distributed.txt,docs/quartzdesign.html,docs/todo.xml: assorted
          documentation updates.

Sat Sep 14 02:10:12 BST 2002  Olly Betts <olly@survex.com>

        * PLATFORMS: removed note about VPATH problems.

Sat Sep 14 02:02:58 BST 2002  Olly Betts <olly@survex.com>

        * btree.cc,btree.h: rearranged Btree::del() so control flow is clearer.

Sat Sep 14 01:56:44 BST 2002  Olly Betts <olly@survex.com>

        * HACKING,docs/Makefile.am: added evil hack to allow VPATH builds to
          work with BSD make.

Wed Sep 11 11:29:07 BST 2002  Olly Betts <olly@survex.com>

        * backends/database_builder.cc: Quartz is fairly mature - change
          comment which suggests that the btree names will change.

Wed Sep 11 11:13:43 BST 2002  Olly Betts <olly@survex.com>

        * configure.in: Don't double quote `$MISSING foo' as autoconf adds them
        * docs/Makefile.am: Use `test a = b' rather than `test a == b'

Tue Sep 10 14:50:16 BST 2002  Olly Betts <olly@survex.com>

        * configure.in: tweaked test for perl modules - stderr is now
          fully suppressed on sh (which behaves slightly differently to bash).

Tue Sep 10 14:27:15 BST 2002  Richard Boulton <richard@tartarus.org>

        * backend_manager.cc: Fix stub database code so that it doesn't use
          the gnu extension "getline()".

Tue Sep 10 13:51:20 BST 2002  Olly Betts <olly@survex.com>

        * quartz_table.cc: don't form tag when we just want to check if a
          key is present before calling Btree::del().  Working out why
          we can't call Btree::del() would still be worthwhile though.

Tue Sep 10 13:02:04 BST 2002  Olly Betts <olly@survex.com>

        * quartztest.cc: removed unused #include-s; describe valid options
          in usage message.

Tue Sep 10 02:07:29 BST 2002  Olly Betts <olly@survex.com>

        * remote backend: implemented term_exists() and get_termfreq();
          added test to check they work.

Mon Sep  9 12:59:15 BST 2002  Richard Boulton <richard@tartarus.org>

        * Add stub databases: if backend type is auto, and auto_dir points
          to a file, read in settings from the file (overwriting the
          existing ones), and then use them to open the database.
          This allows, for example, omega to open a remote database by
          putting in a stub database file in the omega directory.
          Updated documentation for opening databases in userman.html.
        * apitest: Added test for stub databases.

Mon Sep 09 02:26:36 BST 2002  Olly Betts <olly@survex.com>

        * Documentation updates: move suggested books into intro_ir.html
          and added URL for citeseer reference Richard posted to mailing
          list recently; clarified wording in a couple of places.

Sat Sep  7 12:52:12 2002  James Aylett  <tartarus@users.sourceforge.net>

        * docs: fixed references to OmDocumentContents (now OmDocument)
          which had clearly been broken for a while. Also fixed get_data()
          and set_data() example usage so it reflects reality (I hope).

Wed Sep 04 22:46:17 BST 2002  Olly Betts <olly@survex.com>

        * Corrected min_item.wt to min_wt in two assertions.

Thu Aug 15 11:42:20 BST 2002  Richard Boulton <richard@tartarus.org>

        * buildall: Only add the directory derived from xapian-config
          to ACLOCAL_FLAGS if it actually exists.

Mon Aug 12 01:13:55 BST 2002  Richard Boulton <richard@tartarus.org>

        * quartz_table.cc: Check that a key exists before calling
          Btree::del() - there seems to be a bug in the btree code
          causing a failure when deleting keys if they don't exist.
          This work around appears to make things work correctly, but
          won't be terribly efficient.

Mon Aug 12 00:09:21 BST 2002  Richard Boulton <richard@tartarus.org>

        * quartz_table_manager.cc: When unable to apply modifications,
          call cancel on the buffered table after reopening disk table
          at old revision - otherwise, the entry count gets messed up.
        * quartz_table.cc, quartz_database.cc: Improve debugging and
          error reporting: I'm trying to work out why the failure Olly
          reported is occurring.

Sat Aug 10 15:12:42 2002  James Aylett  <tartarus@users.sourceforge.net>

        * Fixed missing include in quartzcheck.cc

Sat Aug 10 14:57:17 2002  James Aylett  <tartarus@users.sourceforge.net>

        * Fixed typo in quartzcheck.cc

Tue Jul 23 22:12:34 BST 2002  James Aylett  <tartarus@users.sourceforge.net>

        * Added a note to the effect that the indexgraph stuff isn't
          really considered useful to the HTML document introducing it.

Tue Jul 23 22:09:39 BST 2002  James Aylett  <tartarus@users.sourceforge.net>

        * Added some comments in quartztest test_create1(), in case anyone
          else who didn't write it needs to understand it.

        * Added Olly as an active participant to the AUTHORS file :)

Tue Jul 23 21:59:50 BST 2002  James Aylett  <tartarus@users.sourceforge.net>

        * Reworded quickstart document so it does not refer to the example
          code (it was never actually in sync).

Mon Jul 22 14:07:18 BST 2002  Sam Liddicott <sam@ananova.com>

        * Forgot to actually add the quartzcheck.cc file last time

Mon Jul 22 13:28:09 BST 2002  Sam Liddicott <sam@ananova.com>

        * Add buildprereq to package
          Add quartzcheck which runs btree::check to backends

Tue Jul 16 09:44:56 BST 2002  Sam Liddicott <sam@ananova.com>

        * Fix banding problem; bands are now based on the percentage
          not the weight, and using integer maths to avoid problems
          with ceil() rounding up supposed integers which are really
          slightly larger due to precision errors

Thu Jul 11 00:16:22 BST 2002  Olly Betts <olly@survex.com>

        * configure.in, docs/Makefile.am: configure fixes for Solaris - clear
          cached result for fdatasync since it may be wrong if we decide we
          need to link librt; split SOURCEDOC_SRC into two to avoid hitting
          4096 char line length in Solaris sed.

Tue Jul 09 17:47:31 BST 2002  Olly Betts <olly@survex.com>

        * PLATFORMS, tests/Makefile.am: improved internaltest.cc automake rules
          - they should now work in VPATH builds with Solaris make.

Tue Jul 09 03:30:41 BST 2002  Olly Betts <olly@survex.com>

        * configure.in, docs/Makefile.am: Fixed up apidoc and sourcedoc
          dependencies so that they work correctly in VPATH builds.  Also
          only use portable find arguments to generate SOURCEDOC_SRC.

Sat Jul 06 13:53:27 BST 2002  Olly Betts <olly@survex.com>

        * xapian.spec.in: Updated in preparation for release.

Sat Jul 06 13:04:45 BST 2002  Olly Betts <olly@survex.com>

        * docs/Makefile.am: Run latex twice to get forward references resolved.

Fri Jul 05 18:23:08 BST 2002  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: better (perhaps even completely correct) fix
          for sorting into bands.

        * matcer/localmatch.cc: removed entirely bogus comment from over-eager
          cut-and-paste.

        * tests/api_db.cc: added otherwise pointless statement to deldoc3
          which seems to fix occasional miscompilation by GCC 2.95.

Fri Jul 05 16:37:12 BST 2002  Olly Betts <olly@survex.com>

        * docs/Makefile.am: "make dist" now fails if dot (part of graphviz)
          isn't installed.

Fri Jul 05 08:54:33 BST 2002  Sam Liddicott <sam@ananova.com>

        * bindings/: removed some typemap hacks as swig has better typemaps now

Fri Jul 05 08:46:06 BST 2002  Sam Liddicott <sam@ananova.com>

        * matcher/multimatch.cc: Quick hack to stop 100% being in a band all on
          its own.  The real problem is that bands need to include the integer
          at the upper end of the range, rather than the lower end.

Thu Jul 04 16:23:52 BST 2002  Olly Betts <olly@survex.com>

        * docs/mkdoc.pl: Fixed to work in VPATH builds.

Thu Jul 04 12:42:06 BST 2002  Olly Betts <olly@survex.com>

        * configure.in, docs/Makefile.am: use "missing" to give more helpful
          errors when we don't find tools we need.

Wed Jul 03 12:39:15 BST 2002  Olly Betts <olly@survex.com>

        * NEWS: incorporated recent changes into provisional version.

        * docs/: sorted out make rules for running doxygen; don't tell doxygen
          to build man pages which we aren't using.

Tue Jul 02 16:36:54 BST 2002  Olly Betts <olly@survex.com>

        * docs/: run through ispell; fixed OM_MOP to OmQuery::OP; other
          corrections.

Fri Jun 28 02:59:49 BST 2002  Olly Betts <olly@survex.com>

        * Backend "auto" now works when creating an OmWritableDatabase which
          doesn't already exist - it'll pick a backend which supports writing
          and is compiled in (currently this means quartz).

Thu Jun 27 20:31:13 BST 2002  Richard Boulton <richard@tartarus.org>

        * backends/quartz/btreetest.cc (sequent1): Add regression test for
          recently fixed bug with sequential addition.
        * backends/quartz/z_data/ordnum[+-]: Data files for new test.

Thu Jun 27 13:13:37 BST 2002  Olly Betts <olly@survex.com>

        * Documentation fettling: removed docs/Notes and
          docs/coding_policy.txt moving relevant content into HACKING,
          common/postlist.h, docs/todo.xml, and include/om/omtypes.h; install
          docs as PostScript rather than DVI; include text docs in tarball and
          install them; "make dist" will now fail if a tool needed to build
          docs is missing; removed last vestiges of Doc++ support;
          doc/Makefile no longer uses include (include isn't portable);
          improved doc/tests.txt.

Thu Jun 27 12:10:37 BST 2002  Olly Betts <olly@survex.com>

        * apitest: doesn't directly use anything from utils.h, so don't
          #include it.

Thu Jun 27 12:05:53 BST 2002  Olly Betts <olly@survex.com>

        * Removed includetest - it was useful early in development, but isn't
          really now.

Wed Jun 26 22:09:57 BST 2002  Olly Betts <olly@survex.com>

        * apitest: deldoc2 and deldoc3 now pass when the library is compiled
          with --enable-debug.

Wed Jun 26 19:35:56 BST 2002  Olly Betts <olly@survex.com>

        * Removed code which causes quartztest to fail with an --enable-debug
          build.

Wed Jun 26 13:55:11 BST 2002  Olly Betts <olly@survex.com>

        * todo.xml: added note to fix 100% being in its own sort band.

Wed Jun 26 13:46:02 BST 2002  Richard Boulton <richard@tartarus.org>

        * btree.cc: Fix splitting of blocks in sequential mode to ensure
          that split happens no earlier than the midpoint.

Wed Jun 26 12:32:47 BST 2002  Richard Boulton <richard@tartarus.org>

        * btree.cc: Asserts to check that add_item in sequential mode
          when splitting a block is not trying to add to the wrong block,
          or to add to a new block which is not empty (or containing more
          than one item).

Tue Jun 25 17:53:19 BST 2002  Olly Betts <olly@survex.com>

        * Assert that the value of c is sane in GETINT1, etc.

Tue Jun 25 16:30:09 BST 2002  Olly Betts <olly@survex.com>

        * btreetest.cc: use C++ IO rather than C stdio; removed commented out
          LFSinsertdelete1 test (it was never written and a test suite which
          creates 2G files is probably a bit too resource hungry).

Tue Jun 25 13:56:01 BST 2002  Olly Betts <olly@survex.com>

        * btree/quartz: More use of const pointers; more use of C++ strings.

Wed Jun 19 08:56:00 BST 2002  Sam Liddicott <sam@ananova.com>

        * Fixed spec file to build for prefix=/usr not just install there

Fri Jun 14 16:35:04 BST 2002  Olly Betts <olly@survex.com>

        * docs/todo.xml: added 4 new tasks.

Fri Jun 14 16:33:08 BST 2002  Olly Betts <olly@survex.com>

        * backends/quartz/quartz_database.cc: Cosmetic changes.

Wed Jun 12 16:31:11 BST 2002  Olly Betts <olly@survex.com>

        * QuartzDbKey, QuartzDbTag: just use a string instead of a string
          wrapped in a structure.  We've stopped inflicting this on external
          developers (OmData, OmKey/OmValue) so why inflict it on ourselves?

Wed Jun 12 12:26:04 BST 2002  Olly Betts <olly@survex.com>

        * Btree_item: use C++ strings rather than trying to reimplement them.

        * Fix a few warnings about unused parameters.

Wed Jun 12 02:53:16 BST 2002  Olly Betts <olly@survex.com>

        * Btree_full_compaction, Btree_close: removed - they just wrap methods
          of Btree.

Wed Jun 12 02:28:30 BST 2002  Olly Betts <olly@survex.com>

        * Btree_item_create and Btree_item_lose subsumed into Btree_item
          and ~Btree_item.

        * Pass C++ strings rather than const char * into various Btree open
          methods.

        * Removed pointless wrapper functions for Btree open methods.

        * Btree_quit removed (just use delete directly).

        * Btree_create removed (just use Btree::create directly).

Wed Jun 12 00:48:52 BST 2002  Olly Betts <olly@survex.com>

        * form_key is now a method of Btree; more passing of strings rather
          than pointer/length pairs); buffer overrun check added to btreetest.

Tue Jun 11 18:04:08 BST 2002  Olly Betts <olly@survex.com>

        * More C++ like interfaces (e.g. bool returns, strings rather than
          pointer/length pairs).

Tue Jun 11 16:40:08 BST 2002  Richard Boulton <richard@tartarus.org>

        * quartz/btree.cc: Fix so that it compiles when BTREE_FULL_DEBUG is on,
          and added a couple of Assert()s.

Tue Jun 11 13:09:39 BST 2002  Olly Betts <olly@survex.com>

        * Removed a number of btree functions which were simply wrappers for
          calling methods on their first parameter, and most of which weren't
          even used!

        * btree_api.txt: updated to better reflect the object-ized API.

Tue Jun 11 02:01:53 BST 2002  Olly Betts <olly@survex.com>

        * Btree::make_index_item(): Added check for buffer overflow.

Tue Jun 11 01:49:51 BST 2002  Olly Betts <olly@survex.com>

        * Still more...

Tue Jun 11 01:08:03 BST 2002  Olly Betts <olly@survex.com>

        * More btree and quartz tidying.

Mon Jun 10 20:33:24 BST 2002  Olly Betts <olly@survex.com>

        * btree.cc,btree.h: cleaned up further.

Mon Jun 10 15:54:49 BST 2002  Olly Betts <olly@survex.com>

        * Further btree and quartz cleanups.

Mon Jun 10 14:46:00 BST 2002  Olly Betts <olly@survex.com>

        * Fixed typo in recent quartzdump change.

Mon Jun 10 13:20:20 BST 2002  Olly Betts <olly@survex.com>

        * Quartz clean-ups - especially QuartzTermList.

Mon Jun 10 12:18:40 BST 2002  Olly Betts <olly@survex.com>

        * Bcursor_create made a method of class Btree as suggested by a FIXME.

Mon Jun 10 01:57:53 BST 2002  Olly Betts <olly@survex.com>

        * More btree fixes and tidying.  Fixed bug introduced by typo in
          previous change which causes tests to fail.

Sun Jun 09 17:50:28 BST 2002  Olly Betts <olly@survex.com>

        * btree_util.h: use inlines rather than macros.

        * Fix CompileTimeAssert() to avoid potential clashes.

Sun Jun 09 12:46:25 BST 2002  Olly Betts <olly@survex.com>

        * btree.cc,btree.h: fixed bug caused by local variable masking member
          variable with same name.  Tidied up a lot.

Wed Jun  5 12:22:57 BST 2002  Sam Liddicott <sam@ananova.com>

        * Fix OmQuery::op enum handling.

Mon May 27 14:28:06 BST 2002  Sam Liddicott <sam@ananova.com>

        * Add crash-protected next() to OmMSetIterator

        * Add ->valid() method to iterator which returns FALSE if
          the iterator has reached the end

        * Added namespace fixes for latest cvs swig to be released next month

Fri May 24 15:28:18 BST 2002  Sam Liddicott <sam@ananova.com>

        * Took out the string typemaps as swig now has them in stl.i

        * Added om_percent to omtypes.i - I wonder if we might just
          read omtypes.h instead, as swig can

        * Added OmMSetIterator and made changes to OmMSet

Fri May 24 11:46:50 BST 2002  Sam Liddicott <sam@ananova.com>

        * Now support get_matching_terms via swig
          I'm not sure how to generally map iterators to php but in
          cases where we know only a small number of items exist
          to be iterated over it makes sense to return them as a
          php array

Tue May 21 15:28:40 BST 2002  Richard Boulton <richard@tartarus.org>

        * multi_postlist.cc (get_doclength):  Get the document length from
          the appropriate sub-postlist, rather than from the database.
          This causes a huge speedup in some cases, since it avoids having
          to go to the termlist database for every document considered for
          an mset to get the document length.
          Added an AssertParanoid to check that the value from the postlist
          is the same as that from the database.
          This problem was noticed because "delve -v" was running several
          orders of magnitude slower than without -v - it is now of
          comparable speed.

Tue May 21 15:27:37 BST 2002  Richard Boulton <richard@tartarus.org>

        * quartz_values.cc: Small fixes to enable it to compile with debug
          turned on.

Fri May 17 14:52:45 BST 2002  Olly Betts <olly@survex.com>

        * OmQueryParser::set_database() method added.

        * Added disabled code to search for a keyword used in the query.

        * Added ' and * to the list of "phrase making characters".

        * To make a phrase, a phrase-maker must be followed by an alphanumeric
          rather than just a non-space.

Fri May 17 14:49:54 BST 2002  Olly Betts <olly@survex.com>

        * INSTALL: GCC 3.1 release version works, so noted this.

        * HACKING: Added note about warning-free compilation being desirable
          and suggesting using "./configure CFLAGS=-Werror" to promote this.

        * NEWS: Minor updates.

Thu May 16 16:57:42 BST 2002  Olly Betts <olly@survex.com>

        * Minor tweaks to get a warning-less compile with GCC 3.1.

Thu May 16 13:36:19 BST 2002  Sam Liddicott <sam@ananova.com>

        * Clean up the spec file

Thu May 16 12:20:09 BST 2002  Olly Betts <olly@survex.com>

        * Documented match_sort_key.

Thu May 16 10:42:47 BST 2002  Sam Liddicott <sam@ananova.com>

        * A few quick tips from Olly, now the tarfile name and version no.
          stuff comes from autoconf so the spec file won't need tweaking
          each time the version number changes

Wed May 15 15:48:42 BST 2002  Sam Liddicott <sam@ananova.com>

        * This can build RPM packages.
          Get the make-dist tarball and do:
          rpm -ta xapian-core-0.4.1-cvs.tar.gz
          and it will make source and binary rpms
          It doesn't build bindings packages yet but this will come when I
          build them

Wed May 15 13:27:21 BST 2002  Richard Boulton <richard@tartarus.org>

        * buildall: Allow use of automake 1.6.1 and later, and CVS
          automake (versions 1.6[a-z])

Wed May 15 11:40:58 BST 2002  Sam Liddicott <sam@ananova.com>

        * SWIG cvs (php4) now writes all output files to the same directory as
          the main output file, so need for hacks to move these, also no more
          clobbering our source files when building in the checkout dir

Tue May 14 21:54:02 BST 2002  James Aylett  <tartarus@users.sourceforge.net>

        * Updated PLATFORMS file.

Tue May 14 16:48:07 BST 2002  Olly Betts <olly@survex.com>

        * Removed multiple-include protection from config.h - if it's
          included more than once it's now a bug and we want to know!

Tue May 14 15:25:05 BST 2002  Olly Betts <olly@survex.com>

        * OmQueryParser: parse acronyms as a single term (so "E.T." -> "ET"
          and "N.A.T.O" -> "NATO").

Tue May 14 15:23:20 BST 2002  James Aylett  <tartarus@users.sourceforge.net>

        * Fixed config.h includes: source definition (ie not header) files
          #include <config.h> as their first action.

Tue May 14 14:47:00 BST 2002  Olly Betts <olly@survex.com>

        * Updated todo.

        * extra/parsequery.yy: Fettled indentation.

Tue May 14 13:14:51 BST 2002  Olly Betts <olly@survex.com>

        * Added test case for new "embedded &" rule, and fix problem bug it
          revealed.

Tue May 14 13:10:33 BST 2002  Olly Betts <olly@survex.com>

        * OmQueryParser: Parse <word>&<word> as a single term (e.g. AT&T,
          M&S, A&P).

Tue May 14 11:50:03 BST 2002  Olly Betts <olly@survex.com>

        * When including config.h, always specify it as <config.h>, not
          "config.h", and always do it first.  Both are recommended by
          the autoconf documentation.

Mon May 13 17:17:13 BST 2002  James Aylett  <tartarus@users.sourceforge.net>

        * missing fallback rule all-local in docs/Makefile.am was failing
          the build on Solaris

Mon May 13 15:50:31 BST 2002  Sam Liddicott <sam@ananova.com>

        * Use new %extends notation for swig.

        * Update for new omValue usage

        * Add omqueryparser support

Mon May 13 15:12:30 BST 2002  James Aylett  <tartarus@users.sourceforge.net>

        * shipped getopt will now build in absence of system getopt

Mon May 13 15:09:17 BST 2002  Olly Betts <olly@survex.com>

        * configure.in: Moved AH_TOP/AH_BOTTOM to more logical place.

        * docs/todo.xml: Updated.

Mon May 13 14:13:27 BST 2002  James Aylett  <tartarus@users.sourceforge.net>

        * added getopt to DIST_SUBDIRS so distributions work

Fri May 10 14:54:06 BST 2002  Olly Betts <olly@survex.com>

        * getopt/: Checked in files I missed last time.

Fri May 10 14:35:52 BST 2002  Olly Betts <olly@survex.com>

        * Make sure GNU getopt is linked to everything which might need it so
          we build in non-glibc environments.

Fri May 10 13:42:59 BST 2002  Olly Betts <olly@survex.com>

        * Replaced second match_sort_key optimisation with one which is
          faster and not flawed.

Thu May 09 18:27:30 BST 2002  Olly Betts <olly@survex.com>

        * match_sort_key now runs at a sensible speed (approx. 20x speed
          up on my test case).

Thu May 09 16:58:11 BST 2002  Olly Betts <olly@survex.com>

        * Added another optimisation for match_sort_key - my test case
          is now 25% faster (still slow though).

Thu May 09 11:57:59 BST 2002  Olly Betts <olly@survex.com>

        * NEWS, PLATFORMS, README: Updated to something approximating what we
          want for a release.

        * docs/todo.xml: Updated.

Thu May 09 10:57:59 BST 2002  Olly Betts <olly@survex.com>

        * Removed references to match_max_or_terms (which was replaced
          by OmQuery::OP_ELITE_SET long, long ago).

Wed May 08 17:38:50 BST 2002  Olly Betts <olly@survex.com>

        * Improved api documentation comments.

Wed May 08 17:09:14 BST 2002  Olly Betts <olly@survex.com>

        * Include findheaders.pl in tarball.

Wed May 08 16:09:14 BST 2002  Olly Betts <olly@survex.com>

        * Killed off acconfig.h.

Wed May 08 15:53:11 BST 2002  Olly Betts <olly@survex.com>

        * Added autom4te-*.cache to .cvsignore.

Wed May 08 15:50:56 BST 2002  Olly Betts <olly@survex.com>

        * Rebuild docs on "make", not just "make dist" or "make install".

Wed May 08 15:07:01 BST 2002  Olly Betts <olly@survex.com>

        * Added workaround for problems with <fcntl.h> on Solaris when LFS
          is enabled.

Wed May 08 13:44:10 BST 2002  Olly Betts <olly@survex.com>

        * Matcher can now sort on a key.  Can be rather slow at present...

Wed May 08 13:15:21 BST 2002  Olly Betts <olly@survex.com>

        * Updated todo.

Wed May 08 12:22:53 BST 2002  Olly Betts <olly@survex.com>

        * Removed ltmain.sh-s from CVS.

Wed May 08 12:21:32 BST 2002  Olly Betts <olly@survex.com>

        * buildall: run libtoolize; stripped out unnecessary stuff.

Wed May 08 09:44:45 BST 2002  Olly Betts <olly@survex.com>

        * matcher/msetpostlist.cc: Removed bogus comment cut and pasted from
          matcher/mergepostlist.cc.

Tue May 07 17:51:57 BST 2002  Olly Betts <olly@survex.com>

        * It's "m4_include", not "m4include".

Tue May 07 17:52:36 BST 2002  Olly Betts <olly@survex.com>

        * Added autoconf/type_socklen_t macro.

Tue May 07 16:50:20 BST 2002  Olly Betts <olly@survex.com>

        * Now require autoconf 2.50, which allows us to clean up some of the
          more unpleasant parts of the build system.

Tue May 07 14:55:37 BST 2002  Olly Betts <olly@survex.com>

        * Added "match_sort_bands" option to sort results within relevance
          bands.  Currently the sort within each band is by document id, which
          isn't really very useful.  The plan is to allow sorting by a key.

Tue May 07 14:54:12 BST 2002  Olly Betts <olly@survex.com>

        * Sorted out tests/findheaders.pl wrt last change.

Tue May 07 13:12:23 BST 2002  Olly Betts <olly@survex.com>

        * Run perl scripts from Makefiles explicitly with $(PERL) rather than
          having them as generated files in AC_OUTPUT.

Mon May  6 16:04:37 2002  James Aylett  <tartarus@users.sourceforge.net>

        * Distribution fixes: make clean should now clear up all
          required files.

Mon May  6 14:42:46 2002  James Aylett  <tartarus@users.sourceforge.net>

        * Don't include dlfcn.h since we don't use it (and doesn't exist
          on some target platforms).

Mon May  6 14:07:24 2002  James Aylett  <tartarus@users.sourceforge.net>

        * Minor documentation corrections.

Fri May 03 18:14:14 BST 2002  Olly Betts <olly@survex.com>

        * Changed autoconf/automake project name to xapian-core, and updated
          the documentation to reflect this.

        * Disabled the bindings from being included in distribution tarballs.

Fri May 03 18:13:43 BST 2002  Olly Betts <olly@survex.com>

        * Updated todo list.

Fri May  3 18:02:06 BST 2002  James Aylett  <tartarus@users.sourceforge.net>

        * Overloading ambiguity resolutions for linux/alpha build on CF

Fri May 03 17:13:36 BST 2002  Olly Betts <olly@survex.com>

        * buildall: Don't run configure or make; removed --no-make and --quiet.

Fri May  3 16:52:01 BST 2002  James Aylett  <tartarus@users.sourceforge.net>

        * tests/testdata/etext.txt needs to be included in the distribution

Fri May 03 16:18:38 BST 2002  Olly Betts <olly@survex.com>

        * Removed OmValue in favour of simply using a string (analogous to
          recent OmData change).

Fri May 03 14:52:04 BST 2002  Olly Betts <olly@survex.com>

        * Removed unused om_docname typedef.

Fri May 03 14:42:31 BST 2002  Olly Betts <olly@survex.com>

        * Terminology change - a "key" (in the OmKey sense) is now a "value".

Fri May  3 14:31:57 BST 2002  James Aylett  <tartarus@users.sourceforge.net>

        * Fixed up todo list and HTML generation script to cope with
          items without an assigned priority.

Fri May 03 14:29:58 BST 2002  Olly Betts <olly@survex.com>

        * It's HACKING (not INSTALL) that has details of developer tools.

Thu May 02 15:57:48 BST 2002  Olly Betts <olly@survex.com>

        * Removed OmData - just return and take a string instead.

Thu May 02 14:40:21 BST 2002  Olly Betts <olly@survex.com>

        * docs/.cvsignore: updated.

Thu May 02 14:38:36 BST 2002  Olly Betts <olly@survex.com>

        * Removed assorted references to pthread locking; updated HACKING.

Thu May 02 14:15:47 BST 2002  Olly Betts <olly@survex.com>

        * Stripped out OmBatchEnquire stuff, as it's unlikely to get sorted
          out any time soon, and it can be extracted from CVS when someone
          wants it.

Thu May 02 13:50:04 BST 2002  Olly Betts <olly@survex.com>

        * Check for bison >= 1.35 in buildall.

Wed May 01 17:39:57 BST 2002  Olly Betts <olly@survex.com>

        * Removed lingering references to Omsee and OpenMuscat.

Wed May 01 16:34:13 BST 2002  Olly Betts <olly@survex.com>

        * Removed unused methods from NetClient (read_data and write_data).

Wed May 01 14:01:12 BST 2002  Olly Betts <olly@survex.com>

        * Added test consistency1 to check matcher optimisations don't
          result in inconsistent results (i.e. that same matches and
          weights are returned regardless of size of mset asked for).

Wed May 01 11:48:10 BST 2002  Olly Betts <olly@survex.com>

        * Fixed mismatched tags in todo.xml.

Wed May 01 11:46:42 BST 2002  Olly Betts <olly@survex.com>

        * Updated todo.

Wed May 01 11:40:47 BST 2002  Olly Betts <olly@survex.com>

        * Corrected configure warning message - it's XML::Parser not XML.

Wed May 01 11:34:49 BST 2002  Olly Betts <olly@survex.com>

        * Tweaks to get queryparser building cleanly.

Tue Apr 30 17:44:48 BST 2002  Olly Betts <olly@survex.com>

        * Updated query parser in extra from the updated one in omega,
          and fettled it to cope better with multiple instantiations
          (though it's a long way from being reentrant at the moment).

Tue Apr 30 11:03:44 BST 2002  Olly Betts <olly@survex.com>

        * Updated todo.

Mon Apr 29 19:28:04 BST 2002  Olly Betts <olly@survex.com>

        * More string.c_str() tidying.

Mon Apr 29 17:41:33 BST 2002  Olly Betts <olly@survex.com>

        * Tidied up some uses of string.c_str().

        * Cleaned up todo list.

Mon Apr 29 16:08:21 BST 2002  Olly Betts <olly@survex.com>

        * Updated buildall to check various tools have the required version
          numbers.

Mon Apr 29 15:58:57 BST 2002  Olly Betts <olly@survex.com>

        * Tweaked use of HAVE_STREAMBUF

Fri Apr 26 14:41:09 BST 2002  Sam Liddicott <sam@ananova.com>

        * Swig is now modified so it can build config.m4 and Makefile.in
          for php modules so I removed these from bindings/php4

Tue Apr 23 18:21:03 BST 2002  Olly Betts <olly@survex.com>

        * Tried compiling with GCC 3.1 prerelease snapshot and fixed various
          STL-related warnings (mostly uses of istrstream).

        * Fixed usage of AM_CFLAGS and AM_CXXFLAGS.

Tue Apr 23 15:48:36 BST 2002  Olly Betts <olly@survex.com>

        * Updated buildall (and had to tweak it again, sigh).

Tue Apr 23 14:21:01 BST 2002  Sam Liddicott <sam@ananova.com>

        * Added typemap conversion to generate OmSettings from php hash
        * Changed order of classes in interface file

Tue Apr 23 14:20:05 BST 2002  Olly Betts <olly@survex.com>

        * Revamped xapian-config and xapian.m4.  Important change - it's now
          "xapian-config --cxxflags" and XAPIAN_CXXFLAGS, not --cflags and
          _CFLAGS.

Mon Apr 22 17:58:56 BST 2002  Olly Betts <olly@survex.com>

        * Removed leak checker.

Mon Apr 22 13:40:01 BST 2002  Olly Betts <olly@survex.com>

        * Tiny code tweak.

Mon Apr 22 13:11:32 BST 2002  Olly Betts <olly@survex.com>

        * Write debug log using unbuffered IO and O_APPEND which should prevent
          the log file becoming garbled when used from applications which use
          Xapian objects in multiple threads.

Mon Apr 22 12:19:18 BST 2002  Olly Betts <olly@survex.com>

        * Updated copyright notices for last change.

Mon Apr 22 11:20:28 BST 2002  Olly Betts <olly@survex.com>

        * Removed thread locks.

Fri Apr 19 17:38:23 BST 2002  Olly Betts <olly@survex.com>

        * Removed completed tasks from todo list.

Fri Apr 19 17:26:23 BST 2002  Olly Betts <olly@survex.com>

        * Removed placeholder code for OmQuery::OP_PERCENT_CUTOFF - it's
          actually impossible to implement since we started rescaling
          percentages so that 100% is attainable.

Fri Apr 19 16:42:42 BST 2002  Olly Betts <olly@survex.com>

        * Tracked down and fixed the bug in the quartz backend which was making
          test poslist2 fail.

Fri Apr 19 16:06:39 BST 2002  Olly Betts <olly@survex.com>

        * Fixed some compilation problems which I somehow failed to notice
          before the last check-in.

Fri Apr 19 15:04:13 BST 2002  Olly Betts <olly@survex.com>

        * Added more RETURN(...) wrappers.

Fri Apr 19 14:46:19 BST 2002  Olly Betts <olly@survex.com>

        * Added more DEBUGCALL tracing to quartz.

Fri Apr 19 13:29:57 BST 2002  Olly Betts <olly@survex.com>

        * Minor tweaks to quartz_database.cc.

Fri Apr 19 13:07:50 BST 2002  Olly Betts <olly@survex.com>

        * Moved test poslist1 into correct place and renamed it to poslist2
          since there's already a poslist1...

Fri Apr 19 11:19:15 BST 2002  Olly Betts <olly@survex.com>

        * poslist1 (when actually run!) reveals that Quartz fails to throw
          errors in this case.  Disabled test for now, as I can't see why it
          fails to throw...

Thu Apr 18 17:44:56 BST 2002  Olly Betts <olly@survex.com>

        * Added poslist1 test as suggested by a TODO entry.

Thu Apr 18 14:17:24 BST 2002  Olly Betts <olly@survex.com>

        * buildall: Removed search for GNU make (as of automake
          1.5 it's not needed for automake and we aim to have portable
          makefiles).  Made buildall more portable.

Thu Apr 18 14:16:18 BST 2002  Olly Betts <olly@survex.com>

        * xapian-config.nodep is a generated file, so don't look for it in
          srcdir.

Thu Apr 18 12:45:04 BST 2002  Olly Betts <olly@survex.com>

        * Added bindings/php4/xapian/.cvsignore.

Thu Apr 18 12:36:53 BST 2002  Olly Betts <olly@survex.com>

        * Minor tweaks to "Makefile" section in HACKING.

Thu Apr 18 12:26:21 BST 2002  Olly Betts <olly@survex.com>

        * Yet more Makefile portability fixes; added section to HACKING
          summarising my recent experiences.

Thu Apr 18 11:26:37 BST 2002  Olly Betts <olly@survex.com>

        * Corrected the sense of the test in the previous check-in.

Thu Apr 18 11:08:04 BST 2002  Olly Betts <olly@survex.com>

        * Use case instead of echo/sed to replace dirname.

Thu Apr 18 10:19:01 BST 2002  Olly Betts <olly@survex.com>

        * Another Makefile portability tweak.

Wed Apr 17 16:07:02 BST 2002  Olly Betts <olly@survex.com>

        * bindings/php4/Makefile.am: Fixed a couple of problems with
          recent changes.

Wed Apr 17 15:32:44 BST 2002  Olly Betts <olly@survex.com>

        * Makefile portability improvements.

Wed Apr 17 14:29:21 BST 2002  Olly Betts <olly@survex.com>

        * Replaced uses of GNU make specific features with more portable
          ones.

Wed Apr 17 12:43:07 BST 2002  Olly Betts <olly@survex.com>

        * Update todo list.

Wed Apr 17 12:41:03 BST 2002  Olly Betts <olly@survex.com>

        * Removed BrightStation's logo from the documentation.

Wed Apr 17 12:27:07 BST 2002  Olly Betts <olly@survex.com>

        * xapian-config: Removed --uninst support - it's very hard to make it
          work reliably and we're better off directing our efforts towards
          improving the library than trying to get it working and keep it
          working.

Wed Apr 17 10:39:02 BST 2002  Olly Betts <olly@survex.com>

        * Fixed btreetest code to use new names "ord+" and "ord-" for
          datafiles; disabled LFSinsertdelete1 test as it's exactly the
          same as insertdelete1 (despite the comment above which suggests
          it tests files >2G).

Mon Apr 15 17:14:22 BST 2002  Olly Betts <olly@survex.com>

        * Fix a few OmDatabase::InternalInterface uses I'd somehow missed.

Mon Apr 15 16:08:20 BST 2002  Olly Betts <olly@survex.com>

        * Mark internal classes as @internal for doxygen; removed all uses
          of OmDatabase::InternalInterface as it's no longer needed.

Mon Apr 15 15:42:47 BST 2002  Olly Betts <olly@survex.com>

        * Updated TODO list.

Mon Apr 15 2002  Sam Liddicott <sam@ananova.com>

        * Hacked around bindings and bindings/php to remove some SWIG
          workarounds.  SWIG cvs + some new non-committed patches is need still.

Mon Apr 15 12:12:05 BST 2002  Olly Betts <olly@survex.com>

        * stemtest: getopt fix.

        * stemtest.pl.in: output now: less verbose by default and coloured.

Mon Apr 15 11:18:58 BST 2002  Olly Betts <olly@survex.com>

        * Updated HACKING to say that automake 1.5 is required, and note that
          automake 1.6.1 is better than 1.6.

Sat Apr 13 20:35:51 2002  James Aylett  <tartarus@users.sourceforge.net>

        * Fixed stemtest getopt usage so it works again.

Sat Apr 13 20:20:52 BST 2002  James Aylett  <tartarus@users.sourceforge.net>

        * Fixed omtcpsrv getopt usage so it works again.

Fri Apr 12 16:24:06 BST 2002  Olly Betts <olly@survex.com>

        * Require automake 1.5.

Fri Apr 12 12:11:57 BST 2002  Olly Betts <olly@survex.com>

        * omtcpsrv: Namespace fixes.

Fri Apr 12 12:25:42 BST 2002  Olly Betts <olly@survex.com>

        * Fixed everything to use getopt rather than icky handparsing of
          options.

Fri Apr 12 11:26:57 BST 2002  Olly Betts <olly@survex.com>

        * Removed delve - it's going to be an example program.

Thu Apr 11 18:09:35 BST 2002  Olly Betts <olly@survex.com>

        * Command line argument improvements - added FIXMEs where getopt
          should be used.

Thu Apr 11 17:01:44 BST 2002  Richard Boulton <richard@tartarus.org>

        * Fixes to work with automake 1.6.1.
          I recommend using 1.6.1 rather than 1.6, since this fixes many
          bugs in 1.6.  I havn't tested with 1.6 recently, but it is likely
          to report problems.

Thu Apr 11 17:25:37 BST 2002  Olly Betts <olly@survex.com>

        * Use GNU getopt.

Thu Apr 11 15:06:15 BST 2002  Olly Betts <olly@survex.com>

        * Updated to recommend automake 1.5, noting problem with automake 1.4
          and that we'll probably soon insist on 1.5, and later autoconf 2.50.
          Also added notes on recommended and usable GCC versions.

Thu Apr 11 14:23:44 BST 2002  Olly Betts <olly@survex.com>

        * Cleaning up build system.

Thu Apr 11 13:18:23 BST 2002  Olly Betts <olly@survex.com>

        * Use AndPostList with boolean weights on the RHS instead of
          FilterPostList - this appears to fix a bug, but I suspect it's
          actually just moving it around.  Will investigate later.

Thu Apr 11 10:11:11 BST 2002  Olly Betts <olly@survex.com>

        * Sorted out automake for php4 bindings.

Wed Apr 10 14:44:50 BST 2002  Olly Betts <olly@survex.com>

        * Removed a superfluous DEBUGLINE.

Tue Apr  9 19:02:09 BST 2002  Richard Boulton <richard@tartarus.org>

        * Fix some DEBUGLINE() macros in the matcher which had
          the first parameter missing.

Tue Apr 09 17:50:44 BST 2002  Olly Betts <olly@survex.com>

        * Removed stray bit of debug code.

Tue Apr 09 17:05:09 BST 2002  Olly Betts <olly@survex.com>

        * More debug tracing added.

Tue Apr 09 10:48:42 BST 2002  Olly Betts <olly@survex.com>

        * Disabled pthread support by default.

Sat Apr  6 20:45:21 2002  James Aylett  <tartarus@users.sourceforge.net>

        * Reordered some output generation in configure so it won't
          complain about directories not existing. (I don't understand
          what the problem is, but this does fix it.)

Sat Apr 06 20:27:57 BST 2002  Olly Betts <olly@survex.com>

        * Moved a few lingering traces of XML indexer stuff to indexer
          subdirectory.

Sat Apr 06 17:37:02 BST 2002  Olly Betts <olly@survex.com>

        * Removed -pedantic (read the gcc docs - it's doesn't turn on
          useful warnings) and fixed all the remaining compilation
          warnings in a non-debug build.

Fri Apr 05 10:21:28 BST 2002  Olly Betts <olly@survex.com>

        * Removed --enable-profiling, --enable-purify, and --enable-insure.
          They don't do anything which can't be achieved by passing
          environment variables and switches to configure (now documented
          in HACKING).  Adding a separate switch for every profiling and
          code-quality tool out there isn't a sensible approach.

Thu Apr 04 20:37:12 BST 2002  Olly Betts <olly@survex.com>

        * Updated .cvsignore files.

Thu Apr 04 20:25:41 BST 2002  Olly Betts <olly@survex.com>

        * PTHREAD_CFLAGS was only being used for compiling C, not C++, which
          was causing builds to fail unless threading was disabled.  This
          problem has been there a long time, but until recently was hidden
          by the check for fdatasync erroneously linking in -lrt which pulls
          in pthreads anyway (at least this is the situation on Linux).

Thu Apr 04 20:06:00 BST 2002  Olly Betts <olly@survex.com>

        * Removed XML indexer stuff from the main xapian library.  All the
          removed bits are now in the indexer subdirectory, ready to be
          reassembled into a supplementary library.

Thu Apr 04 15:43:43 BST 2002  Olly Betts <olly@survex.com>

        * More debug tracing in the matcher.

Thu Apr 04 14:17:10 BST 2002  Olly Betts <olly@survex.com>

        * Added debug tracing to most of the matcher.

Thu Mar 28 17:21:16 GMT 2002  Olly Betts <olly@survex.com>

        * Give up trying to make internals private or protected in the
          header files in include - the consequences are just too ugly, and
          it's clear enough that they shouldn't be messed with except by the
          library itself.

Wed Mar 27 10:24:26 GMT 2002  Olly Betts <olly@survex.com>

        * Don't add "-lrt" to the link line unless it's actually needed for
          fdatasync().

Wed Mar 27 10:11:09 GMT 2002  Olly Betts <olly@survex.com>

        * Fixed two problems in the matcher which were respectively causing
          problems with boolean filters, and with situations where OR or
          ANDMAYBE decayed to AND.

Fri Jan 11 18:00:44 GMT 2002  James Aylett  <tartarus@users.sourceforge.net>

        * Various build fixes for libxml2: define CHAR as needed,
          --enable-validation (off by default), check for and discard
          'blank' text/cdata nodes as we encounter them

Fri Jan 11 15:40:50 GMT 2002  Sam Liddicott <sam@ananova.com>

        * Added Large File Support in the same way it was added to GNU tar.
          (If it's good enough for them...)
          This is by means of autoconf/ac_sys_largefile which I'm told is
          built in to later versions of autoconf, and may possibly give us
          trouble redefining it for those versions...  But we'll see about
          that when/if it happens.

          It seems to work fine here on some DB's which I had to stop growing
          cos they got too big; I'm now past the 2G boundary with no problems

          I guess we should still add overflow detection for 2^31 blocks.
          Ideas?

          I need some help on the btreetest.cc as I haven't yet worked out
          what it does; so while I've added a test, it doesn't yet test
          what it says it does.  I have changed btreetest.cc so you can
          tell it where to dump the test DB

Fri Dec 21 17:48:09 GMT 2001  Olly Betts <olly@survex.com>

        * Fixed halflife calculation in OmBiasFunctor.

Fri Dec 21 15:24:58 GMT 2001  Olly Betts <olly@survex.com>

        * Added a temporary API to allow use of OmBiasFunctor.

Fri Dec 21 12:58:23 GMT 2001  Olly Betts <olly@survex.com>

        * Disable conversion of OR to AND/ANDMAYBE in matcher tree - there's
          a bug which sometimes manifests when there's a date filter and a
          threshold cutoff in omega, and results in just one match when there
          should be more.  I don't believe the bug is actually in OrPostList
          but I've been tracking it for 4 days without success and turning off
          this optimisation seems to stop it occurring so will have to do for
          now.

Thu Dec 20 17:41:04 GMT 2001  Olly Betts <olly@survex.com>

        * matcher/multimatch.cc: added more percent_cutoff assertions.

Thu Dec 20 13:41:41 GMT 2001  Olly Betts <olly@survex.com>

        * Fixed incorrectly classified debug message; fixed compiler warning;
          more comments about matches_* with a percent_cutoff.

Thu Dec 20 13:09:51 GMT 2001  Olly Betts <olly@survex.com>

        * Better OmPostListIterator::get_description() (call get_description
          on internal->postlist).

Thu Dec 20 12:42:55 GMT 2001  Olly Betts <olly@survex.com>

        * Fixed assorted problems with omtcpsrv and co from recent change.

Thu Dec 20 10:41:57 GMT 2001  Richard Boulton <richard@tartarus.org>

        * In ./configure --help, correctly report muscat36 backend as
          defaulting to off.

Thu Dec 20 10:36:18 GMT 2001  Olly Betts <olly@survex.com>

        * Don't delete internal in ~OmWritableDatabase - ~OmDatabase
          does that for us (internal was zeroed after delete, so this
          was probably harmless)

        * Tweaked OmEnquire::get_description() and
          OmPostListIterator::get_description() to do less - there's a
          debug related bug somewhere and get_description() should be a
          non-intrusive method...

Thu Dec 20 10:32:56 GMT 2001  Richard Boulton <richard@tartarus.org>

        * Fix a couple of misquoted messages in configure.in.

Tue Dec 18 23:22:00 2001  James Aylett  <tartarus@users.sourceforge.net>

        * Use xapian.org where appropriate in documentation references

Tue Dec 18 14:32:32 2001  James Aylett  <tartarus@users.sourceforge.net>

        * Use xapian.org not sourceforge for schemas

Mon Dec 17 18:47:08 GMT 2001  Olly Betts <olly@survex.com>

        * Cured problems with string('x') caused by overzealous search
          and replace on my part.

Mon Dec 17 16:44:31 GMT 2001  Olly Betts <olly@survex.com>

        * Improved matches_estimated when a percent_cutoff is in effect.

Sun Dec 16 18:09:28 GMT 2001  Olly Betts <olly@survex.com>

        * You can now register a match decider functor by name with an
          OmEnquire object.  It's not yet used for anything though.

Sun Dec 16 17:31:08 GMT 2001  Olly Betts <olly@survex.com>

        * omtcpsrv: simplified arguments - just list database directories and
          they'll be opened with the auto backend.  Removed --im as it didn't
          work as advertised and nobody's noticed (as actually implemented it
          was useless).

Sat Dec 15 14:10:32 GMT 2001  Olly Betts <olly@survex.com>

        * Minor update to todo.xml.

Sat Dec 15 13:43:47 GMT 2001  Olly Betts <olly@survex.com>

        * More fettling of OmBiasFunctor stuff - still not ready for use yet...

Tue Dec 11 13:06:08 GMT 2001  Olly Betts <olly@survex.com>

        * Don't work out probabilistic weights for boolean bits of the query
          (rhs of FILTER and AND_NOT) which fixes incorrect percentage weights
          in filtered queries.

Tue Dec 11 12:26:44 GMT 2001  Olly Betts <olly@survex.com>

        * Added test singlesubq1 to keep an eye on can_replace_by_single_subq.

Mon Dec 10 16:58:21 GMT 2001  Olly Betts <olly@survex.com>

        * can_replace_by_single_subq shouldn't return true for OP_ELITE_SET
          since you can't call set_elite_set_size() on an arbitrary subquery.

Thu Dec  6 15:02:05 GMT 2001  Richard Boulton <richard@tartarus.org>

        * (omqueryinternal.cc, omtermlistiteratorinternal.h)
          Fix some compiler warnings (when compiling with no debug) due
          to methods which should return a value but simply contain
          "Assert(false);".  Throw an exception in such methods instead
          (after the Assert).

Mon Dec 03 11:20:42 GMT 2001  Olly Betts <olly@survex.com>

        * New BiasPostList - not yet enabled as it needs more work.

Mon Dec 03 11:16:44 GMT 2001  Olly Betts <olly@survex.com>

        * quartzdump: give syntax error if no tables specified.

Thu Nov 29 14:10:43 GMT 2001  Olly Betts <olly@survex.com>

        * ExtraWeightPostlist wasn't handling prune correctly.

Thu Nov 22 13:46:59 GMT 2001  Olly Betts <olly@survex.com>

        * Fixed segfault when percentage_cutoff emptied the proto-mset.

Thu Nov 22 12:27:49 GMT 2001  Olly Betts <olly@survex.com>

        * Enhanced test emptyquery1.

Fri Nov 16 15:32:09 GMT 2001  Olly Betts <olly@survex.com>

        * Added OmQuery::is_empty() method.

Thu Nov 15 15:36:07 GMT 2001  Olly Betts <olly@survex.com>

        * Updated todo list.

Thu Nov 15 13:03:05 GMT 2001  Olly Betts <olly@survex.com>

        * Fixed percent_cutoff problems.

Wed Nov 14 12:05:44 GMT 2001  Olly Betts <olly@survex.com>

        * Empty OmQuery() now matches no documents (rather than causing an
          exception).

Thu Nov 08 18:23:21 GMT 2001  Olly Betts <olly@survex.com>

        * SIGSTKFLT isn't portable, so added #ifdef checks for it.

Wed Nov 07 15:34:29 GMT 2001  Olly Betts <olly@survex.com>

        * Fixed 2 GCC 3.0 warnings in muscat36 backend.

Wed Nov 07 14:21:47 GMT 2001  Olly Betts <olly@survex.com>

        * Made doc counts returned from percentage cutoff matches more
          accurate.

Wed Nov 07 12:30:32 GMT 2001  Olly Betts <olly@survex.com>

        * GCC 3.0 fixes.

Tue Nov 06 11:16:42 GMT 2001  Olly Betts <olly@survex.com>

        * Matcher now calculates percentages like Omega does (or did as I'm
          about to remove that code from Omega), rather than as a percentage
          of the theoretical maximum possible weight.  The old way generally
          gives disappointingly low values, and by pushing the percentage
          code down into the matcher, it can be used to optimise the query.

Tue Nov 06 11:13:06 GMT 2001  Olly Betts <olly@survex.com>

        * Quick fix for problems with null OmQuery-s.

Mon Nov 05 15:52:55 GMT 2001  Olly Betts <olly@survex.com>

        * Added signal handling to testsuite - if a testcase generates a
          signal it is caught and reported, then the testsuite continues
          with further testcases.

Wed Oct 31 14:26:59 GMT 2001  Olly Betts <olly@survex.com>

        * Removed needless complications in matcher when a weight threshold
          has been set.

Tue Oct 30 16:50:46 GMT 2001  Olly Betts <olly@survex.com>

        * Removed superfluous lines from configure.in; fixed warning from
          automake 1.5.

Mon Oct 29 11:54:36 GMT 2001  Olly Betts <olly@survex.com>

        * Changed matcher to form proto-mset using a min-heap (as described
          in "Managing Gigabytes", 2nd ed., pp 211-213).  Compared to the
          previous "nth-element" approach, this uses about half the memory,
          allows the min-weight based matcher optimisations to work sooner,
          and should be inherently faster (not yet benchmarked though).  The
          code's slightly simpler too.

Mon Oct 29 11:53:38 GMT 2001  Olly Betts <olly@survex.com>

        * Fixed remote backend to pass match_cutoff setting across.

Fri Oct 26 13:43:08 BST 2001  Olly Betts <olly@survex.com>

        * Reserve size needed for mset vector.

Thu Oct 25 18:00:54 BST 2001  Olly Betts <olly@survex.com>

        * Fixed a couple of stray references to the old sleepycat backend.

Tue Oct 23 18:19:32 BST 2001  Olly Betts <olly@survex.com>

        * More cleaning up of MultiMatch.

Tue Oct 23 16:14:27 BST 2001  Olly Betts <olly@survex.com>

        * Removed RemotePostList - it was an experimental idea which proved
          to be too slow even on a fast network.  Cleaned up code where hooks
          were bodged in for it.

Tue Oct 23 13:27:12 2001  James Aylett  <tartarus@users.sourceforge.net>

        * Added documentation of the test system (albeit brief). Also
          mentioned the autotools book in HACKING.

Tue Oct 23 12:07:59 BST 2001  Olly Betts <olly@survex.com>

        * Updated .cvsignore files.

Tue Oct 23 11:29:47 BST 2001  Olly Betts <olly@survex.com>

        * Code tidying while investigating sporadic fails from quartztest.

Mon Oct 22 17:42:30 BST 2001  Olly Betts <olly@survex.com>

        * Minor fettles to quartztest: fixed warnings, whitespace tidying,
          use mkdir(...) rather than system("mkdir ...")

Mon Oct 22 16:41:12 2001  James Aylett  <tartarus@users.sourceforge.net>

        * Renamed project to Xapian.

Mon Oct 22 14:22:00 BST 2001  Olly Betts <olly@survex.com>

        * Fixed non-ISO C++ code so Xapian will compile under GCC 3.0
          (and also RedHat's "GCC 2.96").

Mon Oct 22 11:21:45 2001  James Aylett  <tartarus@users.sourceforge.net>

        * Altered omseek-config and the AC m4 macro to make uninst
          executables link to the right version of the library

Mon Oct 22 10:38:20 2001  James Aylett  <tartarus@users.sourceforge.net>

        * Minor fixes to enable build (and test) under Solaris.

Fri Jun 22 13:24:59 2001  Sam Liddicott <sam@ananova.com>

        * Added some explicit type casts in xmlindexer and quartz backend
          to help gcc2.96 compile.

Thu Jun 21 11:05:31 2001  James Aylett  <tartarus@users.sourceforge.net>

        * HACKING updated to (a) remove inaccurate statements about
          copyright assignment, and (b) talk about developer write
          access to CVS.

Mon Jun 11 13:24:43 2001  James Aylett  <tartarus@users.sourceforge.net>

        * pthread support detected using an automake macro. Should
          be more portable as a result.

        * We need GNU make: buildall now tries to find it.

Mon Jun 11 12:07:00 2001  Hein Ragas <hragas@users.sourceforge.net>

        * Modified QuartzWritableDatabase::do_add_document and
          QuartzWritableDatabase::do_replace_document to leave the PositionList
          empty for a term with no positions associated with it.

Mon May 29 12:17:00 2001  Hein Ragas <hragas@users.sourceforge.net>

        * Modified QuartzPostList::add_entry to allow for adding of entries
          in the middle of the postlist, not only at the end.

Mon May 28 12:00:00 2001  Hein Ragas <hragas@users.sourceforge.net>

        * Fixed a bug in replace_document for Quartz, added a test to
          ensure proper working of the fix.

Fri Apr 27 15:16:10 2001  James Aylett  <tartarus@users.sourceforge.net>

        * Project name change to Omseek.

Wed Apr 11 09:06:37 BST 2001 Chris Emerson <chris.emerson@omsee.com>

        * Implemented deleting of items from postlists, and added some
          tests to check that it works properly.

        * Fixed a potential memory leak in QuartzPostList if an exception
          was thrown from the constructor.

        * BackendManager now sets the quartz_logfile setting, to make
          the logs available from the testsuite.

        * Added mention of quartz_logfile to docs/omsettings

        * Removed a bad assert from InMemoryDatabase::get_doclength()

Mon Apr  9 21:48:18 BST 2001 Chris Emerson <chris.emerson@omsee.com>

        * Added #include <cmath> to testutils.cc

Fri Mar 30 17:37:24 BST 2001 Olly Betts

        * Added extra/.cvsignore

Fri Mar 30 17:22:13 BST 2001 Olly Betts

        * Disabled allocation checking of new[] and delete[] since some STL
          implementations use them which leads to leaks being reported where
          none exist.  This is addressable longer term...

Thu Mar 29 19:05:46 BST 2001  Richard Boulton <richard.boulton@omsee.com>

        * Add "extra" directory to om source tree, to hold extra libraries
          for use with omsee, which aren't part of the core.

        * Put a query parser into "extra".  This is roughly the parser
          from omega.  Needs some work: in particular, it needs to be
          made reentrant.

        * Added extra/ directory to top level Makefile.am and configure.in.
          Added AC_PROG_YACC to Makefile.am

        * Add includes of required header files to omquery.h.

Wed Mar 28 17:15:22 BST 2001  Richard Boulton <richard.boulton@omsee.com>

        * Modifications to OmQuery.  Remove the isbool flag: there is
          no longer any need for the concept of a "pure boolean query".
          The same effect as was obtained by setting isbool can be
          obtained by setting the match_weighting_scheme parameter to
          bool.

        * Also, undefined queries may no longer be used when
          building up composite queries; the correct behaviour for this
          is hard to define and implement and harder to document, and
          removing this removes lots of special case code.

        * Updated network query passing code.

        * Remove special cases for bool weighting in localmatch and irweight.

        * Updated omsettings docs.  Updated comments in omsetting.h.

        * Updated todo.xml

        * Incremented network protocol version.

        * Added test_emptyop1, which checks what happens when an attempt is
          made to use an empty list of subqueries to build up a query, and
          then use the query.

        * Remove test_boolsubq1: no such thing as a boolean query now, so
          no need to test what happens when one is used.

        * Updated testsuite to use "match_weighting_scheme" setting, rather
          than calling OmQuery::set_bool().

Wed Mar 28 15:05:46 BST 2001 Chris Emerson <chris.emerson@omsee.com>

        * Fixes to InMemoryDatabase:
          + do_open_post_list returns an EmptyPostList rather than an
            assertion error if the term doesn't exist
          + Fixed doccount(), which wasn't decrementing on delete_doc()
          + Remove terms from the database when they have no more postings.
          + Implement collection frequencies, and run collfreq tests for
            inmemory.

Wed Mar 28 14:24:38 BST 2001  Richard Boulton <richard.boulton@omsee.com>

        * Set elite set size to max(10, sqrt(number of subqueries)) by
          default.  This is rather more useful than the old default of 0.

Wed Mar 28 10:25:35 BST 2001 Chris Emerson <chris.emerson@omsee.com>

        * QuartzDatabase now implements replace_document(), and
          delete_document() now removes keys/attributes as well.
          However, postlist entries are not yet correctly removed,
          so this will cause problems.

        * Added a test for deleting/replacing documents, which passes.

Tue Mar 27 17:31:58 BST 2001 Chris Emerson <chris.emerson@omsee.com>

        * QuartzAttributes now has a method to delete a document's
          attributes, and QuartzRecordManager has a replace_ method.
          (But the code which uses these isn't in this commit).

Thu Mar 22 15:58:08 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

        * Change definition of OmQuery::is_defined(), so that elite set
          queries are undefined until a size is specified for the set.

Wed Mar 21 14:29:04 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

        * Implemented delete_document and replace_document in inmemory
          database.

Wed Mar 21 12:39:13 GMT 2001 Olly Betts

        * Tweak to docs/quickstart.html.

Wed Mar 21 02:50:19 GMT 2001 Olly Betts

        * Entirely removed sleepcat backend and all references to it.

        * Disable muscat36 backend by default.

Tue Mar 20 18:47:12 GMT 2001 Olly Betts

        * open_document() now takes a lazy flag - if not set we need to check
          that the docid given actually exists.

        * heavy_duty flag now a bool instead of an int.

Mon Mar 19 19:16:34 GMT 2001 Olly Betts

        * Added test getdoc1 to check exceptions are thrown for out-of-range
          docids (currently they aren't for quartz and muscat36 backends).

Mon Mar 19 17:17:31 GMT 2001 Olly Betts

        * New simpler implementation of leak detection in testsuite.
          Currently doesn't support malloc/calloc/realloc/free.

Mon Mar 19 16:46:16 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

        * Further small modification to omsee-config: will now look in
          .libs subdirectories, too.

Mon Mar 19 15:57:18 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

        * Update omsee-config to work when a prefix is specified that
          points directly to the directory with the library, rather than
          expecting the library to be in a subdir "libs/".  (libs/ is
          still used if it exists).

        * Update omsee.m4, to use omsee-config even when using an
          uninstalled version of omsee.  This in turn fixes problems using
          uninstalled versions of omsee with STLport.

Fri Mar 16 18:14:52 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

        * Updated licenses, to include year 2001.

Fri Mar 16 15:40:49 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

        * Fix up small bug in quartztest causing it to fail for lack of an
          expected exception.  Initialise values in quartz_positionlist.cc
          when position list is not present.

Thu Mar 15 17:40:38 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

        * Make timeout absolute, rather than cumulative, when fetching
          multiple documents from database: if two nodes fail, the total
          timeout should still be that specified, not twice it.

        * Make the timeout set by SocketClient::set_query() get reset
          correctly if an exception happens (which used to prevent
          SocketClient::get_mset() ever getting called).

Thu Mar 15 17:06:51 GMT 2001 Olly Betts

        * Oops, checked in too much - backing out the wrong stuff.

Thu Mar 15 16:30:14 GMT 2001 Olly Betts

        * Include autoconf/definedir.m4 in tarball.

Thu Mar 15 16:06:02 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

        * Updated network protocol number to reflect change adding
          OP_ELITE_SET.

Thu Mar 15 15:31:35 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

        * QuartzPositionList should no longer complain if positional
          information isn't available for a particular term / document
          combination.

        * Updated todo.

Thu Mar 15 13:55:53 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

        * Removed OmDocument::set_wdf() and OmDocument::add_term().
          Replaced with OmDocument::add_term_nopos(), which adds a term
          without specifying positional information, taking an optional
          wdfinc parameter.  Updated testsuite correspondingly.

Thu Mar 15 13:14:10 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

        * Update TODO

Wed Mar 14 17:51:40 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

        * Added new operator OP_ELITE_SET, which replaces match_max_or_terms
          option.  Can now specify exactly which terms to apply max_or_terms
          to.  max_or_terms is obsolete: an error will be thrown if an
          attempt is made to use it.

Wed Mar 14 15:56:20 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

        * Added test for and implementation of multiple XOR queries.

        * Fix small bugs with get_termfreq_est() for xor and andnot
          postlists.

Mon Mar  5 16:08:01 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

        * Catch exceptions within the loop in SocketServer - exceptions
          should normally not kill the server.  This means that that a
          client still works after eg an OmDocNotFoundError, which was
          causing problems before.

Fri Mar  2 18:15:47 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

        * Add a new query operator, OP_WEIGHT_CUTOFF, which returns only
          those documents from a query which have a weight greater than a
          specified cutoff value.  Also added OP_PERCENT_CUTOFF, but this
          is not yet implemented.

        * Added test of new cutoff function, cutoff2.

        * Updated network protocol to pass new queries.  Increased protocol
          version number (to 10).

        * Added set_cutoff() function to OmQuery, to set cutoff parameter.

        * Updated TODO.

        * Remove unused member "PostList * postlist" of LocalSubMatch.

Thu Mar  1 12:04:53 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

        * Updates to HACKING.

Wed Feb 28 18:42:47 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

        * Fixes to neaten up configure output, and to test for the Perl
          Text::Format module, thanks to James Aylett (patch slightly
          modified, so if it doesn't work it's probably my fault).

        * configure.in checks for presence of ftime() and gettimeofday()

        * Added OmTime, a class to deal with times to an accuracy of
          microseconds, or whatever the best accuracy the system supports
          is.

        * Use OmTime in network code instead of time(NULL).

Wed Feb 28 14:23:11 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

        * Merge common code from OmSocketLineBuf::wait_for_data() and
          OmSocketLineBuf::do_readline() into
          OmSocketLineBuf::attempt_to_read(), and thus fix bug in
          wait_for_data() when 0 bytes returned from read().

Tue Feb 27 18:40:33 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

        * Fixes to remote matcher code to cope better with failure of
          submatchers:
          - Timeout for all submatches now correctly start at same time.

        * Added more extensive testing of above code, involving adding
          new parameters to inmemory to cause abort()s at various stages of
          the match.

        * Remove obsolete (and unused) method
          SocketServer::read_global_stats()

        * Errors are now generated from strings by using omerrortypes.h with
          suitable #defines before including it.  Updated todo accordingly.

        * Extend scope of try{} clause in socketserver, so that
          SocketServerFinished exception never escapes.

        * Default timeout in progserver increased to 30000.

        * Default timeout in tcpserver increased to 15000.

Mon Feb 26 23:51:23 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

        * Split query generation into stages: make new query, add subqueries,
          then finalise.  Add private methods to OmQuery reflecting this, and
          convert constructors into template methods, allowing any iterator
          to be used for constructing queries.  Removed reference to
          <vector> from omquery.h

        * Add omqueryinternal.cc, containing implementation of query
          internals. (surprise!)

        * OmQuery::Internal now has some helper functions to determine the
          properties of each particular query.  These should be converted
          into a lookup table, and the remaining hard-coded properties (for
          AND_MAYBE, AND_NOT and FILTER) factored out.

        * window property removed from constructor.  This can now be set by a
          separate call, to "OmQuery::set_window()"

        * Added a deleter_vector class, to store subquery pointers in a more
          exception-safe way.

        * Represent undefined queries by the new OP_UNDEF operation, rather
          than a dedicated flag - cleaned up some logic.

        * Some modifications to XOR handling: should now behave like OR and
          AND - doesn't need to be binary.  (*untested*)

        * Fixes to serialisation code in socketcommon.cc to work with new
          OmQuery::Internals - this should really be done in
          OmQuery::Internal.

        * One tiny fix in tcpclient.cc - an &fdset was missed for exception
          conditions in a select() call.

        * Testsuite modified and expanded to check changes to OmQuery.

Mon Feb 26 18:20:16 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

        * Fixed some compiler warnings reported by James Aylett.

Mon Feb 26 14:27:09 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

        * Avoid waiting for a timeout when closing a SocketClient.

Fri Feb 23 14:38:09 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

        * Updated todo.xml

Thu Feb 22 18:14:41 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

        * OmRegexFilterNode has an output for non-matching strings as
          well as matching.  "out" output renamed to "matching".

Thu Feb 22 16:56:33 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

        * Fixed a bug in the fetch() bits: requesting documents at the
          same time from different OmMSet instances could cause a
          document to disappear from the cache at the wrong moment.

Thu Feb 22 15:39:49 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

        * Updated todo.

Thu Feb 22 12:14:12 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

        * Some small changes in quartz to improve exception safety and
          error checking.

        * Remove unwanted OmExpandWeight::get_expand_k() method.

Wed Feb 21 19:02:44 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

        * Overhauled the OmMSet::fetch() etc. methods.  Documents are
          requested when fetch() is called, but are only fetched (all
          at once) when the first get_document() is called.

Wed Feb 21 19:30:20 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

        * Add an errorhandler member to MultiMatch, and remove it from
          various calls which used to pass it about.

        * Add an EmptyMatch object, which always returns an emptypostlist.

        * Implement errorhandlers at start of query for initially down
          nodes.  Improve test for errorhandlers to cover many more cases.

        * Add many debug messages to error handling code.

Wed Feb 21 14:33:50 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

        * Use a deque<> directly instead of a queue, due to conflict
          with Solaris headers.

        * Split the collect_doc loop into a separate function

        * SocketClient should be more robust against request_doc() being
          used without collect_doc().

Tue Feb 20 18:01:13 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

        * SocketClient implements a queue/cache system which means that
          collect_doc() doesn't need to be called in the same order as
          request_doc().

Mon Feb 19 15:43:49 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

        * Converted btree code to use new/delete instead of [mc]alloc/free.

Mon Feb 19 13:52:23 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

        * Added new test collapsekey2 designed to work with muscat36
          databases, which have different key handling.  Added two new
          categories of tests to cope with this.

        * Adjusted BackendManager's key generation, and updated
          test_specialterms1() accordingly.

Fri Feb 16 17:26:59 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

        * Implemented a test for keep-alives

        * Added "-tNNNN" option to omprogsrv to pass a timeout value in.

        * Added get_network_database() in apitest to set the timeout.

Fri Feb 16 16:13:47 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

        * Incremented the remote protocol version, since a new message
          type has been added.

Fri Feb 16 15:55:31 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

        * Added an OmDatabase keep_alive() method to gently prod any
          remote databases.  Applications can use it to avoid the remote
          servers timing out between queries.  Not properly tested yet...

Thu Feb 15 19:05:24 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

        * The remote server now supports a separate timeout used while
          idle, rather than actually servicing a request from the client.
          Options --idle-timeout and --active-timeout added to omtcpsrv,
          and --timeout sets both timeouts.

        * Added a documentation comment or two.

Wed Feb 14 18:43:00 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

        * In Muscat3.6 backends, don't read the key from the keyfile unless
          keyno is 0.

Tue Feb 13 13:57:34 GMT 2001 Andy MacFarlane <andym@omsee.com>

        * Added parameter expand_k in omsettings in order to change
          value of weighting in expand process.

Tue Feb 13 13:25:45 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

        * Network timeouts now apply to write() operations as well
          as read().

        * SocketLineBuf::do_writeline() now correctly deals with EAGAIN.

        * SocketServer has new method writeline() which handles write
          access to the OmLineBuf.

Mon Feb 12 12:35:41 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

        * Make OmPositionListIterators and any other appropriate iterators
          (postlist, termlist) have a default constructor allowing them to
          be declared uninitialised.

Mon Feb 12 10:51:41 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

        * Updated todo.xml

Thu Feb  8 17:59:44 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

        * Moved omnodepad.h from include/om to indexer/indexgraph/

        * Updated todo.xml

Thu Feb  8 17:35:45 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

        * Updated todo.xml

Thu Feb  8 17:00:02 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

        * Quartz now has a metafile which for now has a magic string
          and a version number.

        * sys_open_to_read() and delete_file() exported from btree.cc.
          The latter was renamed to sys_unlink_if_exists().

        * Include btree_types.h from btree_util.h

Wed Feb  7 17:33:00 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

        * Fix to InMemory databases: terms can be added even if they
          don't have any positions.  (Was causing adddoc2 to fail).

Tue Feb  6 18:06:13 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

        * Rename OmMSet::fetch_items() to fetch().  Add an overloaded
          fetch() method taking a single iterator, to fetch a single item.

        * Fix some documentation comments.

Mon Feb  5 19:16:45 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

        * Update TODO

Mon Feb  5 19:12:39 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

        * Test behaviour of OmDocument methods add_term(), set_wdf(),
          remove_posting() and remove_term().  Fails for inmemory databases.

Mon Feb  5 17:46:16 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

        * Modified the behaviour of timeouts during a match.  Internally,
          an absolute timeout time is set from start_match().  Now remote
          nodes should timeout at NOW + remote_timeout, rather than
          waiting remote_timeout milliseconds for each read().  Needs
          some more testing.

Mon Feb  5 17:21:52 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

        * Fix a missing #include in socketcommon.h

Mon Feb  5 17:15:46 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

        * Sort generated todo lists.

Fri Feb  2 17:44:54 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

        * Add an OmDocument::add_term() method.

        * Remove an unwanted check that wdf's are greater than 0: wdf of 0
          _is_ allowed.

Fri Feb  2 15:04:08 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

        * Hopefully, a fix for segfaults/assertions when network errors
          happen halfway through a match, when handled by OmErrorHandler
          objects: give the place-holder EmptyTermLists weighting objects.

Thu Feb  1 19:03:10 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

        * Fixes to OmDocument interface: add parameters specifying the
          changes to be made to the wdf to add_posting and remove_posting,
          properly implement remove_posting and remove_term, including
          throwing of exceptions, and add a set_wdf() method to set the wdf
          to an absolute value.  Corresponding modifications to
          OmDocumentTerm.

        * Fix commented out errorhandler code in multimatch.cc, so it still
          compiles.

        * Add a check to avoid division by zero in bm25weight.cc

Thu Feb  1 15:59:30 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

        * Add a missed #include to omqueryinternal.h

Thu Feb  1 14:44:04 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

        * Add some error handler code, with a "#if 0"ed out comment,
          to multimatch.cc

Wed Jan 31 15:45:16 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

        * Remote servers should close down more gracefully when the
          client closes down in the middle of a request.

Tue Jan 30 16:52:05 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

        * Removed unneeded #includes of STL headers from API headers.

        * All #includes of files which are not installed use "" rather than
          <>.  This means all #includes of OM files except for those which
          are in example programs (and hence might be compiled against the
          installed library).  "" search paths are a superset of <> search
          paths: hence this should ensure that the om headers work however
          they are used.

        * Moved supplied OmExpandDecider subclasses into
          include/om/omexpanddecider.h

        * Remove om_termname_list from API: not used except by code which
          displays it, and in testsuite.

Tue Jan 30 12:45:22 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

        * Removed #include <vector> from omstem.h

Tue Jan 30 11:09:29 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

        * OmStem::get_available_languages() now returns a string
          rather than a vector.  Languages are space-separated.
          Updated apitest.

        * Added definition of RTLD_DEFAULT to internaltest.cc

Mon Jan 29 16:11:15 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

        * OmIndexerMessage's copy-on-write slightly more careful.

        * Improved debugging in OmIndexerNode

        * Fixed a bug in the termlistadd node - it tried to append to a
          non-vector.

Fri Jan 26 16:21:09 GMT 2001 Olly Betts

        * indexerxml.cc: Removed some dead code.

Fri Jan 26 16:11:13 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

        * Added omindexerdescinternal.h to the Makefile

Fri Jan 26 15:50:32 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

        * Move OmQuery definition into a separate header file.

Fri Jan 26 15:46:42 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

        * Move OmQuery::OP_LEAF out of public visibility, by taking it out
          of the enum, making it a static const member of OmQuery::Internal,
          and introducing an OmQuery::Internal::op_t to store query
          operators in internally.  We lose the ability for the compiler to
          warn us if we forget to check for a particular operator in a
          switch statement, but this can't really be avoided.

Fri Jan 26 13:49:33 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

        * Added get_output_{node,pad} to OmIndexerDesc

        * Implemented and testes OmNodeInstanceIterator

        * Implemented OmIndexerBuilder::build_from_desc, which somehow
          hadn't been.  indextest now uses it.

Thu Jan 25 18:47:08 GMT 2001 Olly Betts

        * Fixed various .cvsignore files (omus -> omsee, and
          bindings/java/.cvsignore which seemed to have been copied from
          the top level one at some point).

        * Fixed bug in OrPostList when used in a pure boolean context
          (uninitialised variables).

        * tests/internaltest.cc: removed unused reference to getopt.h.

        * tests/stemtest.pl.in: removed lots of bogus semicolons after
          closing braces.

Thu Jan 25 17:53:08 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

        * Turn debugging messages (OM_DEBUG_TYPES) off by default.

        * Add todo items for release to pages generated for website.

Thu Jan 25 15:11:14 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

        * Add a couple of documentation comments: we need many more of
          these.  No method, and certainly no class, in the API should be
          without an explanatory comment (not least so that they're
          accessible from the doxygen browser).

Thu Jan 25 14:51:55 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

        * Hide the internals of OmIndexerDesc, and adding member functions
          to do all the necessary operations (not all yet implemented).

        * Indexer internals mostly deal with OmIndexerDesc::Internal

        * Removed '#include <vector>' from omindexerdesc.h

Thu Jan 25 13:45:49 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

        * When setting up an RSet, allow documents to be referenced by
          OmMSetIterator, for convenience.

        * Allow OmMSetIterators and OmESetIterators to be created without
          initialising, also for convenience.

        * Include CFLAGS for STLPORT in the flags produced by omsee-config.

        * Change several more missed "omus"s to omsee.

Thu Jan 25 13:50:06 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

        * Changed a mention of libomus in netprogs/Makefile.am to libomsee

Thu Jan 25 12:33:46 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

        * Build only the API docs when making dist / install.  Full source
          docs only get built if explicitly asked for.

Thu Jan 25 11:36:39 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

        * Project name changed to Omsee.

          Ramifications from a technical viewpoint are:

          - library name changed from libomus.* to libomsee.*
          - libomus-config renamed to omsee-config
          - Autoconf macro file libomus.m4 renamed to omsee.m4,
            macro name OM_PATH_LIBOMUS changed to OM_PATH_OMSEE
            and macro now defines OMSEE_CFLAGS and OMSEE_LIBS rather
            than LIBOMUS_CFLAGS and LIBOMUS_LIBS.  configure arguments
            changed name, also.

Wed Jan 24 15:57:10 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

        * Improve test of OmMSetIterators equality comparisons.

        * Update TODO

Wed Jan 24 15:11:11 GMT 2001 Chris Emerson <chris.emerson@open.muscat.com>

        * Renamed OmNodeConnection to OmNodePad.  The old name was
          confusing.

        * Added OmPadIterator, and OmNodeDescriptor::{in,out}puts_{begin,end}.
          Also implemented OmNodeDescriptor::get_type()

        * Added output function for OmPadIterator

        * Added test for OmPadIterators

Tue Jan 23 19:01:29 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

        * Remove OmBatchEnquire from system: it may return at a later date,
          but for now it is simply out of date and a maintenance liability,
          and gives no significant advantage.  Code now exists in
          ombatchenquire.h in CVS, but is not part of build process.

        * Make OmEnquire and OmMSet have reference counted internals: this
          introduces a further layer of indirection, but tidies up things
          greatly.

        * Remove get_docs() and get_doc() methods from OmEnquire.
          get_doc(docid) is catered for by OmDatabase::get_document(docid).
          Added OmMSetIterator::get_document() to replace get_doc on a
          MSetIterator.  Added OmMSet::fetch_items() to replace get_docs():
          it prefetches the documents (or just those specified by some
          MSetIterators into a cache in the Mset).

        * OmMSet internals now have a reference to the creating OmEnquire
          object: this is set up after the mset returns from the matcher.
          If the reference is null, the Mset was created standalone, and
          get_doc methods will fail.

        * OmMSetIterators now have a reference to the MSet, instead of a
          percent_factor stored.  This allows the percent_factor to be
          lazily calculated, and also allows get_doc to work.

        * Add get_rank() method to OmMSetIterators.

        * Improve introspection on OmDocument, and fix a bug with assignment
          of OmDocument (wasn't assigning most of the internals).

        * Add a missing std:: on a string in omstopwordnode.

        * Fixed several documentation comments.

        * Add some more debugging to quartz.

        * Update TODO.

        * Add test_fetchdocs1 to apitest.  Disable test_batchquery1.

        * Remove sign comparison error in VectorTermList.

Tue Jan 23 16:24:04 GMT 2001 Olly Betts

        * No longer compile with -ansi under gcc - it causes problems by
          preventing Linux system headers defining various functions we need.

        * testsuite/testsuite.cc: when reporting exceptions, display
          exception's errno value if set.

Tue Jan 23 15:13:58 GMT 2001 Chris Emerson <chris.emerson@open.muscat.com>

        * Killed OmIndexerBuilder::NodeType.  Now use OmNodeDescriptor
          in its place, getting rid of another vector usage in the API.

        * OmNodeDescriptor adjusted for its new role: internals are
          refcounted, and some query as well as setting functions.

        * Cast the fourth argument to getsockopt() to void *.  On Solaris
          that argument is char *.

Tue Jan 23 11:24:13 GMT 2001 Olly Betts

        * Tiny tweak to da_document.cc.

Fri Jan 19 18:36:15 GMT 2001 Chris Emerson <chris.emerson@open.muscat.com>

        * Removed get/set vector methods from OmSettings

        * Remote/prog arguments now passed in a string separated be spaces,
          not a vector.

        * split_words() moved from netutils.h to utils.{h,cc}

        * Some unnecessary #include <vector> lines removed from API headers

        * Removed get_config_vector() from OmIndexerNode

        * OmConstantNode no longer handles vector values, and
          OmStopWordNode and OmSelectItemsNode use space-separated
          values instead.

Thu Jan 18 17:31:55 GMT 2001 Chris Emerson <chris.emerson@open.muscat.com>

        * Removed mentions of std::vector from OmIndexerMessage, and
          updated the relevant bits.

        * Fixed a bug with the copy-on-write parts of OmIndexerMessage.

Thu Jan 18 17:09:43 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

        * Fix to btreetest.cc: shouldn't fail if test data files are not
          available.

        * Fix to multimatch.cc: clamp hits values to number of documents
          matched after collapsing and match functors, rather than before.

Thu Jan 18 14:13:21 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

        * Fix error messages thrown by quartz when a database doesn't exist /
          already exists and isn't to be overwritten.

        * Make quartz clean up an old database directory, if
          database_allow_overwrite is specified, so that old base files don't
          confuse things.

Wed Jan 17 18:18:50 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

        * Added all used toplevel directories to DIST_SUBDIRS

Wed Jan 17 18:13:50 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

        * Martin committed changes to btree.cc which should fix some random
          problems experienced with quartz.

        * Added in a test framework for the btree code, which exhibited the
          bug fixed by martin until updating to his fixed version.

Wed Jan 17 16:10:02 GMT 2001 Chris Emerson <chris.emerson@open.muscat.com>

        * Moved the socklen_t definition so that tcpclient.cc could see
          it.

Tue Jan 16 20:35:18 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

        * Fix creation of quartz databases in backendmanager: all tests should
          now pass.

Tue Jan 16 20:28:46 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

        * Fix quartztest so that the tables / databases get created.
          Implement new test "create1" to check that creation of databases
          works as specified.

        * Fix test for whether we are allowed to overwrite a database.

        * Implement much better logging from quartz when making new databases.

        * Clean up an error message from btree.cc

Tue Jan 16 19:24:49 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

        * Don't display messages about allocation failures in the first
          iteration: if the failures go away when repeating, we're not
          interested.

Tue Jan 16 18:28:03 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

        * Add two new OmSettings, for use when opening databases:
          database_create and database_allow_overwrite.  The idea is that
          databases will only be created if database_create is specified,
          and that when they are being created an exception will be thrown
          if there's an existing database unless database_allow_overwrite
          is specified.

        * Implemented database_create and database_allow_overwrite for
          Quartz, which is the only relevant type for now.  Note that this
          breaks the testsuite, quite badly.

        * Add OmDatabaseCreateError, which is thrown when creating a database
          fails.

Tue Jan 16 17:08:47 GMT 2001 Chris Emerson <chris.emerson@open.muscat.com>

        * Fixed a typo in -ldl detection

Tue Jan 16 15:15:30 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

        * Remove OmNeedRecoveryError, and quartz's quartz_perform_recovery
          parameter.  Quartz now always performs recovery if needed: there
          is no need for this added complication.

        * Update TODO

Tue Jan 16 14:25:03 GMT 2001 Chris Emerson <chris.emerson@open.muscat.com>

        * Changed references to SIGCLD to SIGCHLD as it's more portable.

Tue Jan 16 14:02:34 GMT 2001 Chris Emerson <chris.emerson@open.muscat.com>

        * Added check for whether -ldl is necessary.

Tue Jan 16 11:51:25 GMT 2001 Chris Emerson <chris.emerson@open.muscat.com>

        * Added compatibility bits for early libxml1 versions.

Mon Jan 15 18:18:01 GMT 2001 Chris Emerson <chris.emerson@open.muscat.com>

        * Removed use of hstrerror, which isn't portable.

Mon Jan 15 18:02:42 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

        * Fix assertion which was the wrong way round in multimatch.cc

Mon Jan 15 17:46:13 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

        * Fix initialisation of Btree_base::sequential when creating database.

Mon Jan 15 15:43:46 GMT 2001 Chris Emerson <chris.emerson@open.muscat.com>

        * Renamed some uses of XML node structure for libxml2 compatibility.

Mon Jan 15 15:35:50 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

        * Add some fixes to sequential access to btrees from Martin.

Mon Jan 15 12:23:02 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

        * Set matches_* to the known value of the number of hits if we have
          been unable to return as many hits as were requested, and therefore
          know the exact number.

        * Update test_matches1() to check this works correctly.  Passes.

Fri Jan 12 17:45:27 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

        * Implement get_doclength() for QuartzDatabase

        * Remove unused parameter from QuartzRecordManager::add_record()

Fri Jan 12 17:14:16 GMT 2001 Chris Emerson <chris.emerson@open.muscat.com>

        * Fixed MultiAllTermsList, which had stopped working.

Fri Jan 12 15:32:34 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

        * Add test to apitest (postlist6) that doclengths got from postlists
          are the same as those from databases.  Fails for Quartz for the
          moment.

        * Add test to quartztest (disktable3) to try and bring out a bug in
          adding to tables.

Fri Jan 12 15:20:09 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

        * Fix STLport macro so that it will accept an STLport installation
          with foo/include/stlport and foo/lib instead of foo/stlport and
          foo/lib.

Fri Jan 12 14:04:37 GMT 2001 Chris Emerson <chris.emerson@open.muscat.com>

        * Fixed buglet in configure.in which produced a bogus warning
          about regex libraries.

        * Added an AC_MSG_RESULT corresponding to an AC_MSG_CHECKING
          for the libxml flags

Fri Jan 12 13:18:07 GMT 2001 Chris Emerson <chris.emerson@open.muscat.com>

        * Fixed skip_to() in QuartzAllTermsList

Fri Jan 12 12:52:57 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

        * Turn debugging off in btree.cc: accidentally committed a version
          with lots of verbose debugging on.

Fri Jan 12 11:16:17 GMT 2001 Olly Betts

        * glibc 2.2 needs `#define _GNU_SOURCE' to give us RTLD_NEXT.

        * C++ comments changed to C comments in malloccheck.c.

Thu Jan 11 16:42:07 GMT 2001 Olly Betts

        * Removed unnecessary `#include "alltermslist.h"' from
          d[ab]_database.h.

Wed Jan 10 14:28:10 GMT 2001 Olly Betts

        * Updated various .cvsignore files.

Tue Jan 09 19:03:12 GMT 2001 Olly Betts

        * Tidied up dead code from OmAllTermIterator.

Tue Jan 09 18:41:21 GMT 2001 Olly Betts

        * OmAllTermsIterator merged into OmTermIterator.

        * When iterating over all terms, skip_to() doesn't set at_end()
          when it skips off the end.  Fixed except for quartz and added
          regression test (allterms3).

Tue Jan  9 18:14:04 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

        * Add some extra debugging code into btree code in quartz.

Tue Jan  9 17:22:12 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

        * Make skip_to() work (ie, do nothing) on OmTermIterators, when the
          term iterator is at_end() already.

Tue Jan  9 13:32:08 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

        * Updates to make the quartzdump utility more useful.

        * Added new test to test cursor behaviour in quartz.

Tue Jan  9 11:31:26 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

        * Remove an item from TODO

Tue Jan  9 10:27:35 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

        * Add a missing \ in tests/Makefile.am

Mon Jan  8 19:03:42 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

        * Increment format number in quartz/btree_base.cc.  This isn't
          actually due to a change in the btree format, but to ensure that
          some databases which were causing problems are rebuilt.

          We need to add quartz format numbers, separate from the btree format
          numbers, to check this kind of thing.

Mon Jan  8 15:13:04 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

        * Add some debugging, and fix a test data file.

Mon Jan  8 13:49:50 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

        * Fix failure to initialise OmMSet::Internal::have_percent_factor.

Thu Jan  4 17:21:24 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

        * Add new test for a postlist with many documents, designed to fail
          and exhibit the bug andy has found.  So far doesn't fail.

Wed Jan  3 19:30:30 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

        * Add get_percent method to OmMSetIterator.  Untested.

        * Add om_percent type to om_types.

        * Add test of sort order of terms in get_matching_terms.

Tue Jan  2 15:05:53 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

        * Move documentation of parameters for OmSettings out of omsettings.h
          and into docs/.  Not in distribution at the moment: it is awaiting
          placement into a permanent home (I think the user manual is the
          correct place).

        * Add a bm25weight_min_normlen parameter: this specifies a cutoff
          on the minimum value that can be used for a normalised document
          length: smaller values will be forced up to this cutoff.  This
          prevents very small documents getting a huge bonus weight.

Wed Dec 20 16:54:41 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Fix warning in QuartzTable

Wed Dec 20 15:13:05 GMT 2000 Olly Betts

        * OmTermListIterator merged into OmTermIterator.

        * Added OmRSet::contains() - checks if an RSet contains a given
          docid.

        * Methods returning `const om_termname' now just return
          `om_termname'.

Tue Dec 19 16:55:02 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * Implemented AllTermsIterator for DA and Multi databases.
          Added a test which actually uses a multidatabase, but
          disabled it as it currently fails for both Quartz and DA.

Tue Dec 19 12:14:05 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * Adjusted TODO

Tue Dec 19 20:06:43 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Escaping for termnames in remote database communication modified
          to use only characters in range 33 to 126.  Should now work on all
          architectures.

        * Increased OM_SOCKET_PROTOCOL_VERSION to 8.

Mon Dec 18 17:23:48 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Added "match_cutoff" option to get_mset OmSettings.

        * Added test for "match_cutoff" to apitest.

        * Updated todo.xml

Mon Dec 18 17:19:40 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * Implemented opening positionlists from inmemory databases.  Added
          a testcase as well, which is run for quartz and inmemory.

Mon Dec 18 15:48:16 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * Implemented AllTermsIterator for quartz.  Interaction with
          QuartzPostList needs to be cleaned up.

        * Added new functions [un]pack_string_preserving_sort(), which
          pack a string in a way which preserves sort order.  Added a
          testcase to quartztest.

        * Now use [un]pack_string_preserving_order() on postlist keys, so
          that we can get at terms in sorted order.  (And get_tname_from_key()
          added to separate out the term-unpacking as well as the packing)

        * Enabled test_allterms1 in apitest, but put it in a group of
          tests only run for inmemory and quartz.  This should be extended
          to other backends.

Mon Dec 18 14:33:42 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Implemented tests of msetiterator and esetiterator copying and
          assignment.

        * Fix segfault when assigning to [me]setiterator to end.

        * Updated todo.xml

Mon Dec 18 13:52:53 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Move creation of first key in a quartz postlist into a named
          function (was scattered through the code).

Mon Dec 18 11:19:53 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Update todo.xml

Mon Dec 18 10:47:42 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Remove const from reverse_iterators in api_db.cc, so get around
          brokenness of egcs 1.1.2

Mon Dec 18 09:41:54 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * Added apitest_space.txt to the Makefile.am

Sun Dec 17 16:15:03 GMT 2000 Olly Betts

        * Replaced all API uses of om_termname_list with OmTermIterator.

Fri Dec 15 18:54:10 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * Implemented OmAllTermsIterator interface in API.  It works for
          inmemory - the rest haven't been implemented yet.  The test
          is commented out.

Fri Dec 15 15:47:53 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Updated TODO.

        * database returns positionlists as AutoPtrs; this neatens some of
          the code from the previous changelog entry, and makes explicit the
          ownership of the pointer.  postlists and termlists should be
          AutoPtrs, likewise.

Fri Dec 15 14:59:41 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Make OmPositionListIterators retrieved from OmPostListIterators
          valid indefinitely (were only valid until OmPostListIterator was
          moved).  This makes them consistent with OmPositionListIterators
          retrieved from OmDatabases.

        * Renamed PostList::get_position_list() to read_position_list.
          Added PostList::open_position_list() which opens a new positionlist
          and returns it as an AutoPtr.

Fri Dec 15 13:09:51 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Make TODO.release file, containing TODO items for next release.

Fri Dec 15 12:06:42 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * QuartzDatabases now autoflush after 1000 changes.

Fri Dec 15 11:40:37 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Fix segfault in quartz_table

Fri Dec 15 11:23:15 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * Removed begin/end_session() from quartztest

Thu Dec 14 19:19:40 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Done todo item: For writable databases, make the behaviour currently
          obtained by calling begin_session() and later end_session() the
          default behaviour.  If users want the changes to be applied
          immediately following a change, they should call flush().

Thu Dec 14 17:48:27 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Fix problem with recalc_maxweight() not being called before a
          get_maxweight() in multimatch.cc if a node prunes at the top level,
          since recalculate_w_max wasn't being checked at this point.
          Introduced helper function getorrecalc_maxweight() to tidy this up.

        * Tidy up Asserts in common/netutils.h.

Thu Dec 14 17:11:17 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * Adjusted todo.xml

Thu Dec 14 16:21:27 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * Removed handling of OmDatabaseModifiedError in the API - it's
          up to the users to know what to do.  Disabled quartzoverwrite2
          as it's now inappropriate.

        * Added OmDatabase::reopen() to help them do so.

        * Adjusted todo.xml

Thu Dec 14 14:38:39 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Added another quoting regression test.

Thu Dec 14 14:36:53 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * Fixed the quoting _again_, since it broke with backslashes.

Thu Dec 14 12:49:58 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Fix problems with recalculation of maxweight in postlists, causing
          AssertParanoid at multimatch.cc:393.  When a prune was happening,
          recalc_maxweight flag was not always being set, because some
          {next,skip_to}_handling_prune() methods weren't being passed the
          matcher, and a default argument of 0 was being used.  I've now
          removed the default argument and pass the matcher always.

          Sometimes the recalc could perhaps be avoided, but this is
          certainly safer for now.

Thu Dec 14 12:30:02 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * Sleepcat is now disabled by default.

        * Fixed a problem with tabs not being quoted in the remote case.  All
          control characters are now quoted.  Incremented the protocol ver
          number.

Thu Dec 14 11:54:17 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Added regression test to check that all characters can be
          are safe to exist in document keys.

        * Fixed OmDebug so that it can display messages containing zero bytes
          (use fwrite instead for fprintf)

Wed Dec 13 18:43:40 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Add regression tests to apitest to check that OmMSet and OmESet
          begin() and end() iterators compare equal if the mset is empty.
          Fix matchfunctor used in test_matchfunctor1 so that it works for
          Muscat3.6 databases.

Wed Dec 13 18:35:05 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * Fixed bugs in OmMSet and OmESet iterators: begin() when the set
          was empty produced an invalid iterator, and the assignment
          operators would have failed when end iterators were involved.

        * Added a check in test_matchfunctor1() that the mset returned is
          not empty.

Wed Dec 13 18:18:09 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Turn off tests involving terms with newlines or zero bytes in terms
          with Muscat3.6 backends; these can't be expected to work.

Wed Dec 13 18:06:29 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * Uncommented the code in pctcutoff1 - test now passes.

Wed Dec 13 17:53:19 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Fix: m36_key_file parameter wasn't being set with DA flimsy
          databases (thanks to Mark Hagger).

        * indextest.cc changed to use "\n" instead of endl - compiles
          with STLport again.

Wed Dec 13 17:27:17 GMT 2000 Olly Betts

        * OmMSet is now an STL compatible container.

        * Om*Iterator::difference_type was unsigned - now signed.

        * net/readquery.ll: fixed compiler warning.

        * Remote backend was defaulting to collapse on key 0.

Wed Dec 13 16:48:49 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * Add handling of DatabaseModified to OmEnquire::get_mset()

Wed Dec 13 16:28:47 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Escape zero bytes in the network protocol, since these were
          breaking things when being passed across as part of keys.

        * Add test of having zero bytes in the collapse keys.

        * In testsuite, only display the context of errors if there is one
          present.

Wed Dec 13 14:44:46 GMT 2000 Olly Betts

        * Implemented OmMSet::operator[]().

Wed Dec 13 14:30:57 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * Added support for handling overwritten database conditions.
          Currently works for OmDocument::get_{data,key}().

Wed Dec 13 13:20:45 GMT 2000 Olly Betts

        * Elaborated API hitlist in todo.xml.

Wed Dec 13 12:28:18 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * Fix to BackendManager to stop it removing tables prematurely.

Wed Dec 13 11:49:53 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * Apply the stemmer to query terms used in spaceterms1.  (Not doing
          so caused the test to fail spuriously on local databases, since the
          terms are stemmed at index time).  The test still fails with da and
          db databases.

        * Fixed a problem when stats were unpacked from the network stream,
          where term names were not correctly unquoted.  This led to double
          quoting of global statistics.

Wed Dec 13 02:49:05 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Implement copy and assignment methods for OmPositionListIterator.

Wed Dec 13 02:37:14 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * ESet and MSet iterators now cope with being copied / assigned when
          the internals are null.

        * Added copy method to OmPositionListIterator interface.  No
          implementation for this yet though, or for the already existing
          assignment method.

        * Added a couple of easy items to the todo list to check regarding
          iterators.

Wed Dec 13 02:19:50 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Fix small bug in mset_range_is_same{,_weights}()

Wed Dec 13 02:07:59 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * And add copy and assignment for OmESet, similarly.

Wed Dec 13 01:58:38 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Add copy and assignment operators to OmMSet so that the internals
          get copied (rather than just the pointer to them).  Really want a
          small internals class, holding a refcount to the real internals, or
          else to use refcntptrs for the members of OmMSet::Internal which are
          potentially large (eg, items)

Wed Dec 13 01:05:44 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Add Asserts to api/omdatabaseinternal.cc to ensure that there is at
          least one database present when opening termlists, etc.  This should
          really be done by throwing errors.

        * Add destructor to OmMSet, deleting internals.

        * Implement getting positionlists from QuartzDatabases.

        * Fix bug in copy constructor of OmDocument::Internal - some fields
          were not being copied.

        * Fix api_db.cc so it compiles: code referring to mset by subscripting
          temporarily commented out.

Tue Dec 12 20:05:10 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Fix bug with truncation of intermediate keys in btrees.

Tue Dec 12 18:33:12 GMT 2000 Olly Betts

        * OmMSet::get_docs() now takes sane parameters.

        * Various test programs updated to nearly work with new OmMSet
          interface.

Tue Dec 12 17:18:33 GMT 2000 Olly Betts

        * Finished cleaning up OmMSet; updated TODO to reflect this.

Tue Dec 12 17:16:02 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Fix bug with sorting keys in btrees.

        * Various fixes to quartzdump.

Tue Dec 12 15:40:28 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * Nettest compiles with new OmMSet interface.

Tue Dec 12 15:09:14 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * Fixed an endless loop in QuartzWritableDatabase::do_delete_document.

Tue Dec 12 15:07:39 GMT 2000 Olly Betts

        * OmMSetItem replaced by OmMSetIterator.

        * Added OmESet::empty().

        * Fixed == on OmESetIterator.

Tue Dec 12 14:16:57 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * Renamed arguments to compare_keys()

Tue Dec 12 12:05:24 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Added quartzdump utility to dump the contents of a quartz table.

Tue Dec 12 10:54:44 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * Added constructors and destructor to OmRSet.

Mon Dec 11 16:32:07 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Remove caching of average length in OmDatabaseInternal, was breaking
          asking for the average length of a database which was being
          modified.

Mon Dec 11 16:03:46 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * If no documents in database, don't divide by zero in
          omdatabaseinternal.cc

        * If a document object doesn't come from the database, when iterating
          through its termlist don't open postlists from the nonexistent
          database; open them from the DocumentTerm objects in the document
          instead.

        * Remove old unused and undefined method
          OmDocument::Internal::add_posting()

Mon Dec 11 13:53:18 GMT 2000 Olly Betts

        * omenquire.h: Removed superfluous declaration of OmMSetCmp.

Mon Dec 11 13:38:12 GMT 2000 Olly Betts

        * Updated TODO list.

Mon Dec 11 13:24:45 GMT 2000 Olly Betts

        * OmRSet internals encapsulated.

Mon Dec 11 12:42:02 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * OmIndexerMessage::get_element and ...::operator[] now have
          non-const versions.  Fixes const-warning in omstemmernode.cc.

Mon Dec 11 12:17:32 GMT 2000 Olly Betts

        * Better typedef-s for Om*Iterator::difference_type.

Sun Dec 10 17:51:41 GMT 2000 Olly Betts

        * Corrected various typedef-s for Om*Iterator.

Sun Dec 10 17:28:59 GMT 2000 Olly Betts

        * Updated TODO to reflect OmESet being cleaned up.

        * Term position argument to OmDocument::add_posting() is now
          optional (as it was for OmDocumentContents).

Sun Dec 10 16:55:17 GMT 2000 Olly Betts

        * OmESetItem is dead - long live OmESetIterator!

        * net/socketclient.cc: fixed compiler warning.

        * net/socketserver.cc: fixed compiler warning.

Sun Dec 10 13:29:15 GMT 2000 Olly Betts

        * Started to encapsulate OmESet/OmESetItem interface.  Interface is
          close, but currently implementation is exposed in omenquire.h.

        * apitest wasn't running puncterms1 or spaceterms1 - fixed.

Sun Dec 10 11:34:39 GMT 2000 Olly Betts

        * om/autoptr.h -> autoptr.h in lots of places.

Fri Dec  8 17:20:04 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * Updated indextest to not use AutoPtr<OmIndexer>

Fri Dec  8 17:14:09 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * Oops - removed one too many #include "autoptr.h"

Fri Dec 08 16:50:42 GMT 2000 Olly Betts

        * Updated TODO.

Fri Dec  8 16:44:26 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * IndexerBuilder now returns OmIndexer objects instead of
          AutoPtr<OmIndexer>.  OmIndexer's internals are reference
          counted.

        * Moved autoptr.h from include/om to common/, since it's no
          longer used in the API.

Fri Dec  8 16:22:48 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * Fixed omstemmer node bug and made debug slightly more verbose
          in indextest.cc.

Fri Dec  8 16:13:36 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * Added a test for OmIndexerMessage to indextest

        * Added output operator for OmIndexerMessage

        * Fixed a bug introduced into omvectorsplit node

        * Changed couts in indextest.cc to touts.

Fri Dec 08 14:53:24 GMT 2000 Olly Betts

        * quartztest: removed OmDocumentTerm reference so that it'll
          compile (tests fail though).

Fri Dec  8 14:42:46 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * OmIndexerMessage is now a class by itself, replacing OmIndexerData
          and the typedef to AutoPtr<OmindexerData>.  It's now a copy-on-write
          object.

        * The indexer stuff all changed.

Fri Dec 08 14:24:02 GMT 2000 Olly Betts

        * omindexdoc.{cc,h}: no longer used so removed.

        * Pushed OmDocumentTerm from API level into the internals of the
          library.

        * Updated TODO.

Fri Dec 08 12:08:49 GMT 2000 Olly Betts

        * delve: if just given a database (or list of databases), report the
          number of documents and average document length.

Thu Dec  7 20:39:24 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Fix bug: Om*Iterators which were created over empty lists didn't
          have null internals, causing them not to compare equal to end
          iterators.

        * Added many asserts to iterator code.

Thu Dec  7 20:02:43 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Removed OmTermListIteratorMap - OmTermListIterator can now be
          across either a map or an actual termlist.

        * Om*Iterator classes all now delete internals when reaching end,
          freeing resources sooner and making the comparison operators much
          simpler.

Thu Dec  7 18:33:03 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Updates to TODO

Thu Dec  7 18:32:39 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * Implementation of write locks for Quartz

Thu Dec  7 18:28:55 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * Fix to backendmanager which doesn't return writable databases
          unnecessarily (which breaks things when there are write locks)

Thu Dec  7 18:25:50 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * Added test for Quartz write locks

Thu Dec  7 17:56:19 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Add OmDocument::set_data() method which takes a string, instead of
          an OmData object.  This allows, implicitly, use of const char *'s
          as well.

        * Further fixes to quartztest.  It now compiles (though I've not
          tried linking it yet...)  :)

Thu Dec  7 17:49:50 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * Fixed omkeylistiterator return types.

Thu Dec  7 17:27:57 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Moved get_document() from OmWritableDatabase to OmDatabase.

        * Added -> operator to OmKeyListIterator.  Fixed return values
          and constness of Om*Iterator::operator *() methods.

        * Some fixes to quartztest.cc, but not enough to get it compiling.

Thu Dec 07 16:21:28 GMT 2000 Olly Betts

        * Some work on getting quartztest working.

Thu Dec 07 16:10:00 GMT 2000 Olly Betts

        * The library now builds, but "make check" still fails.

Thu Dec  7 15:39:19 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Fixes to testsuite/index_utils.cc to not segfault.

Thu Dec  7 14:31:56 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Fixes to api_db.cc so that it compiles.

Wed Dec  6 18:50:48 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Add test for terms with spaces, newlines, zero bytes, or
          backslashes.

        * Updates to TODO

Wed Dec 06 18:18:16 GMT 2000 Olly Betts

        * Woohoo!  Now builds with just --disable-indexer!
          (still doesn't pass any tests).

Wed Dec 06 17:24:19 GMT 2000 Olly Betts

        * Minor fix.  Now builds with --disable-indexer
          --disable-quartz-backend (but doesn't pass any tests).

Wed Dec 06 16:35:34 GMT 2000 Olly Betts

        * Fixed up lots of build errors.

Wed Dec 06 14:56:59 GMT 2000 Olly Betts

        * Begin the long job of replacing OmDocumentContents with
          OmDocument.  Won't currently build - expect the tree to be broken
          for a few days.  As usual, if you want a working build, use the
          "snapshot_latest" tag.

Wed Dec  6 12:03:44 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * Backed out yesterday's overwritten-handling stuff.

Wed Dec  6 11:36:55 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Increase sleep in tcpclient1 to 3 (did tcpmatch1 last time, duh!)

Tue Dec  5 17:13:38 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * QuartzDocument now has a QuartzTableManager pointer rather than
          two QuartzTable pointers.

        * QuartzDatabase::do_get_document_internal() copes with Btree
          overwritten conditions.

        * QuartzDocument methods cope with Btree overwritten conditions

        * New method QuartzTableManager::reopen_tables_because_overwritten()
          for helping with the above.

        * New test in quartztest for testing overwritten problems from the
          API rather than just internally to Quartz.

        * Fixed a typo in omsettings.h comment (quartz_dir used to refer to
          a sleepycat database)

Tue Dec  5 16:53:46 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Update todo.

        * Fix undesirable assert in stats.h

Tue Dec  5 15:41:40 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Replace OmMSet::docs_considered with
          OmMSet::matches_{lower_bound,estimated,upper_bound}, giving more
          useful information.

        * PostLists now have get_termfreq_{min,est,max}(), instead of
          get_termfreq(), so the postlist tree can be used to calculate
          the matches_* values for the mset.  Implemented for all the
          postlist subclasses.

          LeafPostList's still has a virtual get_termfreq() method,
          and implements get_termfreq_* in terms of it, so database postlists
          don't need to be modified.

        * Passing of MSets across network modified to pass the new
          information.

        * PendingMSet uses the values from the mset to return the values
          of get_termfreq_*().  This assumes that recalc_maxweight has been
          called first, which is has been.

        * Muscat36 databases get_termfreq() methods fixed to use a
          LeafPostList rather than a PostList.

        * Renamed test docs_considered1 to matches1, and add several
          more cases to it.

Tue Dec 05 15:38:27 GMT 2000 Olly Betts

        * Added tests/testdata/apitest_punc.txt to distribution.

Tue Dec 05 15:07:26 GMT 2000 Olly Betts

        * Oops, failed to add new file `tests/testdata/apitest_punc.txt'
          with last check-in.

Tue Dec 05 14:34:04 GMT 2000 Olly Betts

        * OmTermListIterator implemented for an OmDocument with terms stored
          in a map rather than coming from a Document.

        * Fixes to remote protocol so solve problems with terms with
          punctuation in (regression test punc_terms1).

Mon Dec  4 15:02:53 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Makefile tweak in docs/

Mon Dec 04 14:13:05 GMT 2000 Olly Betts

        * More OmDocument work.

Mon Dec  4 11:43:46 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Renamed OmMSet::mbound to docs_considered.

Mon Dec  4 10:11:11 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * Added some more std:: prefixes for STLport.

Fri Dec  1 17:45:01 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Increase the sleep after the server is started by tcpclient1 to 3
          seconds so that the server is more likely to have started when
          then test ran.  This seems to be what was causing the test to
          randomly fail.  Really, we want a better solution to this (such as
          the server picking a port and writing it out on stdout once it is
          listening.)

Fri Dec  1 17:27:02 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Swapped the ports used by tcpclient1 and tcpmatch1 to see if the
          random failures follow suit.

Fri Dec  1 17:21:07 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Another minor fix to work with STLport.

Fri Dec  1 17:01:02 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Add std::'s and similar to fix compilation with STLport.

        * Fix bug in expander due to nth_element being called on the wrong
          element.  This is the counterpoint of the bug fixed on Nov 24th
          with the matcher.

Fri Dec  1 16:30:26 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * Minor tweaks in error strings.

Fri Dec 01 12:57:59 GMT 2000 Olly Betts

        * Corrected erroneous documentation comment.

Thu Nov 30 18:50:16 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * OmSettings no longer throws exceptions internally (at the cost of
          slightly more code duplication).

Thu Nov 30 18:05:39 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Add a few std::'s to strings which had been missed.

Thu Nov 30 16:41:11 GMT 2000 Olly Betts

        * OmDocument::Internal now knows its OmDatabase.

Thu Nov 30 16:40:33 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Add context to network errors thrown from OmSocketLineBuf.

Thu Nov 30 16:21:47 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * Added a quartz test for largish bitmaps.

        * Fixed the code so that the above test would pass.

Thu Nov 30 16:10:37 GMT 2000 Olly Betts

        * OmDocument::add_posting() pretty much done.

Thu Nov 30 15:51:46 GMT 2000 Olly Betts

        * More work on OmDocument::add_posting().

        * Added OmTermListIterator::positionlist_begin() and
          OmTermListIterator::positionlist_end().

Thu Nov 30 14:16:28 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * Fixed a prototype bug introduced with the last commit.

Thu Nov 30 13:23:14 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * Bcursor::find_key now more const-correct.

        * Bcursor_create now returns an AutoPtr.  The resultant changes
          fixed a memory leak.

        * New exception: OmDatabaseModifiedError.  Thrown when an open
          revision of a table is no longer valid due to multiple updates.

        * quartzoverwrite1 test re-enabled, and passes.

Thu Nov 30 13:23:27 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * nettest now uses quartz backend: should always run all tests now
          (apart from tcpdead1, which doesn't work).

Wed Nov 29 19:46:22 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * In testsuite, report the context of Om exceptions as well as their
          type and message.

Wed Nov 29 18:30:10 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Add "remote_connect_timeout" parameter to be supplied when opening
          a remote database, to specify a separate timeout for the connect
          operation to that used once the connection has been opened.

        * Add setting of the context of errors thrown by tcpclient or
          progclient, so that the node which failed can be determined.

Wed Nov 29 17:50:03 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * Reworked Btree_base::read() a bit so that it's hopefully more
          readable.

        * Hopefully fixed a bug when the bitmap approaches 1k.

        * Fix to catch problems re-opening databases after an apply in
          Quartz.

Wed Nov 29 17:30:26 GMT 2000 Olly Betts

        * Added OmDocument::termlist_begin() and OmDocument::termlist_end()

Wed Nov 29 16:53:13 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Comment out quartzoverwrite1 test so that it doesn't cause problems
          for other developers.

Wed Nov 29 16:27:19 GMT 2000 Olly Betts

        * docid now in Document class rather than subclasses.

Wed Nov 29 14:54:13 GMT 2000 Olly Betts

        * leafdocument.cc renamed to document.cc

        * Document class now has a pointer to the associated Database class
          so we can open termlists, etc.

Wed Nov 29 14:03:43 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Add quartztest to test for case when a database block gets
          overwritten.  Currently, this fails because an exception doesn't
          get thrown when it should.

Wed Nov 29 13:18:24 GMT 2000 Olly Betts

        * LeafDocument class renamed to Document.

Wed Nov 29 12:35:49 GMT 2000 Olly Betts

        * Added OmDocument::remove_posting(), OmDocument::remove_term(),
          and OmDocument::clear_terms()

Wed Nov 29 12:31:22 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * Added another revision number in the middle of the base file,
          before the bitmap.  Also now check that there isn't any extra
          data at the end after we finish reading it.  Incremented the
          database format.

Wed Nov 29 11:55:03 GMT 2000 Olly Betts

        * Added OmDocument::remove_key() and OmDocument::clear_keys()

Tue Nov 28 18:34:57 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * Btree bitmap now merged with base - one object, one file.

Tue Nov 28 17:13:56 GMT 2000 Olly Betts

        * Added OmDocument::set_data()

Tue Nov 28 16:47:06 GMT 2000 Olly Betts

        * Started to alter OmDocument to be a general purpose document class
          which includes the functionality currently in OmDocumentContents.

Tue Nov 28 15:08:38 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * Added OmSplitOnCharsNode, which does a subset of OmRegexSplitNode
          but less slowly.

        * Modified RegexSplit node and regexcommon so that less copying
          of strings is needed.

Tue Nov 28 13:42:41 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

        * Moved the Btree's bitmap into a separate object.

Tue Nov 28 13:06:36 GMT 2000 Olly Betts

        * Eliminated OmDocumentParams.

        * Removed unnecessary mutex from OmDocument::Internal.

Mon Nov 27 18:45:27 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Implement get_position_list() on databases.  Untested.  Also needs
          some work to make consistent with open_position_list() on posting
          lists: see todo list.

Mon Nov 27 18:29:00 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Change #define LEVEL ... to #define GET_LEVEL ... in btree_util.h:
          fixes problem reported by includetest

Mon Nov 27 18:20:42 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Added a set of modifications to the todo.xml.  Also, add a
          "release" field, recording the release that the work must be
          performed by.

Mon Nov 27 18:08:35 GMT 2000 Olly Betts

        * A RefCntPtr now copes with being assigned to itself (used to
          delete the underlying object if the reference count was 1).  Added
          regression test (refcnt2).

        * Now overwrite pointer inside RefCntPtr before deleting the pointed
          to object so there's no window where another thread can access the
          pointer and get the just-deleted object.

Mon Nov 27 14:36:59 GMT 2000 Olly Betts

        * OmError class now optionally stores an errno value.

Mon Nov 27 13:04:18 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Quartztest builds its test databases in a subdirectory, which
          is now in .cvsignore, so we shouldn't get cvs complaining about
          so many unknown files any more.

Mon Nov 27 12:53:16 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Another TODO item.

Mon Nov 27 12:15:53 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Added a couple of new items to the todo list.

Fri Nov 24 19:23:56 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Quartztests now deletes all old tables, so that database formats
          don't cause problems.

Fri Nov 24 19:03:59 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Added std:: prefix to lots of strings which didn't have it.
          I've probably added some where they shouldn't be: there were rather
          a lot of cases of this.

Fri Nov 24 18:27:06 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Major bug fix!  When removing elements, matcher was performing
          nth_element() on the first element to be thrown away, rather than
          the lowest element to keep.  This meant that, after throwing away
          low scoring items, items.back() was a random item rather than the
          lowest scoring item.  This caused the min weight for getting into
          the mset to go up faster than it should have done, and generally
          broke everything.

          It will be interesting to compare evaluation measures before and
          after this fix.

Fri Nov 24 15:34:17 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

        * Declare this to be version 0.4.1

Generated by dwww version 1.15 on Sun Jun 16 21:37:14 CEST 2024.