Daniel Ruoso

NAME

Sedna - Driver to connect on the Sedna XML database

SYNOPSIS

  use Sedna;
  my $conn = Sedna->connect($url,$dbname,$login,$pass);
  $conn->execute("for $x in collection('my-collection') return $x");
  while ($conn->next) {
    my ($buf, $xml);
    while ($conn->getData($buf, 512)) {
      $xml .= $buf;
    }
    say $xml;
  }

OVERVIEW

Sedna is a XML database and you interact with it using XQuery. This driver is a direct mapping of the C driver available in the Sedna distribution, but the code is brought here since they only provide a static build of the library.

This module will croak on failures, so error handling should be implemented in terms of eval.

METHODS

Sedna->connect($url, $dbname, $login, $password)

This method is used to stablish a new connection.

$conn->setConnectionAttr(%options)

This method can be used to set various connection attribute parameters. This method is a convenience method for each of the setConnectionAttr_* methods. Note that you should use the Sedna constants when you send the values for that attributes, even if the attribute looks simply as a boolean value.

$conn->getConnectionAttr(@options)

Returns a hash with the values for all the requested options. This is just a convenience method for each of the getConnectionAttr_* methods.

$conn->setConnectionAttr_AUTOCOMMIT($value)
$conn->getConnectionAttr_AUTOCOMMIT( )

Accessors for the autocommit setting for this connection. The possible values for this attribute are SEDNA_AUTOCOMMIT_ON and SEDNA_AUTOCOMMIT_OFF.

$conn->setConnectionAttr_SESSION_DIRECTORY($dir)
$conn->getConnectionAttr_SESSION_DIRECTORY( )

This attribute defines the local directory to be used as a base path for LOAD statements.

$conn->setConnectionAttr_DEBUG($value)
$conn->getConnectionAttr_DEBUG( )

This enables or disable debug messages of the driver. Possible values are SEDNA_DEBUG_ON and SEDNA_DEBUG_OFF.

$conn->setConnectionAttr_CONCURRENCY_TYPE($value)
$conn->getConnectionAttr_CONCURRENCY_TYPE( )

This define the nivel of concurrency control applied to this specific transaction. One of: SEDNA_READONLY_TRANSACTION and SEDNA_UPDATE_TRANSACTION.

$conn->setConnectionAttr_QUERY_EXEC_TIMEOUT($timeout)
$conn->getConnectionAttr_QUERY_EXEC_TIMEOUT( )

This defines the number of seconds to wait for an execution.

$conn->setConnectionAttr_MAX_RESULT_SIZE($size)
$conn->getConnectionAttr_MAX_RESULT_SIZE( )

This controls how much data is allowed to be returned by the server in bytes.

$conn->setConnectionAttr_LOG_AMMOUNT($value)
$conn->getConnectionAttr_LOG_AMMOUNT( )

This control how much log the transaction will produce. Values are SEDNA_LOG_FULL and SEDNA_LOG_LESS.

$conn->begin( )
$conn->commit( )
$conn->rollback( )

This three methods implement the transaction control.

$conn->connectionStatus( )

Returns the current connection status.

$conn->transactionStatus( )

Returns the current transaction status.

$conn->execute($query)

Sends the given query to the server and waits (blocking) for its return.

$conn->executeLong($file)

Sends the query stored in the given file and waits (blockign) for its return.

$conn->next( )

Returns true if there is another value available, and advance the cursor.

$conn->getData($buf, $len)

Works like the read function, storing up to the requested length into the scalar buffer.

$conn->loadData($xml, $doc, $coll)

Send the xml string to the server for storing using the given document id and optionally storing in a collection.

$conn->endLoadData( )

Send to the server the notice that you finished sending the data.

SEE ALSO

The development of the bindings is hosted at http://github.com/ruoso/sedna. It was based on the quick start guide at http://www.modis.ispras.ru/sedna/c-samples.html.

AUTHOR

Daniel Ruoso <daniel@ruoso.com>

COPYRIGHT AND LICENSE

Copyright (C) 2010 by Daniel Ruoso

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.10.0 or, at your option, any later version of Perl 5 you may have available.

The code for the C driver is embeded into this distribution and is subject to the Apache License.