BDB
view release on metacpan or search on metacpan
$int = $db->set_lorder (int lorder)
$int = $db->set_bt_minkey (U32 minkey)
$int = $db->set_re_delim (int delim)
$int = $db->set_re_pad (int re_pad)
$int = $db->set_re_source (char *source)
$int = $db->set_re_len (U32 re_len)
$int = $db->set_h_ffactor (U32 h_ffactor)
$int = $db->set_h_nelem (U32 h_nelem)
$int = $db->set_q_extentsize (U32 extentsize)
$dbc = $db->cursor (DB_TXN_ornull *txn = 0, U32 flags = 0)
flags: READ_COMMITTED READ_UNCOMMITTED WRITECURSOR TXN_SNAPSHOT
$seq = $db->sequence (U32 flags = 0)
=head3 Example:
my $db = db_create $env;
db_open $db, undef, "table", undef, BDB::BTREE, BDB::AUTO_COMMIT | BDB::CREATE | BDB::READ_UNCOMMITTED, 0600;
for (1..1000) {
db_put $db, undef, "key $_", "data $_";
if (txn)
txn->abort (txn);
$int = $txn->set_timeout (NV timeout_seconds, U32 flags = SET_TXN_TIMEOUT)
flags: SET_LOCK_TIMEOUT SET_TXN_TIMEOUT
$bool = $txn->failed
# see db_txn_finish documentation, above
=head2 DBC/cursor methods
Methods available on DBC/$dbc handles:
DESTROY (DBC_ornull *dbc)
CODE:
if (dbc)
dbc->c_close (dbc);
$int = $cursor->set_priority ($priority = PRIORITY_*) (v4.6)
=head3 Example:
my $c = $db->cursor;
for (;;) {
db_c_get $c, my $key, my $data, BDB::NEXT;
warn "<$!,$key,$data>";
last if $!;
}
db_c_close $c;
#endif
typedef char *bdb_filename;
static SV *prepare_cb;
static HV
*bdb_stash,
*bdb_env_stash,
*bdb_txn_stash,
*bdb_cursor_stash,
*bdb_db_stash,
*bdb_sequence_stash;
#if DBVER >= 406
# define c_close close
# define c_count count
# define c_del del
# define c_dup dup
# define c_get get
# define c_pget pget
# endif
#if DBVER >= 408
const_iv (LOGVERSION_LATCHING)
#endif
#endif
};
bdb_stash = gv_stashpv ("BDB" , 1);
bdb_env_stash = gv_stashpv ("BDB::Env" , 1);
bdb_txn_stash = gv_stashpv ("BDB::Txn" , 1);
bdb_cursor_stash = gv_stashpv ("BDB::Cursor" , 1);
bdb_db_stash = gv_stashpv ("BDB::Db" , 1);
bdb_sequence_stash = gv_stashpv ("BDB::Sequence", 1);
for (civ = const_iv + sizeof (const_iv) / sizeof (const_iv [0]); civ > const_iv; civ--)
newCONSTSUB (bdb_stash, (char *)civ[-1].name, newSViv (civ[-1].iv));
prepare_cb = &PL_sv_undef;
{
/* we currently only allow version, minor-version and patchlevel to go up to 255 */
OUTPUT:
RETVAL
int set_q_extentsize (DB *db, U32 extentsize)
CODE:
RETVAL = db->set_q_extentsize (db, extentsize);
OUTPUT:
RETVAL
DBC *
cursor (DB *db, DB_TXN_ornull *txn = 0, U32 flags = 0)
CODE:
errno = db->cursor (db, txn, &RETVAL, flags);
if (errno)
croak ("DB->cursor: %s", db_strerror (errno));
OUTPUT:
RETVAL
#if DBVER >= 403
DB_SEQUENCE *
sequence (DB *db, U32 flags = 0)
CODE:
{
errno = db_sequence_create (&RETVAL, db, flags);
- fix prototypes of (void) functions.
1.43 Sun Jan 13 11:52:49 CET 2008
- differentiate between nuked and undef objects, so as to
not throw an exception when destroying closed handles.
1.42 Tue Dec 25 15:22:50 CET 2007
- do not automatically call set_thread_count.
1.41 Sat Dec 22 08:32:41 CET 2007
- add cursor->set_priority.
- minor optimisations and checks.
- port to microsoft pseudo-C again.
1.4 Wed Dec 12 02:20:39 CET 2007
- new globals BDB::VERSION and ..VERSION_STRING.
- add db_upgrade.
- do not die in DESTROY after explicit db_close and similar
operations.
1.3 Fri Dec 7 14:36:25 CET 2007
$int = $db->set_lorder (int lorder)
$int = $db->set_bt_minkey (U32 minkey)
$int = $db->set_re_delim (int delim)
$int = $db->set_re_pad (int re_pad)
$int = $db->set_re_source (char *source)
$int = $db->set_re_len (U32 re_len)
$int = $db->set_h_ffactor (U32 h_ffactor)
$int = $db->set_h_nelem (U32 h_nelem)
$int = $db->set_q_extentsize (U32 extentsize)
$dbc = $db->cursor (DB_TXN_ornull *txn = 0, U32 flags = 0)
flags: READ_COMMITTED READ_UNCOMMITTED WRITECURSOR TXN_SNAPSHOT
$seq = $db->sequence (U32 flags = 0)
Example:
my $db = db_create $env;
db_open $db, undef, "table", undef, BDB::BTREE, BDB::AUTO_COMMIT | BDB::CREATE | BDB::READ_UNCOMMITTED, 0600;
for (1..1000) {
db_put $db, undef, "key $_", "data $_";
CODE:
if (txn)
txn->abort (txn);
$int = $txn->set_timeout (NV timeout_seconds, U32 flags = SET_TXN_TIMEOUT)
flags: SET_LOCK_TIMEOUT SET_TXN_TIMEOUT
$bool = $txn->failed
# see db_txn_finish documentation, above
DBC/cursor methods
Methods available on DBC/$dbc handles:
DESTROY (DBC_ornull *dbc)
CODE:
if (dbc)
dbc->c_close (dbc);
$int = $cursor->set_priority ($priority = PRIORITY_*) (v4.6)
Example:
my $c = $db->cursor;
for (;;) {
db_c_get $c, my $key, my $data, BDB::NEXT;
warn "<$!,$key,$data>";
last if $!;
}
db_c_close $c;
DB_SEQUENCE/sequence methods
eg/basic_operations view on Meta::CPAN
$env->set_flags (BDB::AUTO_COMMIT | BDB::TXN_NOSYNC, 1);
$db = db_create $env;
db_open $db, undef, "table", undef, BDB::BTREE, BDB::AUTO_COMMIT | BDB::CREATE | BDB::READ_UNCOMMITTED, 0600;
for (1..1000) {
db_put $db, undef, "key[$_]", "data[$_]";
db_key_range $db, undef, "key[$_]", my $keyrange; my ($lt, $eq, $gt) = @$keyrange;
}
my $c = $db->cursor;
my @del;
for (;;) {
db_c_get $c, my $key, my $data, BDB::NEXT;
warn "<$!,$key,$data>";
last if $!;
push @del, $key if rand > 0.9;
}
{
DB_SEQ
$var = sizeof (IV) > 4 ? SvIV ($arg) : SvNV ($arg);
DB_ENV
SvPTR ($var, $arg, DB_ENV *, bdb_env_stash, BDB::Env, 0);
DB_TXN
SvPTR ($var, $arg, DB_TXN *, bdb_txn_stash, BDB::Txn, 0);
DBC
SvPTR ($var, $arg, DBC *, bdb_cursor_stash, BDB::Cursor, 0);
DB
SvPTR ($var, $arg, DB *, bdb_db_stash, BDB::Db, 0);
DB_SEQUENCE
SvPTR ($var, $arg, DB_SEQUENCE *, bdb_sequence_stash, BDB::Sequence, 0);
DB_ENV_ornull
SvPTR ($var, $arg, DB_ENV *, bdb_env_stash, BDB::Env, 1);
DB_TXN_ornull
SvPTR ($var, $arg, DB_TXN *, bdb_txn_stash, BDB::Txn, 1);
DBC_ornull
SvPTR ($var, $arg, DBC *, bdb_cursor_stash, BDB::Cursor, 1);
DB_ornull
SvPTR ($var, $arg, DB *, bdb_db_stash, BDB::Db, 1);
DB_SEQUENCE_ornull
SvPTR ($var, $arg, DB_SEQUENCE *, bdb_sequence_stash, BDB::Sequence, 1);
DB_ENV_ornuked
SvPTR ($var, $arg, DB_ENV *, bdb_env_stash, BDB::Env, 2);
DB_TXN_ornuked
SvPTR ($var, $arg, DB_TXN *, bdb_txn_stash, BDB::Txn, 2);
DBC_ornuked
SvPTR ($var, $arg, DBC *, bdb_cursor_stash, BDB::Cursor, 2);
DB_ornuked
SvPTR ($var, $arg, DB *, bdb_db_stash, BDB::Db, 2);
DB_SEQUENCE_ornuked
SvPTR ($var, $arg, DB_SEQUENCE *, bdb_sequence_stash, BDB::Sequence, 2);
OUTPUT
DB_ENV
$arg = newSVptr ($var, bdb_env_stash);
DB_TXN
$arg = newSVptr ($var, bdb_txn_stash);
DBC
$arg = newSVptr ($var, bdb_cursor_stash);
DB
$arg = newSVptr ($var, bdb_db_stash);
DB_SEQUENCE
$arg = newSVptr ($var, bdb_sequence_stash);
( run in 0.301 second using v1.01-cache-2.11-cpan-4d50c553e7e )