Berkeley DB XML 2.2.13 Change Log

Changes in BDB XML 2.2.13
Changes in BDB XML 2.2.8

Changes since Release 2.2.8 are described here. A full list of all changes since BDB XML 2.1.8 is also available below.

It recommended that all users move to this release. Also see the documentation included in your download package or on our website .

Changes in BDB XML 2.2.13

Upgrade Requirements

None, relative to BDB XML 2.2.8, but because of the issue in [#13820] (see below) it is recommended that any containers that were:

  1. used with BDB XML 2.2.8, and

  2. are using node indices (DBXML_INDEX_NODES), and

  3. have been modified using either XmlModify or XmlContainer::updateDocument().

be reindexed. This can be achieved using either dbxml_dump followed by dbxml_load, or the in-place dbxml shell command, "reindexContainer."

New Features

None.

General API Changes

None.

Java-specific API changes

  1. Added XmlDocument.getContentAsInputStream() to Java API to enable use of a java.io.InputStream object for document output [#13701]

  2. Eliminated default constructors for Java objects [#13640]

General Functionality Changes

  1. Fixed a bug where variables declared at global scope in an XQuery expression would fail with a null pointer reference [#13588]

  2. Fixed bug in node storage containers where concurrent applications could receive a deadlock exception that was ignored, resulting in an assertion failure or bad pointer reference [#13597]

  3. Support for CDS now requires setting of the DB_CDB_ALLDB flag if the DB_INIT_CDB flag is set in a DB environment. This is because BDB XML modifications affect more than one DB database. This may affect existing applications, which will need to change to set the DB_CDB_ALLDB flag [#13568]

  4. Fixed a bug where a query using descendant-or-self() would return all named elements that follow the target node in document order, rather than just returning descendants [#13618]

  5. Changed XmlException to DOCUMENT_NOT_FOUND when calling XmlContainer::updateDocument() for a document that does not exist. Previously, it would throw with the code, DATABASE_ERROR and errno, DB_NOTFOUND [#13691]

  6. Fixed some problems when DbTxn and XmlTransaction were used together [#13679]

  7. Fixed a bug where, if Xerces is initialized separately from BDB XML, and it outlives the last XmlManager, it is possible for it to contain a reference to deallocated memory [#13722]

  8. Fixed a bug where adding and then deleting an index on an empty container caused an exception [#13724]

  9. Fixed problem where an open of an existing container with a non-default page size using DB_CREATE would throw an exception from Berkeley DB with the message "Different pagesize specified on existent file" and errno EINVAL [#13768]

  10. Fixed a bug where a crash could occur in the function, NsWriter::~NsWriter(). The problem was calling pop_back() on an empty STL vector [#13826]

  11. Fixed a bug where the first result could be left out of query results. Certain ueries using the descendant axis are most vulnerable [#13816]

  12. Fixed a bug where index entries could be mistakenly removed following a document update (via XmlModify or XmlContainer::updateDocument) [#13820]

  13. Fixed XmlManager::reindexContainer(), which was introduced in BDB XML 2.2.8 to work correctly. Previously, the index type would change, but the entries created would not [#13850]

  14. Fixed a bug where some node indices on attributes failed to be optimized, resulting in slower than expected queries. This only affects containers with node indices enabled [#13642]

  15. Fixed a bug that occurred when a user-defined function was called from more than one place in the query, and the function used either fn:collection() or fn:doc(). This happened because a query plan was generated for the user-defined function body more than once - with the last generation replacing the former. The two query plans are now combined to make the correct query plan. [#13639]

PHP-Specific Functionality Changes

  1. Added a global declaration of the XmlIndexLookup class that was missing from php_dbxml.cpp. This resulted in undefined references to this class that look like:

    undefined symbol: 
    php_dbxml_XmlIndexLookup_ce

Utility Changes

  1. Added a "time" sub-command to the dbxml shell utility [#13571]

Configuration, Documentation, Portability and Build Changes

  1. Added support for building with Microsoft's Visual Studio 2005 [#13491]

  2. Changed Windows debug information to "Program Database" consistently. This means the /Zi flag is used rather than /Z7 [#13737]

  3. Changed debug .pdb filename for Pathan from PathanD.pdb to PathanD_7.1.pdb [#13737]

  4. Fixed incorrect documentation regarding use of DB_DEGREE_2 in container create/open flags. The correct flag to be documented is DB_DIRTY_READ, which will be DB_READ_UNCOMMITTED in future releases that bundle DB 4.4 or higher [#13592]

  5. Example code in the Getting Started Guide documentation was reviewed and updated to be correct [#13602]

  6. The Getting Started Guide documentation was corrected where it erroneously stated that the XQuery expression "/Node1/Node2/Node3" would only return the first Node3 element, when it would really return all matching elements [#13604]

Changes in BDB XML 2.2.8

Upgrade Requirements

  1. Changed database format from BDB XML 2.1.8 to provide better Berkeley DB Btree page fill factor. Users must read documentation on container upgrade before performing an upgrade, or there is risk of data loss [#12947]

New Features

  1. Add XmlManager::existsContainer(), used to check for existence of a container in an efficient, non-destructive, non-intrusive manner [#11018]

  2. Implement support for "fn:doc-available()" Xquery function and default collections [#12762]

  3. Add XmlIndexLookup class to perform lookup operations, including equality, range lookups, and controlling the sort order of results (forward and reverse) [#12556]

  4. Version 2.7 of the Xerces library is now used [#13177]

  5. XQuery implementation has been upgraded to support the April, 2005 draft specification

General API Changes

  1. Add XmlIndexLookup class to perform lookup operations, including equality, range lookups, and controlling the sort order of results (forward and reverse) [#12556]

  2. Fix a bug where XmlResults::hasNext() and XmlResults::peek()could result in uncatchable exceptions with Lazy results [#13053]

  3. Added XmlQueryContext get/setVariableValue variant that takes XmlResults to allow sequence variables [#13060]

  4. Add XmlManager::reindexContainer() to allow an application to change the index type between node-level and document-level [#12819]

  5. Add XmlManager::get/setDefaultSequenceIncrement() interfaces to allow control over the cache size of the DbSequence object used to allocate document ids [#13099]

  6. Add XmlValue::BINARY as a valid XmlValue type. Add XmlValue::isBinary() interfaces to support the new type [#13221]

  7. Add support for the DB_TXN_NOT_DURABLE flag when creating and opening an XmlContainer [#13263]

  8. AddXmlManager::openContainer() method that takes XmlContainerType and mode arguments [#13285]

  9. AddXmlContainer::getIndexNodes() to indicate if the container has node-level indices or not

General Functionality Changes

  1. Modify internal data structures so that fewer lockers are required when running without transactions. This eliminates many problems that appear to be locker "leaks."[#12104]

  2. Implement April 2005 drafts of XQuery 1.0 and XPath 2.0

  3. Implement numerous query optimizations that should increase the query speed on all storage formats. This includes support for node-level indices specified using DBXML_INDEX_NODES [#12615]

  4. Fix a bug so that unique indices will find constraint violations within a single document and between documents in a container[#12838]

  5. Fix a bug where index database creation could conflict with other updates [#12839]

  6. Fix a bug in QueryPlanHolder that could cause a segment fault [#13069]

  7. Fix a bug during container open where the containers page size is different from the XmlManagers default page size [#13260]

Java-specific Functionality Changes

  1. Change path to example package from com.sleepycat.dbxml.examples.gettingStarted to dbxml.gettingStarted [#12108]

  2. Fix a bug so that valid DatabaseException objects are now created for all XmlExceptions of type DATABASE_ERROR [#12962]

  3. Fix a bug so that XmlDocument.getMetaData() will correctly return binary metadata [#13193]

  4. Fix a bug in XmlInputStream so that other classes can now be derived from this class [#13289]

Perl-specific Functionality Changes

  1. Compiler information from configure is now used to set the compiler in the Perl build [#12491]

Python-specific Functionality Changes

  1. Add pre-compiled Python binaries (2.4) to the Windows binary installer

  2. Ship copy of the pybsddb project for convenience and ease of build

Utility Changes

  1. Fix a bug in dbxml shell so that if h flag is not specified an attempt is made to join an environment in the current directory[#12993]

  2. Add support for new XmlIndexLookup object in the dbxml shell's commands [#12556]

Configuration, Documentation, Portability and Build Changes

  1. Add a version check to insure that languages such as Perl, Python, and PHP use a compatible version of Berkeley DB [#12681]

  2. Change default in buildall.sh script to build thread support for Xerces platform code [#12784]

  3. Add documentation for the c flag in dbxml shell [#12848]

  4. Add documentation for all DatabaseConfig methods that are used byXmlContainerConfig that extends DatabaseConfig [#13375]

  5. Add support for Berkeley DB 4.4