XmlManager::openContainer

#include <DbXml.hpp>

XmlContainer XmlManager::openContainer(const std::string &name)

XmlContainer XmlManager::openContainer(
    XmlTransaction &txn, const std::string &name)

XmlContainer XmlManager::openContainer(
    const std::string &name, const XmlContainerConfig &config)

XmlContainer XmlManager::openContainer(
    XmlTransaction &txn, const std::string &name, 
    const XmlContainerConfig &config)

XmlContainer XmlManager::openContainer(
    const std::string &name, const XmlContainerConfig &flags,
    XmlContainer::ContainerType type, int mode)

XmlContainer XmlManager::openContainer(
    XmlTransaction &txn, const std::string &name,
    const XmlContainerConfig &flags, XmlContainer::ContainerType type, 
    int mode)

Opens a container, returning a handle to an XmlContainer object. Unless the config or flags parameter is set to true using XmlContainerConfig::setAllowCreate, the container must already exist at the time that this method is called or an exception is thrown.

To create and open a new container, either use XmlManager::createContainer, or set XmlContainerConfig::setAllowCreate to true for the flags or config parameter on this method.

Containers always remain open until the last handle referencing the container is destroyed.

The name provided here must be unique for the environment or an exception is thrown.

There are two basic forms of this method: one that accepts an XmlContainerConfig object, and a simpler form that opens a default container.

Opening a default container

#include <DbXml.hpp>

XmlContainer XmlManager::openContainer(const std::string &name)

XmlContainer XmlManager::openContainer(
    XmlTransaction &txn, const std::string &name) 

Opens the container, using only default values for all configuration options. Unless XmlContainerConfig::setAllowCreate was set to true and assigned using XmlManager::setDefaultContainerConfig, the container must have previously been created or an exception is thrown.

Parameters are:

txn

The XmlTransaction object to use for this container open.

name

The container's name. The container is located relative to the underlying environment's home directory (see the XmlManager class description for more information) unless an absolute path is used for the name; in that case the container is exists in the location identified by the path.

Opening a container using an XmlContainerConfig object

#include <DbXml.hpp>

XmlContainer XmlManager::openContainer(
    const std::string &name, const XmlContainerConfig &config)

XmlContainer XmlManager::openContainer(
    XmlTransaction &txn, const std::string &name, 
    const XmlContainerConfig &config)

XmlContainer XmlManager::openContainer(
    const std::string &name, const XmlContainerConfig &flags,
    XmlContainer::ContainerType type, int mode)

XmlContainer XmlManager::openContainer(
    XmlTransaction &txn, const std::string &name,
    const XmlContainerConfig &flags, XmlContainer::ContainerType type, 
    int mode)

Opens a container using the supplied XmlContainerConfig object. If you are creating the container with this method, you can provide a container type and a mode value.

Unless XmlContainerConfig::setAllowCreate was set to true and assigned using either the flags parameter or the XmlManager::setDefaultContainerConfig method, the container must have previously been created or an exception is thrown.

Parameters are:

txn

The XmlTransaction object to use for this container open.

name

The container's name. The container is located relative to the underlying environment's home directory (see the XmlManager class description for more information) unless an absolute path is used for the name; in that case the container is exists in the location identified by the path.

type

The type of container to create. This parameter is relevant only if you have set XmlContainerConfig::setAllowCreate to true.

The container type must be one of the following values:

  • XmlContainer::NodeContainer

    Documents are broken down into their component nodes, and these nodes are stored individually in the container. This is the preferred container storage type.

  • XmlContainer::WholedocContainer

    Documents are stored intact; all white space and formatting is preserved.

flags

