Berkeley DB XML 2.1.7 & 2.1.8 Change Log

Upgrade Requirements
New Features
API Changes
General Functionality Changes
Utility Changes
Java-specific Functionality Changes
Python-specific Functionality Changes
Perl-specific Functionality Changes
Tcl-specific Functionality Changes
Configuration, Documentation, Portability and Build Changes

Upgrade Requirements

  1. The database format has changed in order to fix a platform portability problem. To upgrade your DB XML containers to 2.1.8, please follow the steps described in Upgrading Berkeley DB XML Applications to 2.1 .

  2. DB XML 2.0 applications will need to be recompiled and relinked using the DB XML 2.1 libraries.

  3. DB XML 2.1.8 is a patch release for DB XML 2.1.7.

New Features

  1. Add the Perl API.

  2. Add Windows binaries and installer.

  3. A number of enhancements to the dbxml command line shell utility, including renaming it from "dbxml_shell" to "dbxml"

  4. Add an "Introducing Berkeley DB XML" document to help newcomers quickly get started using the product.

API Changes

  1. Add XmlContainer::{add,remove}Alias() to allow applications to create aliases for containers for use in XQuery expressions. [#11715]

  2. Add XmlContainer::getAllDocuments() method to return all documents in a container.

  3. Add XmlContainer::getNumDocuments() method to return the number of documents in a container.

  4. Implement a functioning XmlManager::upgradeContainer() interface to upgrade containers from 2.0.9 to 2.1.8.

  5. Change the default Base URI to "dbxml:" (it was "dbxml:/"). [#11715]

  6. Change resolution of "dbxml:" URIs to treat a leading slash ("dbxml:/path" or "dbxml:C:/") as an absolute path. Previously, all paths were treated as relative inside an XQuery expression. [#11715]

General Functionality Changes

  1. Fix a performance problem with Pathan StringPool objects when returning large data sets. [#12532]

  2. Fix a bug where an entity in an attribute value was not being expanded during document serialization if a child node had been added to that element via direct DOM manipulation or XmlModify. [#12489]

  3. Fix a bug where a DOM assertion failure would occur when asking for a specific item from a DOM nodelist. [#12481]

  4. Change all C++ objects so that they now have default constructors to make it easier to use them as class members. If these uninitialized default objects are used an exception will be thrown.

  5. Fix a bug where removal of metadata in a document retrieved using the DBXML_LAZY_DOCS flag would fail. [#12369]

  6. Fix a bug where a virtual collection created by XmlResolver::resolveCollection would block or potentially crash after return. [#12154]

  7. Fix a bug that caused containers to be non-portable across machine architectures (big vs little endian). Part of this fix causes index databases to be created on demand, resulting in significantly smaller initial container size. [#12196]

  8. Fix a bug where default settings could result in creating a container that stored whole documents, rather than the intended default of node storage. [#12193]

  9. Fix a bug where entities were not being escaped in attribute values returned in serialized query results from whole document storage. [#12193]

  10. Fix bugs in the DOMDocument::getEncoding() and DOMDocument::getActualEncoding() methods. [#11956]

  11. Fix bug where it was possible to remove the implicit document name index and remove the name metadata item from XmlDocument objects. [#11948]

  12. Fix a bug where substring indices on 3-character values would not not properly lower-case the values for storage. This resulted in failed queries where they should have succeeded. [#11945]

  13. Fix a memory leak in NsEventGenerator where removal of certain node storage documents leaked an 8k buffer. [#11857]

  14. Fix a bug where XmlContainer::updateDocument could not be called on a node storage document obtained from a query using XmlQueryContext::EvaluationType of Lazy. This is now legal. [#11838]

  15. Fix a bug in the query planner that could result in NULL query plan objects and cause the BDB XML application to crash. [#11831]

  16. Fix a bug where serialization of constructed DOM in queries was not properly tracking and expanding entities. [#11817]

  17. Change whole document storage to only validate documents on initial input, and not for querying or removal. This only affects containers for whole document storage that have validation enabled. [#11809]

  18. Change Pathan to not use Windows HeapAlloc, etc. for its MemoryManager implementation. It can cause memory shortages in certain queries. [#11806]

  19. Fix a bug where empty elements in node storage documents could result in using the wrong namespace prefixes for subsequent elements. [#11762]

  20. Fix a bug where XmlResults::previous would crash on an empty result set. Fixed several related XmlResults iterator issues. [#11756]

  21. Fix a bug where BDB XML didn't allow a query to operate directly against XmlInputStream in an XmlDocument. [#11755]

  22. Fix a bug where BDB XML could crash on queries that asked for text of attribute notes (for example, /foo/@attr/text()). [#11717]

  23. Fix a bug where the isSpecified() state was not being tracked properly for attributes. This would appear when using the DOM or when serializing elements with unspecified attributes. [#11686]

  24. Fix a bug in the database version checking so that it runs before any other operations and correctly reports database version mismatch errors on BDB XML 1.x version containers. [#11619]

Utility Changes

  1. Change the name of the dbxml_shell utility to be simply dbxml. [#12226]

  2. Change dbxml shell command names to be more obvious. Enhance dbxml shell help and usage messages. Compatibility with 2.0.9 command names is maintained where possible. [#11610]

  3. Change the argument flags to the utility commands so that they are consistent. Some utility command flags will have been modified from 2.0.9.

Java-specific Functionality Changes

  1. Fix XmlContainer.putDocument() methods to return Stringnames of new documents. [#12006]

  2. Java interfaces are defined to only throw XmlException. Implement XmlException.getDatabaseException() as documented. [#12377]

Python-specific Functionality Changes

  1. Fix a bug where the default container type was not NodeContainer. [#11625]

  2. Fix a bug where underlying XmlContainer objects created by XmlManager.createContainer() were not getting deleted correctly. [#11627]

Perl-specific Functionality Changes

  1. Fix a problem where a crash could occur if an object created by an XmlManager outlived the XmlManager itself (no SR #).

Tcl-specific Functionality Changes

  1. Fix a bug where the default container type was not NodeContainer. [#11625]

  2. Fix a bug where underlying XmlContainer objects created by XmlManager.createContainer() were not getting deleted correctly. [#11627]

Configuration, Documentation, Portability and Build Changes

  1. Fix a bug that caused gcc 4.0 builds to fail, where NsXercesDom functions used an incorrect virtual function table because of object confusion. [#12527]

  2. Fix a bug in the simpleAdd.cpp example where it was not setting DBXML_GEN_NAME on putDocument calls. [#11796]

  3. Add configuration and build support for native compilers on HP-UX (aCC) and AIX (xlC_r). [#11777]

  4. Add build support for the Cygwin platform on Windows.

  5. Add configuration support for the Fedora Core 3 platform. [#11650]

  6. Add configuration support so that on Unix platforms the configure script will use its parameters to create setup.py for the Python build. [#11541]

  7. Add the Perl API.

  8. The destination for Windows build artifacts, including libraries, executables, JAR files, and header files has been changed. They are now placed in the directories, "bin," "lib," "include," and "jar" off of the top-level installation directory.

  9. Add Windows binaries and installer.

  10. Add a number of enhancements to the dbxml command line shell utility.

  11. Add an "Introducing Berkeley DB XML" document to help newcomers quickly get started using the product.