This parameter must be set to 0 or by bitwise inclusively OR'ing together one or more of the following values:

  • DB_CREATE

    If the container does not currently exist, create it.

  • DB_READ_UNCOMMITTED

    This operation will support degree 1 isolation; that is, read operations may return data that has been modified by other transactions but which has not yet been committed. Silently ignored if the DB_READ_UNCOMMITTED flag was not specified when the underlying container was opened.

  • DB_EXCL

    Return an error if the container already exists. This flag is only meaningful when specified with the DB_CREATE flag.

  • DB_MULTIVERSION

    Open the database with support for multiversion concurrency control. This will cause updates to the container to follow a copy-on-write protocol, which is required to support snapshot isolation. This flag requires that the container be transactionally protected during its open.

  • DB_NOMMAP

    Do not map this container into process memory (see the DbEnv::set_mp_mmapsize() method for further information).

  • DB_RDONLY

    Open the container for reading only. Any attempt to modify items in the container will fail, regardless of the actual permissions of any underlying files.

  • DB_THREAD

    Cause the container handle to be free-threaded; that is, concurrently usable by multiple threads in the address space.

  • DBXML_CHKSUM

    Do checksum verification of pages read into the cache from the backing filestore. Berkeley DB XML uses the SHA1 Secure Hash Algorithm if encryption is configured and a general hash algorithm if it is not.

  • DBXML_ENCRYPT

    Encrypt the database using the cryptographic password specified to DbEnv::set_encrypt().

  • DB_TXN_NOT_DURABLE

    If set, Berkeley DB XML will not write log records for this database. This means that updates of this database exhibit the ACI (atomicity, consistency, and isolation) properties, but not D (durability); that is, database integrity will be maintained, but if the application or system fails, integrity will not persist. The database file must be verified and/or restored from backup after a failure.

  • DBXML_INDEX_NODES

    Causes the indexer to create index targets that reference nodes rather than documents. This allows index lookups during query processing to more efficiently find target nodes and avoid walking the document tree. It can apply to both container types, and is the default for containers of type XmlContainer::NodeContainer.

  • DBXML_NO_INDEX_NODES

    Causes the indexer to create index targets that reference documents rather than nodes. This can be more desirable for simple queries that only need to return documents and do relatively little navigation during querying. It can apply to both container types, and is the default for containers of type XmlContainer::WholedocContainer.

  • DBXML_STATISTICS

    Causes the container to be created to include structural statistics information, which is very useful for cost based query optimisation. Containers created with these statistics will take longer to load and update, since the statistics must also be updated. This is the default.

  • DBXML_NO_STATISTICS

    Causes the container to be created without structural statistics information – by default structural statistics are created.

  • DBXML_TRANSACTIONAL

    Cause the container to support transactions. If this flag is set, an XmlTransaction object may be used with any method that supports transactional protection. Also, if this flag is used, and if an XmlTransaction object is not provided to a method that modifies an XmlContainer or XmlDocument object, then auto commit is automatically used for the operation.

  • DBXML_ALLOW_VALIDATION

    When loading documents into the container, validate the XML if it refers to a DTD or XML Schema.

mode

On Windows systems, mode is always ignored.

Otherwise, this parameter is relevant only if you have set XmlContainerConfig::setAllowCreate to true.

On UNIX systems or in IEEE/ANSI Std 1003.1 (POSIX) environments, files are created with mode mode (as described in chmod(2)) and modified by the process' umask value at the time of creation (see umask(2)). Created files are owned by the process owner; the group ownership of created files is based on the system and directory defaults, and is not further specified by Berkeley DB. System shared memory segments created by are created with mode mode, unmodified by the process' umask value. If mode is 0, DB XML will use a default mode of readable and writable by both owner and group.

Errors

The XmlManager::openContainer method may fail and throw XmlException , encapsulating one of the following non-zero errors:

CONTAINER_NOT_FOUND

The container name that you provided does not exist, and you did not allow the container to be automatically created by setting XmlContainerConfig::setAllowCreate to true.

INVALID_VALUE

You provided an invalid value to the flags parameter.

Class

XmlManager

See Also

XmlManager Methods