diff options
author | jbj <devnull@localhost> | 2002-09-19 21:06:40 +0000 |
---|---|---|
committer | jbj <devnull@localhost> | 2002-09-19 21:06:40 +0000 |
commit | 2376437b8faec79eb8ccaa874f271d4ee69d276f (patch) | |
tree | fc29754122bfce5816757e4c77f781c52a4d75c4 /db | |
parent | 4a15060bcbf38c550f7dcc86ceff277854f9eecf (diff) | |
download | librpm-tizen-2376437b8faec79eb8ccaa874f271d4ee69d276f.tar.gz librpm-tizen-2376437b8faec79eb8ccaa874f271d4ee69d276f.tar.bz2 librpm-tizen-2376437b8faec79eb8ccaa874f271d4ee69d276f.zip |
Conflict resolved.
CVS patchset: 5722
CVS date: 2002/09/19 21:06:40
Diffstat (limited to 'db')
136 files changed, 2297 insertions, 2274 deletions
diff --git a/db/build_win32/db_cxx.h b/db/build_win32/db_cxx.h index 7c4967228..b816706b5 100644 --- a/db/build_win32/db_cxx.h +++ b/db/build_win32/db_cxx.h @@ -5,7 +5,7 @@ * Copyright (c) 1997-2002 * Sleepycat Software. All rights reserved. * - * Id: db_cxx.in,v 11.112 2002/08/08 23:44:43 mjc Exp + * Id: db_cxx.in,v 11.113 2002/08/23 13:02:27 mjc Exp */ #ifndef _DB_CXX_H_ @@ -516,7 +516,6 @@ public: static int _rep_send_intercept(DB_ENV *env, const DBT *cntrl, const DBT *data, int id, u_int32_t flags); - static void _destroy_check(const char *str, int isDbEnv); private: void cleanup(); diff --git a/db/cxx/cxx_db.cpp b/db/cxx/cxx_db.cpp index b52f96a08..d6d15a0bf 100644 --- a/db/cxx/cxx_db.cpp +++ b/db/cxx/cxx_db.cpp @@ -8,7 +8,7 @@ #include "db_config.h" #ifndef lint -static const char revid[] = "Id: cxx_db.cpp,v 11.69 2002/07/20 13:50:10 dda Exp "; +static const char revid[] = "Id: cxx_db.cpp,v 11.71 2002/08/26 22:13:36 mjc Exp "; #endif /* not lint */ #include <errno.h> @@ -105,13 +105,17 @@ Db::Db(DbEnv *env, u_int32_t flags) { if (env_ == 0) flags_ |= DB_CXX_PRIVATE_ENV; - initialize(); + + if ((construct_error_ = initialize()) != 0) + DB_ERROR("Db::Db", construct_error_, error_policy()); } -// Note: if the user has not closed, we call _destroy_check -// to warn against this non-safe programming practice. -// We can't close, because the environment may already -// be closed/destroyed. +// If the DB handle is still open, we close it. This is to make stack +// allocation of Db objects easier so that they are cleaned up in the error +// path. If the environment was closed prior to this, it may cause a trap, but +// an error message is generated during the environment close. Applications +// should call close explicitly in normal (non-exceptional) cases to check the +// return value. // Db::~Db() { @@ -119,16 +123,14 @@ Db::~Db() db = unwrap(this); if (db != NULL) { - DbEnv::_destroy_check("Db", 0); cleanup(); + (void)db->close(db, 0); } } // private method to initialize during constructor. // initialize must create a backing DB object, // and if that creates a new DB_ENV, it must be tied to a new DbEnv. -// If there is an error, construct_error_ is set; this is examined -// during open. // int Db::initialize() { @@ -144,10 +146,8 @@ int Db::initialize() // one is allocated by DB. // if ((ret = db_create(&db, cenv, - construct_flags_ & ~cxx_flags)) != 0) { - construct_error_ = ret; + construct_flags_ & ~cxx_flags)) != 0) return (ret); - } // Associate the DB with this object imp_ = wrap(db); @@ -188,7 +188,6 @@ void Db::cleanup() env_ = 0; } } - construct_error_ = 0; } // Return a tristate value corresponding to whether we should diff --git a/db/cxx/cxx_env.cpp b/db/cxx/cxx_env.cpp index 377b97361..63f665a2a 100644 --- a/db/cxx/cxx_env.cpp +++ b/db/cxx/cxx_env.cpp @@ -8,7 +8,7 @@ #include "db_config.h" #ifndef lint -static const char revid[] = "Id: cxx_env.cpp,v 11.86 2002/08/08 15:43:25 bostic Exp "; +static const char revid[] = "Id: cxx_env.cpp,v 11.88 2002/08/26 22:13:36 mjc Exp "; #endif /* not lint */ #include <errno.h> @@ -121,24 +121,6 @@ int _rep_send_intercept_c(DB_ENV *env, const DBT *cntrl, cntrl, data, id, flags)); } -// _destroy_check is called when there is a user error in a -// destructor, specifically when close has not been called for an -// object (even if it was never opened). If the DbEnv is being -// destroyed we cannot always use DbEnv::error_stream_, so we'll -// use cerr in that case. -// -void DbEnv::_destroy_check(const char *str, int isDbEnv) -{ - __DB_OSTREAMCLASS *out; - - out = error_stream_; - if (out == NULL || isDbEnv == 1) - out = &cerr; - - (*out) << "DbEnv::_destroy_check: open " << str << - " object destroyed\n"; -} - void DbEnv::_feedback_intercept(DB_ENV *env, int opcode, int pct) { if (env == 0) { @@ -242,10 +224,8 @@ DbEnv::DbEnv(u_int32_t flags) , pgout_callback_(0) , rep_send_callback_(0) { - int ret; - - if ((ret = initialize(0)) != 0) - DB_ERROR("DbEnv::DbEnv", ret, error_policy()); + if ((construct_error_ = initialize(0)) != 0) + DB_ERROR("DbEnv::DbEnv", construct_error_, error_policy()); } DbEnv::DbEnv(DB_ENV *env, u_int32_t flags) @@ -259,23 +239,22 @@ DbEnv::DbEnv(DB_ENV *env, u_int32_t flags) , pgout_callback_(0) , rep_send_callback_(0) { - int ret; - - if ((ret = initialize(env)) != 0) - DB_ERROR("DbEnv::DbEnv", ret, error_policy()); + if ((construct_error_ = initialize(env)) != 0) + DB_ERROR("DbEnv::DbEnv", construct_error_, error_policy()); } -// Note: if the user has not closed, we call _destroy_check -// to warn against this non-safe programming practice, -// and call close anyway. +// If the DB_ENV handle is still open, we close it. This is to make stack +// allocation of DbEnv objects easier so that they are cleaned up in the error +// path. Note that the C layer catches cases where handles are open in the +// environment at close time and reports an error. Applications should call +// close explicitly in normal (non-exceptional) cases to check the return +// value. // DbEnv::~DbEnv() { DB_ENV *env = unwrap(this); if (env != NULL) { - _destroy_check("DbEnv", 1); - cleanup(); (void)env->close(env, 0); } @@ -357,8 +336,7 @@ void *DbEnv::get_app_private() const // used internally during constructor // to associate an existing DB_ENV with this DbEnv, -// or create a new one. If there is an error, -// construct_error_ is set; this is examined during open. +// or create a new one. // int DbEnv::initialize(DB_ENV *env) { @@ -369,10 +347,8 @@ int DbEnv::initialize(DB_ENV *env) if (env == 0) { // Create a new DB_ENV environment. if ((ret = ::db_env_create(&env, - construct_flags_ & ~DB_CXX_NO_EXCEPTIONS)) != 0) { - construct_error_ = ret; + construct_flags_ & ~DB_CXX_NO_EXCEPTIONS)) != 0) return (ret); - } } imp_ = wrap(env); env->api1_internal = this; // for DB_ENV* to DbEnv* conversion diff --git a/db/dist/aclocal/libtool.ac b/db/dist/aclocal/libtool.ac index 8e764711c..e99faf15e 100644 --- a/db/dist/aclocal/libtool.ac +++ b/db/dist/aclocal/libtool.ac @@ -1606,9 +1606,17 @@ else # cross-compilation, but unfortunately the echo tests do not # yet detect zsh echo's removal of \ escapes. - #### Local change for Sleepycat's Berkeley DB [#5664] - # removed double quotes in the following line: - archive_cmds='$nonopt $(test x$module = xyes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib $libobjs $deplibs$linker_flags -install_name $rpath/$soname $verstring' + #### Local change for Sleepycat's Berkeley DB [#5664] [#6511] + case "$host_os" in + darwin[[12345]].*) + # removed double quotes in the following line: + archive_cmds='$nonopt $(test x$module = xyes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib $libobjs $deplibs$linker_flags -install_name $rpath/$soname $verstring' + ;; + *) # Darwin6.0 on (Mac OS/X Jaguar) + archive_cmds='$nonopt $allow_undefined_flag -o $lib $libobjs $deplibs$linker_flags -dynamiclib -install_name $rpath/$soname $verstring' + ;; + esac + #### End of changes for Sleepycat's Berkeley DB [#5664] [#6511] # We need to add '_' to the symbols in $export_symbols first #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols' diff --git a/db/dist/aclocal/tcl.ac b/db/dist/aclocal/tcl.ac index f1f97758c..7273044b5 100644 --- a/db/dist/aclocal/tcl.ac +++ b/db/dist/aclocal/tcl.ac @@ -1,4 +1,4 @@ -# Id: tcl.ac,v 11.13 2002/06/07 12:33:58 dda Exp +# Id: tcl.ac,v 11.14 2002/09/07 17:25:58 dda Exp # The SC_* macros in this file are from the unix/tcl.m4 files in the Tcl # 8.3.0 distribution, with some minor changes. For this reason, license @@ -102,7 +102,7 @@ AC_DEFUN(SC_LOAD_TCLCONFIG, [ # given by the Tcl spec are insufficient for our use. [#5779] # case "$host_os" in - aix4.[2-9].*) + aix4.[[2-9]].*) LIBTSO_LIBS="$LIBTSO_LIBS $TCL_LIB_SPEC $TCL_LIB_FLAG" LIBTSO_LIBS="$LIBTSO_LIBS -L$TCL_EXEC_PREFIX/lib -ltcl$TCL_VERSION";; aix*) diff --git a/db/dist/aclocal_java/ac_jni_include_dirs.ac b/db/dist/aclocal_java/ac_jni_include_dirs.ac index 0435b555b..e01f78c77 100644 --- a/db/dist/aclocal_java/ac_jni_include_dirs.ac +++ b/db/dist/aclocal_java/ac_jni_include_dirs.ac @@ -28,7 +28,7 @@ dnl Note: This macro can work with the autoconf M4 macros for Java programs. dnl This particular macro is not part of the original set of macros. dnl dnl @author Don Anderson <dda@sleepycat.com> -dnl @version Id: ac_jni_include_dirs.ac,v 1.7 2002/02/11 14:00:50 bostic Exp +dnl @version Id: ac_jni_include_dirs.ac,v 1.8 2002/09/04 21:27:30 dda Exp dnl AC_DEFUN(AC_JNI_INCLUDE_DIR,[ @@ -50,32 +50,42 @@ case "$host_os" in _JINC="$_JTOPDIR/Headers";; *) _JINC="$_JTOPDIR/include";; esac + +# If we find jni.h in /usr/include, then it's not a java-only tree, so +# don't add /usr/include or subdirectories to the list of includes. +# An extra -I/usr/include can foul things up with newer gcc's. if test -f "$_JINC/jni.h"; then - JNI_INCLUDE_DIRS="$JNI_INCLUDE_DIRS $_JINC" + if test "$_JINC" != "/usr/include"; then + JNI_INCLUDE_DIRS="$JNI_INCLUDE_DIRS $_JINC" + fi else _JTOPDIR=`echo "$_JTOPDIR" | sed -e 's:/[[^/]]*$::'` if test -f "$_JTOPDIR/include/jni.h"; then - JNI_INCLUDE_DIRS="$JNI_INCLUDE_DIRS $_JTOPDIR/include" + if test "$_JTOPDIR" != "/usr"; then + JNI_INCLUDE_DIRS="$JNI_INCLUDE_DIRS $_JTOPDIR/include" + fi else AC_MSG_ERROR([cannot find java include files]) fi fi # get the likely subdirectories for system specific java includes -case "$host_os" in -aix*) _JNI_INC_SUBDIRS="aix";; -bsdi*) _JNI_INC_SUBDIRS="bsdos";; -linux*) _JNI_INC_SUBDIRS="linux genunix";; -osf*) _JNI_INC_SUBDIRS="alpha";; -solaris*) _JNI_INC_SUBDIRS="solaris";; -*) _JNI_INC_SUBDIRS="genunix";; -esac +if test "$_JTOPDIR" != "/usr"; then + case "$host_os" in + aix*) _JNI_INC_SUBDIRS="aix";; + bsdi*) _JNI_INC_SUBDIRS="bsdos";; + linux*) _JNI_INC_SUBDIRS="linux genunix";; + osf*) _JNI_INC_SUBDIRS="alpha";; + solaris*) _JNI_INC_SUBDIRS="solaris";; + *) _JNI_INC_SUBDIRS="genunix";; + esac +fi # add any subdirectories that are present -for JINCSUBDIR in $_JNI_INC_SUBDIRS +for _JINCSUBDIR in $_JNI_INC_SUBDIRS do - if test -d "$_JTOPDIR/include/$JINCSUBDIR"; then - JNI_INCLUDE_DIRS="$JNI_INCLUDE_DIRS $_JTOPDIR/include/$JINCSUBDIR" + if test -d "$_JTOPDIR/include/$_JINCSUBDIR"; then + JNI_INCLUDE_DIRS="$JNI_INCLUDE_DIRS $_JTOPDIR/include/$_JINCSUBDIR" fi done ]) diff --git a/db/dist/buildrel b/db/dist/buildrel index bddb1d1ff..9b7ef87db 100644 --- a/db/dist/buildrel +++ b/db/dist/buildrel @@ -1,12 +1,12 @@ #!/bin/sh - -# Id: buildrel,v 1.34 2002/06/24 17:48:25 bostic Exp +# Id: buildrel,v 1.39 2002/09/06 14:30:31 bostic Exp # # Build the distribution archives. # # A set of commands intended to be cut and pasted into a csh window. # Development tree, release home. -setenv D /a/db +setenv D `pwd` # Update the release number. cd $D/dist @@ -48,8 +48,8 @@ cd $R/build_run && make prefix=`pwd`/BDB install # Clean up the tree. cd $R && rm -rf build_run docs_src -cd $R && rm -rf test/TODO test/upgrade -cd $R && rm -rf test_perf test_purify test_server test_thread test_vxworks +cd $R && rm -rf test/TODO test/upgrade test_perf test_purify +cd $R && rm -rf test_server test_thread test_vxworks test_xa # ACQUIRE ROOT PRIVILEGES cd $R && find . -type d | xargs chmod 775 @@ -73,11 +73,19 @@ chmod 444 $T # Create the non-crypto tree. setenv RNC "$R/../db-$VERSION.NC" -rm -rf $R/../__TMP && mkdir $R/../__TMP +rm -rf $RNC $R/../__TMP && mkdir $R/../__TMP cd $R/../__TMP && gzcat $T | tar xpf - && mv -i db-$VERSION $RNC cd $R && rm -rf $R/../__TMP cd $RNC/dist && sh s_crypto +# ACQUIRE ROOT PRIVILEGES +cd $RNC && find . -type d | xargs chmod 775 +cd $RNC && find . -type f | xargs chmod 444 +cd $RNC && chmod 664 build_win32/*.dsp +cd $RNC/dist && sh s_perm +chown -R 100.100 $RNC +# DISCARD ROOT PRIVILEGES + # Create the non-crypto tar archive release. setenv T "$R/../db-$VERSION.NC.tar.gz" cd $RNC/.. && tar cf - db-$VERSION.NC | gzip --best > $T diff --git a/db/dist/configure.ac b/db/dist/configure.ac index 8ff1ee715..6086149ea 100644 --- a/db/dist/configure.ac +++ b/db/dist/configure.ac @@ -1,4 +1,4 @@ -# Id: configure.ac,v 11.155 2002/07/12 18:56:44 bostic Exp +# Id: configure.ac,v 11.156 2002/09/04 13:51:17 bostic Exp # Process this file with autoconf to produce a configure script. PACKAGE=db @@ -495,20 +495,8 @@ if test "$db_cv_open_o_direct" = yes; then AH_TEMPLATE(HAVE_O_DIRECT, [Define to 1 if you have the O_DIRECT flag.]) fi -# You can't build C++ with big-file support on HP-UX, the include files -# are wrong. -largefile_ok=yes -case "$host_os" in -hpux*) - if test "$db_cv_cxx" = "yes"; then -AC_MSG_WARN([Large file and C++ API support are incompatible on HP-UX]) -AC_MSG_WARN([large file support has been turned off.]) - largefile_ok=no - fi;; -esac -if test "$largefile_ok" = yes; then - AC_SYS_LARGEFILE -fi +# Check for largefile support. +AC_SYS_LARGEFILE # Figure out how to create shared regions. # diff --git a/db/dist/pubdef.in b/db/dist/pubdef.in index 55fdae244..f42363022 100644 --- a/db/dist/pubdef.in +++ b/db/dist/pubdef.in @@ -55,7 +55,6 @@ DB_CONSUME D I J DB_CONSUME_WAIT D I J DB_CREATE D I J DB_CURRENT D I J -DB_CURRENT_PUT D * * DB_CXX_NO_EXCEPTIONS D I J DB_DBM_HSEARCH * I * DB_DBT_APPMALLOC D I * diff --git a/db/dist/vx_setup/vx_demofile.in b/db/dist/vx_setup/vx_demofile.in index 08593f653..42a698ea3 100644 --- a/db/dist/vx_setup/vx_demofile.in +++ b/db/dist/vx_setup/vx_demofile.in @@ -1,3 +1,3 @@ -windlink/sleepycat/BerkeleyDB.@DB_VERSION_MAJOR@.@DB_VERSION_MINOR@.@DB_VERSION_PATCH@/build_vxworks/demo/DBdemo.wpj -windlink/sleepycat/BerkeleyDB.@DB_VERSION_MAJOR@.@DB_VERSION_MINOR@.@DB_VERSION_PATCH@/build_vxworks/demo/README -windlink/sleepycat/BerkeleyDB.@DB_VERSION_MAJOR@.@DB_VERSION_MINOR@.@DB_VERSION_PATCH@/build_vxworks/demo/dbdemo.c +windlink/sleepycat/BerkeleyDB.@DB_VERSION_MAJOR@.@DB_VERSION_MINOR@.@DB_VERSION_PATCH@/build_vxworks/dbdemo/dbdemo.wpj +windlink/sleepycat/BerkeleyDB.@DB_VERSION_MAJOR@.@DB_VERSION_MINOR@.@DB_VERSION_PATCH@/build_vxworks/dbdemo/README +windlink/sleepycat/BerkeleyDB.@DB_VERSION_MAJOR@.@DB_VERSION_MINOR@.@DB_VERSION_PATCH@/build_vxworks/dbdemo/dbdemo.c diff --git a/db/dist/win_exports.in b/db/dist/win_exports.in index e20fbd168..0ff425a5f 100644 --- a/db/dist/win_exports.in +++ b/db/dist/win_exports.in @@ -1,4 +1,4 @@ -# Id: win_exports.in,v 1.24 2002/07/15 06:07:55 mjc Exp +# Id: win_exports.in,v 1.25 2002/08/29 14:22:21 margo Exp # Standard interfaces. db_create @@ -31,8 +31,6 @@ db_env_set_func_unmap db_env_set_func_write db_env_set_func_yield - db_env_set_thread_func - db_env_xa_attach # Needed for application-specific logging and recovery routines. __db_add_recovery @@ -134,13 +132,3 @@ __qam_init_print __qam_pgin_out __txn_init_print - __db_xa_close - __db_xa_commit - __db_xa_end - __db_xa_forget - __db_xa_open - __db_xa_prepare - __db_xa_recover - __db_xa_rollback - __db_xa_start - __db_rmid_to_env diff --git a/db/docs/api_c/env_set_timeout.html b/db/docs/api_c/env_set_timeout.html index dfe94bda6..46fb578f9 100644 --- a/db/docs/api_c/env_set_timeout.html +++ b/db/docs/api_c/env_set_timeout.html @@ -1,4 +1,4 @@ -<!--Id: env_set_timeout.so,v 10.6 2002/06/24 14:49:21 bostic Exp --> +<!--Id: env_set_timeout.so,v 10.8 2002/08/29 03:24:42 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -26,7 +26,7 @@ int DB_ENV->set_timeout(DB_ENV *dbenv, db_timeout_t timeout, u_int32_t flags); </pre></h3> <h1>Description</h1> -<p>The DB_ENV->set_timeout function sets timeout values for locks or +<p>The DB_ENV->set_timeout method sets timeout values for locks or transactions in the database environment. The timeout value is currently specified as an unsigned 32-bit number of microseconds, limiting the maximum timeout to roughly 71 minutes. @@ -60,61 +60,24 @@ detection is performed. <p>Timeout values specified for the database environment may be overridden on a per-lock or per-transaction basis. See <a href="../api_c/lock_vec.html">DB_ENV->lock_vec</a> and <a href="../api_c/txn_set_timeout.html">DB_TXN->set_timeout</a> for more information. -<p>The DB_ENV->set_timeout function configures a database environment, not only operations -performed using the specified <a href="../api_c/env_create.html">DB_ENV</a> handle. +<p>The DB_ENV->set_timeout method configures a database environment, not only operations +performed using the specified <a href="../api_c/env_class.html">DB_ENV</a> handle. <p>The DB_ENV->set_timeout interface may be called at any time during the life of the application. -<p>The DB_ENV->set_timeout function returns a non-zero error value on failure and 0 on success. +<p>The DB_ENV->set_timeout method returns a non-zero error value on failure and 0 on success. <h1>Errors</h1> -<p>The DB_ENV->set_timeout function may fail and return a non-zero error for the following conditions: +<p>The DB_ENV->set_timeout method may fail and return a non-zero error for the following conditions: <p><dl compact> <p><dt>EINVAL<dd>An invalid flag value or parameter was specified. </dl> -<p>The DB_ENV->set_timeout function may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions. -If a catastrophic error has occurred, the DB_ENV->set_timeout function may fail and +<p>The DB_ENV->set_timeout method may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions. +If a catastrophic error has occurred, the DB_ENV->set_timeout method may fail and return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a>, in which case all subsequent Berkeley DB calls will fail in the same way. +<h1>Class</h1> +<a href="../api_c/env_class.html">DB_ENV</a> <h1>See Also</h1> -<a href="../api_c/env_create.html">db_env_create</a>, -<a href="../api_c/env_close.html">DB_ENV->close</a>, -<a href="../api_c/env_dbremove.html">DB_ENV->dbremove</a>, -<a href="../api_c/env_dbrename.html">DB_ENV->dbrename</a>, -<a href="../api_c/env_err.html">DB_ENV->err</a>, -<a href="../api_c/env_err.html">DB_ENV->errx</a>, -<a href="../api_c/env_open.html">DB_ENV->open</a>, -<a href="../api_c/env_remove.html">DB_ENV->remove</a>, -<a href="../api_c/env_set_alloc.html">DB_ENV->set_alloc</a>, -<a href="../api_c/env_set_app_dispatch.html">DB_ENV->set_app_dispatch</a>, -<a href="../api_c/env_set_cachesize.html">DB_ENV->set_cachesize</a>, -<a href="../api_c/env_set_data_dir.html">DB_ENV->set_data_dir</a>, -<a href="../api_c/env_set_encrypt.html">DB_ENV->set_encrypt</a>, -<a href="../api_c/env_set_errcall.html">DB_ENV->set_errcall</a>, -<a href="../api_c/env_set_errfile.html">DB_ENV->set_errfile</a>, -<a href="../api_c/env_set_errpfx.html">DB_ENV->set_errpfx</a>, -<a href="../api_c/env_set_feedback.html">DB_ENV->set_feedback</a>, -<a href="../api_c/env_set_flags.html">DB_ENV->set_flags</a>, -<a href="../api_c/env_set_lg_bsize.html">DB_ENV->set_lg_bsize</a>, -<a href="../api_c/env_set_lg_dir.html">DB_ENV->set_lg_dir</a>, -<a href="../api_c/env_set_lg_max.html">DB_ENV->set_lg_max</a>, -<a href="../api_c/env_set_lg_regionmax.html">DB_ENV->set_lg_regionmax</a>, -<a href="../api_c/env_set_lk_conflicts.html">DB_ENV->set_lk_conflicts</a>, -<a href="../api_c/env_set_lk_detect.html">DB_ENV->set_lk_detect</a>, -<a href="../api_c/env_set_lk_max_lockers.html">DB_ENV->set_lk_max_lockers</a>, -<a href="../api_c/env_set_lk_max_locks.html">DB_ENV->set_lk_max_locks</a>, -<a href="../api_c/env_set_lk_max_objects.html">DB_ENV->set_lk_max_objects</a>, -<a href="../api_c/env_set_mp_mmapsize.html">DB_ENV->set_mp_mmapsize</a>, -<a href="../api_c/env_set_paniccall.html">DB_ENV->set_paniccall</a>, -<a href="../api_c/env_set_rpc_server.html">DB_ENV->set_rpc_server</a>, -<a href="../api_c/env_set_shm_key.html">DB_ENV->set_shm_key</a>, -<a href="../api_c/env_set_tas_spins.html">DB_ENV->set_tas_spins</a>, -<a href="../api_c/env_set_timeout.html">DB_ENV->set_timeout</a>, -<a href="../api_c/env_set_tmp_dir.html">DB_ENV->set_tmp_dir</a>, -<a href="../api_c/env_set_tx_max.html">DB_ENV->set_tx_max</a>, -<a href="../api_c/env_set_tx_timestamp.html">DB_ENV->set_tx_timestamp</a>, -<a href="../api_c/env_set_verbose.html">DB_ENV->set_verbose</a>, -<a href="../api_c/env_strerror.html">db_strerror</a> -and -<a href="../api_c/env_version.html">db_version</a>. +<a href="../api_c/env_list.html">Database Environments and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_c/lock_id_free.html b/db/docs/api_c/lock_id_free.html index 73e8a31d2..555d44bfb 100644 --- a/db/docs/api_c/lock_id_free.html +++ b/db/docs/api_c/lock_id_free.html @@ -1,4 +1,4 @@ -<!--Id: lock_id_free.so,v 10.4 2002/06/24 14:49:23 bostic Exp --> +<!--Id: lock_id_free.so,v 10.5 2002/08/18 21:16:37 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -26,32 +26,22 @@ int DB_ENV->lock_id_free(DB_ENV *env, u_int32_t id); </pre></h3> <h1>Description</h1> -<p>The DB_ENV->lock_id_free function frees a locker ID allocated by the -DB_ENV->lock_id function. -<p>The DB_ENV->lock_id_free function returns a non-zero error value on failure and 0 on success. +<p>The DB_ENV->lock_id_free method frees a locker ID allocated by the +<a href="../api_c/lock_id.html">DB_ENV->lock_id</a> method. +<p>The DB_ENV->lock_id_free method returns a non-zero error value on failure and 0 on success. <h1>Errors</h1> <p><dl compact> <p><dt>EINVAL<dd>An invalid flag value or parameter was specified. <p>The locker ID is invalid or locks are still held by this locker ID. </dl> -<p>The DB_ENV->lock_id_free function may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions. -If a catastrophic error has occurred, the DB_ENV->lock_id_free function may fail and +<p>The DB_ENV->lock_id_free method may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions. +If a catastrophic error has occurred, the DB_ENV->lock_id_free method may fail and return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a>, in which case all subsequent Berkeley DB calls will fail in the same way. +<h1>Class</h1> +<a href="../api_c/env_class.html">DB_ENV</a>, <a href="../api_c/lock_class.html">DB_LOCK</a> <h1>See Also</h1> -<a href="../api_c/env_set_lk_conflicts.html">DB_ENV->set_lk_conflicts</a>, -<a href="../api_c/env_set_lk_detect.html">DB_ENV->set_lk_detect</a>, -<a href="../api_c/env_set_lk_max_lockers.html">DB_ENV->set_lk_max_lockers</a>, -<a href="../api_c/env_set_lk_max_locks.html">DB_ENV->set_lk_max_locks</a>, -<a href="../api_c/env_set_lk_max_objects.html">DB_ENV->set_lk_max_objects</a>, -<a href="../api_c/lock_detect.html">DB_ENV->lock_detect</a>, -<a href="../api_c/lock_get.html">DB_ENV->lock_get</a>, -<a href="../api_c/lock_id.html">DB_ENV->lock_id</a>, -<a href="../api_c/lock_id_free.html">DB_ENV->lock_id_free</a>, -<a href="../api_c/lock_put.html">DB_ENV->lock_put</a>, -<a href="../api_c/lock_stat.html">DB_ENV->lock_stat</a> -and -<a href="../api_c/lock_vec.html">DB_ENV->lock_vec</a>. +<a href="../api_c/lock_list.html">Locking Subsystem and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_c/log_cursor.html b/db/docs/api_c/log_cursor.html index 33e0f5173..12dd40c25 100644 --- a/db/docs/api_c/log_cursor.html +++ b/db/docs/api_c/log_cursor.html @@ -1,4 +1,4 @@ -<!--Id: log_cursor.so,v 10.3 2002/06/24 14:49:24 bostic Exp --> +<!--Id: log_cursor.so,v 10.5 2002/08/24 15:13:43 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -26,70 +26,24 @@ int DB_ENV->log_cursor(DB_ENV *dbenv, DB_LOGC **cursorp, u_int32_t flags); </pre></h3> <h1>Description</h1> -<p>The DB_ENV->log_cursor function +<p>The DB_ENV->log_cursor method creates a log cursor and copies a pointer to it into the memory to which <b>cursorp</b> refers. <p>The <b>flags</b> parameter is currently unused, and must be set to 0. -<p>The DB_ENV->log_cursor function returns a non-zero error value on failure and 0 on success. +<p>The DB_ENV->log_cursor method returns a non-zero error value on failure and 0 on success. <h1>Errors</h1> -<p>The DB_ENV->log_cursor function may fail and return a non-zero error for the following conditions: +<p>The DB_ENV->log_cursor method may fail and return a non-zero error for the following conditions: <p><dl compact> <p><dt>EINVAL<dd>An invalid flag value or parameter was specified. </dl> -<p>The DB_ENV->log_cursor function may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions. -If a catastrophic error has occurred, the DB_ENV->log_cursor function may fail and +<p>The DB_ENV->log_cursor method may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions. +If a catastrophic error has occurred, the DB_ENV->log_cursor method may fail and return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a>, in which case all subsequent Berkeley DB calls will fail in the same way. +<h1>Class</h1> +<a href="../api_c/env_class.html">DB_ENV</a>, <a href="../api_c/logc_class.html">DB_LOGC</a>, <a href="../api_c/lsn_class.html">DB_LSN</a> <h1>See Also</h1> -<a href="../api_c/db_create.html">db_create</a>, -<a href="../api_c/db_set_alloc.html">DB->set_alloc</a>, -<a href="../api_c/db_associate.html">DB->associate</a>, -<a href="../api_c/db_close.html">DB->close</a>, -<a href="../api_c/db_cursor.html">DB->cursor</a>, -<a href="../api_c/db_del.html">DB->del</a>, -<a href="../api_c/db_err.html">DB->err</a>, -<a href="../api_c/db_err.html">DB->errx</a>, -<a href="../api_c/db_fd.html">DB->fd</a>, -<a href="../api_c/db_get.html">DB->get</a>, -<a href="../api_c/db_get_byteswapped.html">DB->get_byteswapped</a>, -<a href="../api_c/db_get_type.html">DB->get_type</a>, -<a href="../api_c/db_join.html">DB->join</a>, -<a href="../api_c/db_key_range.html">DB->key_range</a>, -<a href="../api_c/db_open.html">DB->open</a>, -<a href="../api_c/db_get.html">DB->pget</a>, -<a href="../api_c/db_put.html">DB->put</a>, -<a href="../api_c/db_remove.html">DB->remove</a>, -<a href="../api_c/db_rename.html">DB->rename</a>, -<a href="../api_c/db_set_append_recno.html">DB->set_append_recno</a>, -<a href="../api_c/db_set_bt_compare.html">DB->set_bt_compare</a>, -<a href="../api_c/db_set_bt_minkey.html">DB->set_bt_minkey</a>, -<a href="../api_c/db_set_bt_prefix.html">DB->set_bt_prefix</a>, -<a href="../api_c/db_set_cache_priority.html">DB->set_cache_priority</a>, -<a href="../api_c/db_set_cachesize.html">DB->set_cachesize</a>, -<a href="../api_c/db_set_dup_compare.html">DB->set_dup_compare</a>, -<a href="../api_c/db_set_encrypt.html">DB->set_encrypt</a>, -<a href="../api_c/db_set_errcall.html">DB->set_errcall</a>, -<a href="../api_c/db_set_errfile.html">DB->set_errfile</a>, -<a href="../api_c/db_set_errpfx.html">DB->set_errpfx</a>, -<a href="../api_c/db_set_feedback.html">DB->set_feedback</a>, -<a href="../api_c/db_set_flags.html">DB->set_flags</a>, -<a href="../api_c/db_set_h_ffactor.html">DB->set_h_ffactor</a>, -<a href="../api_c/db_set_h_hash.html">DB->set_h_hash</a>, -<a href="../api_c/db_set_h_nelem.html">DB->set_h_nelem</a>, -<a href="../api_c/db_set_lorder.html">DB->set_lorder</a>, -<a href="../api_c/db_set_pagesize.html">DB->set_pagesize</a>, -<a href="../api_c/db_set_paniccall.html">DB->set_paniccall</a>, -<a href="../api_c/db_set_q_extentsize.html">DB->set_q_extentsize</a>, -<a href="../api_c/db_set_re_delim.html">DB->set_re_delim</a>, -<a href="../api_c/db_set_re_len.html">DB->set_re_len</a>, -<a href="../api_c/db_set_re_pad.html">DB->set_re_pad</a>, -<a href="../api_c/db_set_re_source.html">DB->set_re_source</a>, -<a href="../api_c/db_stat.html">DB->stat</a>, -<a href="../api_c/db_sync.html">DB->sync</a>, -<a href="../api_c/db_truncate.html">DB->truncate</a>, -<a href="../api_c/db_upgrade.html">DB->upgrade</a> -and -<a href="../api_c/db_verify.html">DB->verify</a>. +<a href="../api_c/log_list.html">Logging Subsystem and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_c/logc_close.html b/db/docs/api_c/logc_close.html index 59cf31bd5..30c466ff1 100644 --- a/db/docs/api_c/logc_close.html +++ b/db/docs/api_c/logc_close.html @@ -1,4 +1,4 @@ -<!--Id: logc_close.so,v 10.5 2002/06/24 14:49:25 bostic Exp --> +<!--Id: logc_close.so,v 10.6 2002/08/18 21:16:43 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -26,38 +26,25 @@ int DB_LOGC->close(DB_LOGC *cursor, u_int32_t flags); </pre></h3> <h1>Description</h1> -<p>The DB_LOGC->close function discards the log cursor. After DB_LOGC->close +<p>The DB_LOGC->close method discards the log cursor. After DB_LOGC->close has been called, regardless of its return, the cursor handle may not be used again. <p>The <b>flags</b> parameter is currently unused, and must be set to 0. -<p>The DB_LOGC->close function returns a non-zero error value on failure and 0 on success. +<p>The DB_LOGC->close method returns a non-zero error value on failure and 0 on success. <h1>Errors</h1> -<p>The DB_LOGC->close function may fail and return a non-zero error for the following conditions: +<p>The DB_LOGC->close method may fail and return a non-zero error for the following conditions: <p><dl compact> <p><dt>EINVAL<dd>An invalid flag value or parameter was specified. <p>The cursor was previously closed. </dl> -<p>The DB_LOGC->close function may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions. -If a catastrophic error has occurred, the DB_LOGC->close function may fail and +<p>The DB_LOGC->close method may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions. +If a catastrophic error has occurred, the DB_LOGC->close method may fail and return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a>, in which case all subsequent Berkeley DB calls will fail in the same way. +<h1>Class</h1> +<a href="../api_c/env_class.html">DB_ENV</a>, <a href="../api_c/logc_class.html">DB_LOGC</a>, <a href="../api_c/lsn_class.html">DB_LSN</a> <h1>See Also</h1> -<a href="../api_c/log_archive.html">DB_ENV->log_archive</a>, -<a href="../api_c/log_file.html">DB_ENV->log_file</a>, -<a href="../api_c/log_flush.html">DB_ENV->log_flush</a>, -<a href="../api_c/log_put.html">DB_ENV->log_put</a>, -<a href="../api_c/log_stat.html">DB_ENV->log_stat</a>, -<a href="../api_c/env_set_lg_bsize.html">DB_ENV->set_lg_bsize</a>, -<a href="../api_c/env_set_lg_dir.html">DB_ENV->set_lg_dir</a>, -<a href="../api_c/env_set_lg_max.html">DB_ENV->set_lg_max</a>, -<a href="../api_c/env_set_lg_regionmax.html">DB_ENV->set_lg_regionmax</a>, -and -<a href="../api_c/log_compare.html">log_compare</a>. -<p> -<a href="../api_c/log_cursor.html">DB_ENV->log_cursor</a>, -<a href="../api_c/logc_close.html">DB_LOGC->close</a> -and -<a href="../api_c/logc_get.html">DB_LOGC->get</a>. +<a href="../api_c/log_list.html">Logging Subsystem and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_c/logc_get.html b/db/docs/api_c/logc_get.html index 074763029..3081f182f 100644 --- a/db/docs/api_c/logc_get.html +++ b/db/docs/api_c/logc_get.html @@ -1,4 +1,4 @@ -<!--Id: logc_get.so,v 10.36 2002/07/01 16:52:26 bostic Exp --> +<!--Id: logc_get.so,v 10.37 2002/08/18 21:16:44 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -26,50 +26,50 @@ int DB_LOGC->get(DB_LOGC *logc, DB_LSN *lsn, DBT *data, u_int32_t flags); </pre></h3> <h1>Description</h1> -<p>The DB_LOGC->get function retrieve records from the log according to the +<p>The DB_LOGC->get method retrieve records from the log according to the <b>lsn</b> and <b>flags</b> arguments. <p>The data field of the <b>data</b> structure is set to the record retrieved, and the size field indicates the number of bytes in the -record. See <a href="../api_c/dbt.html">DBT</a> for a description of other fields in the -<b>data</b> structure. The <a href="../api_c/dbt.html#DB_DBT_MALLOC">DB_DBT_MALLOC</a>, -<a href="../api_c/dbt.html#DB_DBT_REALLOC">DB_DBT_REALLOC</a> and <a href="../api_c/dbt.html#DB_DBT_USERMEM">DB_DBT_USERMEM</a> flags may be specified -for any <a href="../api_c/dbt.html">DBT</a> used for data retrieval. +record. See <a href="../api_c/dbt_class.html">DBT</a> for a description of other fields in the +<b>data</b> structure. The <a href="../api_c/dbt_class.html#DB_DBT_MALLOC">DB_DBT_MALLOC</a>, +<a href="../api_c/dbt_class.html#DB_DBT_REALLOC">DB_DBT_REALLOC</a> and <a href="../api_c/dbt_class.html#DB_DBT_USERMEM">DB_DBT_USERMEM</a> flags may be specified +for any <a href="../api_c/dbt_class.html">DBT</a> used for data retrieval. <p>The <b>flags</b> value must be set to one of the following values: <p><dl compact> <p><dt><a name="DB_FIRST">DB_FIRST</a><dd>The first record from any of the log files found in the log directory is returned in the <b>data</b> argument. -The <b>lsn</b> argument is overwritten with the <a href="../api_c/db_lsn.html">DB_LSN</a> of the +The <b>lsn</b> argument is overwritten with the <a href="../api_c/lsn_class.html">DB_LSN</a> of the record returned. <p> -If the log is empty, the DB_LOGC->get function will return DB_NOTFOUND. +If the log is empty, the DB_LOGC->get method will return DB_NOTFOUND. <p><dt><a name="DB_LAST">DB_LAST</a><dd>The last record in the log is returned in the <b>data</b> argument. -The <b>lsn</b> argument is overwritten with the <a href="../api_c/db_lsn.html">DB_LSN</a> of the +The <b>lsn</b> argument is overwritten with the <a href="../api_c/lsn_class.html">DB_LSN</a> of the record returned. <p> -If the log is empty, the DB_LOGC->get function will return DB_NOTFOUND. +If the log is empty, the DB_LOGC->get method will return DB_NOTFOUND. <p><dt><a name="DB_NEXT">DB_NEXT</a>, <a name="DB_PREV">DB_PREV</a><dd>The current log position is advanced to the next (previous) record in the log, and that record is returned in the <b>data</b> argument. The -<b>lsn</b> argument is overwritten with the <a href="../api_c/db_lsn.html">DB_LSN</a> of the record +<b>lsn</b> argument is overwritten with the <a href="../api_c/lsn_class.html">DB_LSN</a> of the record returned. <p>If the cursor has not been initialized via DB_FIRST, DB_LAST, DB_SET, DB_NEXT, or DB_PREV, DB_LOGC->get will return the first (last) record in the log. If the last (first) log record has already been returned or the log is -empty, the DB_LOGC->get function will return DB_NOTFOUND. +empty, the DB_LOGC->get method will return DB_NOTFOUND. If the log was opened with the DB_THREAD flag set, calls to -DB_LOGC->get with the DB_NEXT (DB_PREV) flag set, the DB_LOGC->get function will return EINVAL. +DB_LOGC->get with the DB_NEXT (DB_PREV) flag set, the DB_LOGC->get method will return EINVAL. <p><dt><a name="DB_CURRENT">DB_CURRENT</a><dd>Return the log record to which the log currently refers. If the log cursor has not been initialized via DB_FIRST, DB_LAST, DB_SET, DB_NEXT, or DB_PREV, or if the log was opened with the DB_THREAD -flag set, the DB_LOGC->get function will return EINVAL. +flag set, the DB_LOGC->get method will return EINVAL. <p><dt><a name="DB_SET">DB_SET</a><dd>Retrieve the record specified by the <b>lsn</b> argument. -If the specified <a href="../api_c/db_lsn.html">DB_LSN</a> is invalid (for example, it does not -appear in the log), the DB_LOGC->get function will return EINVAL. +If the specified <a href="../api_c/lsn_class.html">DB_LSN</a> is invalid (for example, it does not +appear in the log), the DB_LOGC->get method will return EINVAL. </dl> <p> -Otherwise, the DB_LOGC->get function returns a non-zero error value on failure and 0 on success. +Otherwise, the DB_LOGC->get method returns a non-zero error value on failure and 0 on success. <h1>Errors</h1> -<p>The DB_LOGC->get function may fail and return a non-zero error for the following conditions: +<p>The DB_LOGC->get method may fail and return a non-zero error for the following conditions: <p><dl compact> <p><dt>EINVAL<dd>An invalid flag value or parameter was specified. <p>The DB_CURRENT flag was set and the log pointer had not yet been @@ -77,27 +77,14 @@ initialized. <p>The DB_SET flag was set and the specified log sequence number does not exist. </dl> -<p>The DB_LOGC->get function may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions. -If a catastrophic error has occurred, the DB_LOGC->get function may fail and +<p>The DB_LOGC->get method may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions. +If a catastrophic error has occurred, the DB_LOGC->get method may fail and return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a>, in which case all subsequent Berkeley DB calls will fail in the same way. +<h1>Class</h1> +<a href="../api_c/env_class.html">DB_ENV</a>, <a href="../api_c/logc_class.html">DB_LOGC</a>, <a href="../api_c/lsn_class.html">DB_LSN</a> <h1>See Also</h1> -<a href="../api_c/log_archive.html">DB_ENV->log_archive</a>, -<a href="../api_c/log_file.html">DB_ENV->log_file</a>, -<a href="../api_c/log_flush.html">DB_ENV->log_flush</a>, -<a href="../api_c/log_put.html">DB_ENV->log_put</a>, -<a href="../api_c/log_stat.html">DB_ENV->log_stat</a>, -<a href="../api_c/env_set_lg_bsize.html">DB_ENV->set_lg_bsize</a>, -<a href="../api_c/env_set_lg_dir.html">DB_ENV->set_lg_dir</a>, -<a href="../api_c/env_set_lg_max.html">DB_ENV->set_lg_max</a>, -<a href="../api_c/env_set_lg_regionmax.html">DB_ENV->set_lg_regionmax</a>, -and -<a href="../api_c/log_compare.html">log_compare</a>. -<p> -<a href="../api_c/log_cursor.html">DB_ENV->log_cursor</a>, -<a href="../api_c/logc_close.html">DB_LOGC->close</a> -and -<a href="../api_c/logc_get.html">DB_LOGC->get</a>. +<a href="../api_c/log_list.html">Logging Subsystem and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_c/memp_fcreate.html b/db/docs/api_c/memp_fcreate.html index 34ab2e92b..25893bbea 100644 --- a/db/docs/api_c/memp_fcreate.html +++ b/db/docs/api_c/memp_fcreate.html @@ -1,4 +1,4 @@ -<!--Id: memp_fcreate.so,v 10.5 2002/06/24 14:49:26 bostic Exp --> +<!--Id: memp_fcreate.so,v 10.8 2002/08/28 20:25:53 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -26,38 +26,21 @@ int DB_ENV->memp_fcreate(DB_ENV *dbenvp, DB_MPOOLFILE **dbmfp, u_int32_t flags); </pre></h3> <h1>Description</h1> -<p>The DB_ENV->memp_fcreate function creates a DbMpoolFile structure that +<p>The DB_ENV->memp_fcreate method creates a <a href="../api_c/mempfile_class.html">DB_MPOOLFILE</a> structure that is the handle for a Berkeley DB shared memory buffer pool file. A pointer to this structure is returned in the memory to which <b>dbmfp</b> refers. -Calling the <a href="../api_c/memp_fclose.html">DB_MPOOLFILE->close</a> function will discard the returned handle. +Calling the <a href="../api_c/memp_fclose.html">DB_MPOOLFILE->close</a> method will discard the returned handle. <p>The <b>flags</b> parameter is currently unused, and must be set to 0. -<p>The DB_ENV->memp_fcreate function returns a non-zero error value on failure and 0 on success. +<p>The DB_ENV->memp_fcreate method returns a non-zero error value on failure and 0 on success. <h1>Errors</h1> -<p>The DB_ENV->memp_fcreate function may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions. -If a catastrophic error has occurred, the DB_ENV->memp_fcreate function may fail and +<p>The DB_ENV->memp_fcreate method may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions. +If a catastrophic error has occurred, the DB_ENV->memp_fcreate method may fail and return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a>, in which case all subsequent Berkeley DB calls will fail in the same way. +<h1>Class</h1> +<a href="../api_c/env_class.html">DB_ENV</a>, <a href="../api_c/mempfile_class.html">DB_MPOOLFILE</a> <h1>See Also</h1> -<a href="../api_c/env_set_cachesize.html">DB_ENV->set_cachesize</a>, -<a href="../api_c/env_set_mp_mmapsize.html">DB_ENV->set_mp_mmapsize</a>, -<a href="../api_c/memp_register.html">DB_ENV->memp_register</a>, -<a href="../api_c/memp_stat.html">DB_ENV->memp_stat</a>, -<a href="../api_c/memp_sync.html">DB_ENV->memp_sync</a>, -<a href="../api_c/memp_trickle.html">DB_ENV->memp_trickle</a>, -<p> -<a href="../api_c/memp_fcreate.html">DB_ENV->memp_fcreate</a>, -<a href="../api_c/memp_fclose.html">DB_MPOOLFILE->close</a>, -<a href="../api_c/memp_fget.html">DB_MPOOLFILE->get</a>, -<a href="../api_c/memp_fopen.html">DB_MPOOLFILE->open</a>, -<a href="../api_c/memp_fput.html">DB_MPOOLFILE->put</a>, -<a href="../api_c/memp_fset.html">DB_MPOOLFILE->set</a>, -<a href="../api_c/memp_set_fileid.html">DB_MPOOLFILE->set_fileid</a>, -<a href="../api_c/memp_set_clear_len.html">DB_MPOOLFILE->set_clear_len</a>, -<a href="../api_c/memp_set_ftype.html">DB_MPOOLFILE->set_ftype</a>, -<a href="../api_c/memp_set_lsn_offset.html">DB_MPOOLFILE->set_lsn_offset</a>, -<a href="../api_c/memp_set_pgcookie.html">DB_MPOOLFILE->set_pgcookie</a> -and -<a href="../api_c/memp_fsync.html">DB_MPOOLFILE->sync</a>. +<a href="../api_c/memp_list.html">Memory Pools and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_c/memp_set_clear_len.html b/db/docs/api_c/memp_set_clear_len.html index e5de7ab2d..acfe0e81e 100644 --- a/db/docs/api_c/memp_set_clear_len.html +++ b/db/docs/api_c/memp_set_clear_len.html @@ -1,4 +1,4 @@ -<!--Id: memp_set_clear_len.so,v 10.4 2002/06/24 14:49:27 bostic Exp --> +<!--Id: memp_set_clear_len.so,v 10.6 2002/08/24 18:23:32 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -26,46 +26,29 @@ int DB_MPOOLFILE->set_clear_len(DB_MPOOLFILE *mpf, u_int32_t len); </pre></h3> <h1>Description</h1> -<p>The DB_MPOOLFILE->set_clear_len function sets the number of initial bytes in a +<p>The DB_MPOOLFILE->set_clear_len method sets the number of initial bytes in a page that should be set to nul when the page is created as a result of the <a href="../api_c/memp_fget.html#DB_MPOOL_CREATE">DB_MPOOL_CREATE</a> or <a href="../api_c/memp_fget.html#DB_MPOOL_NEW">DB_MPOOL_NEW</a> flags being specified to <a href="../api_c/memp_fget.html">DB_MPOOLFILE->get</a>. If no value is specified, or <b>len</b> is 0, the entire page is cleared. -<p>The DB_MPOOLFILE->set_clear_len function configures a file in the memory pool, not only -operations performed using the specified <a href="../api_c/memp_fcreate.html">DB_MPOOLFILE</a> handle. +<p>The DB_MPOOLFILE->set_clear_len method configures a file in the memory pool, not only +operations performed using the specified <a href="../api_c/mempfile_class.html">DB_MPOOLFILE</a> handle. <p>The DB_MPOOLFILE->set_clear_len interface may not be called after the <a href="../api_c/memp_fopen.html">DB_MPOOLFILE->open</a> interface is called. If the file is already open in the memory pool when <a href="../api_c/memp_fopen.html">DB_MPOOLFILE->open</a> is called, the information specified to DB_MPOOLFILE->set_clear_len must be consistent with the existing file or an error will be returned. -<p>The DB_MPOOLFILE->set_clear_len function returns a non-zero error value on failure and 0 on success. +<p>The DB_MPOOLFILE->set_clear_len method returns a non-zero error value on failure and 0 on success. <h1>Errors</h1> -<p>The DB_MPOOLFILE->set_clear_len function may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions. -If a catastrophic error has occurred, the DB_MPOOLFILE->set_clear_len function may fail and +<p>The DB_MPOOLFILE->set_clear_len method may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions. +If a catastrophic error has occurred, the DB_MPOOLFILE->set_clear_len method may fail and return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a>, in which case all subsequent Berkeley DB calls will fail in the same way. +<h1>Class</h1> +<a href="../api_c/env_class.html">DB_ENV</a>, <a href="../api_c/mempfile_class.html">DB_MPOOLFILE</a> <h1>See Also</h1> -<a href="../api_c/env_set_cachesize.html">DB_ENV->set_cachesize</a>, -<a href="../api_c/env_set_mp_mmapsize.html">DB_ENV->set_mp_mmapsize</a>, -<a href="../api_c/memp_register.html">DB_ENV->memp_register</a>, -<a href="../api_c/memp_stat.html">DB_ENV->memp_stat</a>, -<a href="../api_c/memp_sync.html">DB_ENV->memp_sync</a>, -<a href="../api_c/memp_trickle.html">DB_ENV->memp_trickle</a>, -<p> -<a href="../api_c/memp_fcreate.html">DB_ENV->memp_fcreate</a>, -<a href="../api_c/memp_fclose.html">DB_MPOOLFILE->close</a>, -<a href="../api_c/memp_fget.html">DB_MPOOLFILE->get</a>, -<a href="../api_c/memp_fopen.html">DB_MPOOLFILE->open</a>, -<a href="../api_c/memp_fput.html">DB_MPOOLFILE->put</a>, -<a href="../api_c/memp_fset.html">DB_MPOOLFILE->set</a>, -<a href="../api_c/memp_set_fileid.html">DB_MPOOLFILE->set_fileid</a>, -<a href="../api_c/memp_set_clear_len.html">DB_MPOOLFILE->set_clear_len</a>, -<a href="../api_c/memp_set_ftype.html">DB_MPOOLFILE->set_ftype</a>, -<a href="../api_c/memp_set_lsn_offset.html">DB_MPOOLFILE->set_lsn_offset</a>, -<a href="../api_c/memp_set_pgcookie.html">DB_MPOOLFILE->set_pgcookie</a> -and -<a href="../api_c/memp_fsync.html">DB_MPOOLFILE->sync</a>. +<a href="../api_c/memp_list.html">Memory Pools and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_c/memp_set_fileid.html b/db/docs/api_c/memp_set_fileid.html index 2bfb51996..f8ded5f68 100644 --- a/db/docs/api_c/memp_set_fileid.html +++ b/db/docs/api_c/memp_set_fileid.html @@ -1,4 +1,4 @@ -<!--Id: memp_set_fileid.so,v 10.4 2002/06/24 14:49:27 bostic Exp --> +<!--Id: memp_set_fileid.so,v 10.6 2002/08/24 18:23:32 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -28,7 +28,7 @@ DB_MPOOLFILE->set_fileid(DB_MPOOLFILE *mpf, u_int8_t *fileid); <h1>Description</h1> <p>The shared memory buffer pool functions must be able to uniquely identify files in order that multiple processes wanting to share a file -will correctly identify it in the pool. The DB_MPOOLFILE->set_fileid function +will correctly identify it in the pool. The DB_MPOOLFILE->set_fileid method specifies a unique identifier for the file. Unique file identifiers must be a DB_FILE_ID_LEN length array of bytes. <p>On most UNIX/POSIX systems, the <b>fileid</b> field will not need to @@ -43,7 +43,7 @@ are not necessarily unique between processes or across system reboots. <b>Applications wanting to maintain a shared memory buffer pool between processes or across system reboots, in which the pool contains pages from files stored on such filesystems, must specify a unique file -identifier using the DB_MPOOLFILE->set_fileid function, and each process opening +identifier using the DB_MPOOLFILE->set_fileid method, and each process opening the file must provide the same unique identifier.</b> <p>This call should not be necessary for most applications. Specifically, it is not necessary if the memory pool is not shared between processes @@ -52,37 +52,20 @@ using the Berkeley DB access methods instead of calling the pool functions explicitly, or if the files in the memory pool are stored on filesystems in which the default values as described previously are invariant between process and across system reboots. -<p>The DB_MPOOLFILE->set_fileid function configures a file in the memory pool, not only -operations performed using the specified <a href="../api_c/memp_fcreate.html">DB_MPOOLFILE</a> handle. +<p>The DB_MPOOLFILE->set_fileid method configures a file in the memory pool, not only +operations performed using the specified <a href="../api_c/mempfile_class.html">DB_MPOOLFILE</a> handle. <p>The DB_MPOOLFILE->set_fileid interface may not be called after the <a href="../api_c/memp_fopen.html">DB_MPOOLFILE->open</a> interface is called. -<p>The DB_MPOOLFILE->set_fileid function returns a non-zero error value on failure and 0 on success. +<p>The DB_MPOOLFILE->set_fileid method returns a non-zero error value on failure and 0 on success. <h1>Errors</h1> -<p>The DB_MPOOLFILE->set_fileid function may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions. -If a catastrophic error has occurred, the DB_MPOOLFILE->set_fileid function may fail and +<p>The DB_MPOOLFILE->set_fileid method may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions. +If a catastrophic error has occurred, the DB_MPOOLFILE->set_fileid method may fail and return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a>, in which case all subsequent Berkeley DB calls will fail in the same way. +<h1>Class</h1> +<a href="../api_c/env_class.html">DB_ENV</a>, <a href="../api_c/mempfile_class.html">DB_MPOOLFILE</a> <h1>See Also</h1> -<a href="../api_c/env_set_cachesize.html">DB_ENV->set_cachesize</a>, -<a href="../api_c/env_set_mp_mmapsize.html">DB_ENV->set_mp_mmapsize</a>, -<a href="../api_c/memp_register.html">DB_ENV->memp_register</a>, -<a href="../api_c/memp_stat.html">DB_ENV->memp_stat</a>, -<a href="../api_c/memp_sync.html">DB_ENV->memp_sync</a>, -<a href="../api_c/memp_trickle.html">DB_ENV->memp_trickle</a>, -<p> -<a href="../api_c/memp_fcreate.html">DB_ENV->memp_fcreate</a>, -<a href="../api_c/memp_fclose.html">DB_MPOOLFILE->close</a>, -<a href="../api_c/memp_fget.html">DB_MPOOLFILE->get</a>, -<a href="../api_c/memp_fopen.html">DB_MPOOLFILE->open</a>, -<a href="../api_c/memp_fput.html">DB_MPOOLFILE->put</a>, -<a href="../api_c/memp_fset.html">DB_MPOOLFILE->set</a>, -<a href="../api_c/memp_set_fileid.html">DB_MPOOLFILE->set_fileid</a>, -<a href="../api_c/memp_set_clear_len.html">DB_MPOOLFILE->set_clear_len</a>, -<a href="../api_c/memp_set_ftype.html">DB_MPOOLFILE->set_ftype</a>, -<a href="../api_c/memp_set_lsn_offset.html">DB_MPOOLFILE->set_lsn_offset</a>, -<a href="../api_c/memp_set_pgcookie.html">DB_MPOOLFILE->set_pgcookie</a> -and -<a href="../api_c/memp_fsync.html">DB_MPOOLFILE->sync</a>. +<a href="../api_c/memp_list.html">Memory Pools and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_c/memp_set_ftype.html b/db/docs/api_c/memp_set_ftype.html index 19b81b6be..08a7111de 100644 --- a/db/docs/api_c/memp_set_ftype.html +++ b/db/docs/api_c/memp_set_ftype.html @@ -1,4 +1,4 @@ -<!--Id: memp_set_ftype.so,v 10.4 2002/06/24 14:49:27 bostic Exp --> +<!--Id: memp_set_ftype.so,v 10.6 2002/08/24 18:23:32 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -26,46 +26,29 @@ int DB_MPOOLFILE->set_ftype(DB_MPOOLFILE *mpf, int ftype); </pre></h3> <h1>Description</h1> -<p>The DB_MPOOLFILE->set_ftype function specifies a file type for the purposes of +<p>The DB_MPOOLFILE->set_ftype method specifies a file type for the purposes of input or output processing of the files pages as they are read from or written to, the backing filesystem store. The <b>ftype</b> argument must be the same as a <b>ftype</b> argument previously specified to -the <a href="../api_c/memp_register.html">DB_ENV->memp_register</a> function. (See the <a href="../api_c/memp_register.html">DB_ENV->memp_register</a> +the <a href="../api_c/memp_register.html">DB_ENV->memp_register</a> method. (See the <a href="../api_c/memp_register.html">DB_ENV->memp_register</a> documentation for more information.) -<p>The DB_MPOOLFILE->set_ftype function configures a file in the memory pool, not only -operations performed using the specified <a href="../api_c/memp_fcreate.html">DB_MPOOLFILE</a> handle. +<p>The DB_MPOOLFILE->set_ftype method configures a file in the memory pool, not only +operations performed using the specified <a href="../api_c/mempfile_class.html">DB_MPOOLFILE</a> handle. <p>The DB_MPOOLFILE->set_ftype interface may not be called after the <a href="../api_c/memp_fopen.html">DB_MPOOLFILE->open</a> interface is called. If the file is already open in the memory pool when <a href="../api_c/memp_fopen.html">DB_MPOOLFILE->open</a> is called, the information specified to DB_MPOOLFILE->set_ftype will replace the existing information. -<p>The DB_MPOOLFILE->set_ftype function returns a non-zero error value on failure and 0 on success. +<p>The DB_MPOOLFILE->set_ftype method returns a non-zero error value on failure and 0 on success. <h1>Errors</h1> -<p>The DB_MPOOLFILE->set_ftype function may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions. -If a catastrophic error has occurred, the DB_MPOOLFILE->set_ftype function may fail and +<p>The DB_MPOOLFILE->set_ftype method may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions. +If a catastrophic error has occurred, the DB_MPOOLFILE->set_ftype method may fail and return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a>, in which case all subsequent Berkeley DB calls will fail in the same way. +<h1>Class</h1> +<a href="../api_c/env_class.html">DB_ENV</a>, <a href="../api_c/mempfile_class.html">DB_MPOOLFILE</a> <h1>See Also</h1> -<a href="../api_c/env_set_cachesize.html">DB_ENV->set_cachesize</a>, -<a href="../api_c/env_set_mp_mmapsize.html">DB_ENV->set_mp_mmapsize</a>, -<a href="../api_c/memp_register.html">DB_ENV->memp_register</a>, -<a href="../api_c/memp_stat.html">DB_ENV->memp_stat</a>, -<a href="../api_c/memp_sync.html">DB_ENV->memp_sync</a>, -<a href="../api_c/memp_trickle.html">DB_ENV->memp_trickle</a>, -<p> -<a href="../api_c/memp_fcreate.html">DB_ENV->memp_fcreate</a>, -<a href="../api_c/memp_fclose.html">DB_MPOOLFILE->close</a>, -<a href="../api_c/memp_fget.html">DB_MPOOLFILE->get</a>, -<a href="../api_c/memp_fopen.html">DB_MPOOLFILE->open</a>, -<a href="../api_c/memp_fput.html">DB_MPOOLFILE->put</a>, -<a href="../api_c/memp_fset.html">DB_MPOOLFILE->set</a>, -<a href="../api_c/memp_set_fileid.html">DB_MPOOLFILE->set_fileid</a>, -<a href="../api_c/memp_set_clear_len.html">DB_MPOOLFILE->set_clear_len</a>, -<a href="../api_c/memp_set_ftype.html">DB_MPOOLFILE->set_ftype</a>, -<a href="../api_c/memp_set_lsn_offset.html">DB_MPOOLFILE->set_lsn_offset</a>, -<a href="../api_c/memp_set_pgcookie.html">DB_MPOOLFILE->set_pgcookie</a> -and -<a href="../api_c/memp_fsync.html">DB_MPOOLFILE->sync</a>. +<a href="../api_c/memp_list.html">Memory Pools and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_c/memp_set_lsn_offset.html b/db/docs/api_c/memp_set_lsn_offset.html index fbc6e8a22..232d60d96 100644 --- a/db/docs/api_c/memp_set_lsn_offset.html +++ b/db/docs/api_c/memp_set_lsn_offset.html @@ -1,4 +1,4 @@ -<!--Id: memp_set_lsn_offset.so,v 10.4 2002/06/24 14:49:28 bostic Exp --> +<!--Id: memp_set_lsn_offset.so,v 10.6 2002/08/24 18:23:33 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -26,45 +26,28 @@ int DB_MPOOLFILE->set_lsn_offset(DB_MPOOLFILE *mpf, int32_t lsn_offset); </pre></h3> <h1>Description</h1> -<p>The DB_MPOOLFILE->set_lsn_offset function specifies the zero-based byte offset -of a log sequence number (<a href="../api_c/db_lsn.html">DB_LSN</a>) on the file's pages, for the +<p>The DB_MPOOLFILE->set_lsn_offset method specifies the zero-based byte offset +of a log sequence number (<a href="../api_c/lsn_class.html">DB_LSN</a>) on the file's pages, for the purposes of page-flushing as part of transaction checkpoint. (See the <a href="../api_c/memp_sync.html">DB_ENV->memp_sync</a> documentation for more information.) -<p>The DB_MPOOLFILE->set_lsn_offset function configures a file in the memory pool, not only -operations performed using the specified <a href="../api_c/memp_fcreate.html">DB_MPOOLFILE</a> handle. +<p>The DB_MPOOLFILE->set_lsn_offset method configures a file in the memory pool, not only +operations performed using the specified <a href="../api_c/mempfile_class.html">DB_MPOOLFILE</a> handle. <p>The DB_MPOOLFILE->set_lsn_offset interface may not be called after the <a href="../api_c/memp_fopen.html">DB_MPOOLFILE->open</a> interface is called. If the file is already open in the memory pool when <a href="../api_c/memp_fopen.html">DB_MPOOLFILE->open</a> is called, the information specified to DB_MPOOLFILE->set_lsn_offset must be consistent with the existing file or an error will be returned. -<p>The DB_MPOOLFILE->set_lsn_offset function returns a non-zero error value on failure and 0 on success. +<p>The DB_MPOOLFILE->set_lsn_offset method returns a non-zero error value on failure and 0 on success. <h1>Errors</h1> -<p>The DB_MPOOLFILE->set_lsn_offset function may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions. -If a catastrophic error has occurred, the DB_MPOOLFILE->set_lsn_offset function may fail and +<p>The DB_MPOOLFILE->set_lsn_offset method may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions. +If a catastrophic error has occurred, the DB_MPOOLFILE->set_lsn_offset method may fail and return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a>, in which case all subsequent Berkeley DB calls will fail in the same way. +<h1>Class</h1> +<a href="../api_c/env_class.html">DB_ENV</a>, <a href="../api_c/mempfile_class.html">DB_MPOOLFILE</a> <h1>See Also</h1> -<a href="../api_c/env_set_cachesize.html">DB_ENV->set_cachesize</a>, -<a href="../api_c/env_set_mp_mmapsize.html">DB_ENV->set_mp_mmapsize</a>, -<a href="../api_c/memp_register.html">DB_ENV->memp_register</a>, -<a href="../api_c/memp_stat.html">DB_ENV->memp_stat</a>, -<a href="../api_c/memp_sync.html">DB_ENV->memp_sync</a>, -<a href="../api_c/memp_trickle.html">DB_ENV->memp_trickle</a>, -<p> -<a href="../api_c/memp_fcreate.html">DB_ENV->memp_fcreate</a>, -<a href="../api_c/memp_fclose.html">DB_MPOOLFILE->close</a>, -<a href="../api_c/memp_fget.html">DB_MPOOLFILE->get</a>, -<a href="../api_c/memp_fopen.html">DB_MPOOLFILE->open</a>, -<a href="../api_c/memp_fput.html">DB_MPOOLFILE->put</a>, -<a href="../api_c/memp_fset.html">DB_MPOOLFILE->set</a>, -<a href="../api_c/memp_set_fileid.html">DB_MPOOLFILE->set_fileid</a>, -<a href="../api_c/memp_set_clear_len.html">DB_MPOOLFILE->set_clear_len</a>, -<a href="../api_c/memp_set_ftype.html">DB_MPOOLFILE->set_ftype</a>, -<a href="../api_c/memp_set_lsn_offset.html">DB_MPOOLFILE->set_lsn_offset</a>, -<a href="../api_c/memp_set_pgcookie.html">DB_MPOOLFILE->set_pgcookie</a> -and -<a href="../api_c/memp_fsync.html">DB_MPOOLFILE->sync</a>. +<a href="../api_c/memp_list.html">Memory Pools and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_c/memp_set_pgcookie.html b/db/docs/api_c/memp_set_pgcookie.html index 7e9e76133..52c8c0ee4 100644 --- a/db/docs/api_c/memp_set_pgcookie.html +++ b/db/docs/api_c/memp_set_pgcookie.html @@ -1,4 +1,4 @@ -<!--Id: memp_set_pgcookie.so,v 10.4 2002/06/24 14:49:28 bostic Exp --> +<!--Id: memp_set_pgcookie.so,v 10.6 2002/08/24 18:23:33 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -26,45 +26,28 @@ int DB_MPOOLFILE->set_pgcookie(DB_MPOOLFILE *mpf, DBT *pgcookie); </pre></h3> <h1>Description</h1> -<p>The DB_MPOOLFILE->set_pgcookie function specifies a byte string that is provided +<p>The DB_MPOOLFILE->set_pgcookie method specifies a byte string that is provided to the functions registered to do input or output processing of the file's pages as they are read from or written to, the backing filesystem store. (See the <a href="../api_c/memp_register.html">DB_ENV->memp_register</a> documentation for more information.) -<p>The DB_MPOOLFILE->set_pgcookie function configures a file in the memory pool, not only -operations performed using the specified <a href="../api_c/memp_fcreate.html">DB_MPOOLFILE</a> handle. +<p>The DB_MPOOLFILE->set_pgcookie method configures a file in the memory pool, not only +operations performed using the specified <a href="../api_c/mempfile_class.html">DB_MPOOLFILE</a> handle. <p>The DB_MPOOLFILE->set_pgcookie interface may not be called after the <a href="../api_c/memp_fopen.html">DB_MPOOLFILE->open</a> interface is called. If the file is already open in the memory pool when <a href="../api_c/memp_fopen.html">DB_MPOOLFILE->open</a> is called, the information specified to DB_MPOOLFILE->set_pgcookie will replace the existing information. -<p>The DB_MPOOLFILE->set_pgcookie function returns a non-zero error value on failure and 0 on success. +<p>The DB_MPOOLFILE->set_pgcookie method returns a non-zero error value on failure and 0 on success. <h1>Errors</h1> -<p>The DB_MPOOLFILE->set_pgcookie function may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions. -If a catastrophic error has occurred, the DB_MPOOLFILE->set_pgcookie function may fail and +<p>The DB_MPOOLFILE->set_pgcookie method may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions. +If a catastrophic error has occurred, the DB_MPOOLFILE->set_pgcookie method may fail and return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a>, in which case all subsequent Berkeley DB calls will fail in the same way. +<h1>Class</h1> +<a href="../api_c/env_class.html">DB_ENV</a>, <a href="../api_c/mempfile_class.html">DB_MPOOLFILE</a> <h1>See Also</h1> -<a href="../api_c/env_set_cachesize.html">DB_ENV->set_cachesize</a>, -<a href="../api_c/env_set_mp_mmapsize.html">DB_ENV->set_mp_mmapsize</a>, -<a href="../api_c/memp_register.html">DB_ENV->memp_register</a>, -<a href="../api_c/memp_stat.html">DB_ENV->memp_stat</a>, -<a href="../api_c/memp_sync.html">DB_ENV->memp_sync</a>, -<a href="../api_c/memp_trickle.html">DB_ENV->memp_trickle</a>, -<p> -<a href="../api_c/memp_fcreate.html">DB_ENV->memp_fcreate</a>, -<a href="../api_c/memp_fclose.html">DB_MPOOLFILE->close</a>, -<a href="../api_c/memp_fget.html">DB_MPOOLFILE->get</a>, -<a href="../api_c/memp_fopen.html">DB_MPOOLFILE->open</a>, -<a href="../api_c/memp_fput.html">DB_MPOOLFILE->put</a>, -<a href="../api_c/memp_fset.html">DB_MPOOLFILE->set</a>, -<a href="../api_c/memp_set_fileid.html">DB_MPOOLFILE->set_fileid</a>, -<a href="../api_c/memp_set_clear_len.html">DB_MPOOLFILE->set_clear_len</a>, -<a href="../api_c/memp_set_ftype.html">DB_MPOOLFILE->set_ftype</a>, -<a href="../api_c/memp_set_lsn_offset.html">DB_MPOOLFILE->set_lsn_offset</a>, -<a href="../api_c/memp_set_pgcookie.html">DB_MPOOLFILE->set_pgcookie</a> -and -<a href="../api_c/memp_fsync.html">DB_MPOOLFILE->sync</a>. +<a href="../api_c/memp_list.html">Memory Pools and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_c/rep_elect.html b/db/docs/api_c/rep_elect.html index 76b396dc3..a38e86660 100644 --- a/db/docs/api_c/rep_elect.html +++ b/db/docs/api_c/rep_elect.html @@ -1,4 +1,4 @@ -<!--Id: rep_elect.so,v 1.6 2002/06/24 14:49:30 bostic Exp --> +<!--Id: rep_elect.so,v 1.8 2002/08/29 03:25:54 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -27,7 +27,7 @@ DB_ENV->rep_elect(DB_ENV *env, int nsites, int priority, u_int32_t timeout, int *envid); </pre></h3> <h1>Description</h1> -<p>The DB_ENV->rep_elect function holds an election for the master of a replication +<p>The DB_ENV->rep_elect method holds an election for the master of a replication group, returning the new master's ID in the <b>envid</b> parameter. <p>The <b>nsites</b> parameter indicates the number of environments that the application believes are in the replication group. This number is @@ -46,7 +46,7 @@ environment priorities</a> for more information). <p>The <b>timeout</b> parameter specifies a timeout period for an election. If the election has not completed after <b>timeout</b> microseconds, the thread will return DB_REP_UNAVAIL. -<p>The DB_ENV->rep_elect function either returns successfully, with the new +<p>The DB_ENV->rep_elect method either returns successfully, with the new master's environment ID in the memory pointed to by the <b>envid</b> parameter, or it will return DB_REP_UNAVAIL if the participating group members were unable to elect a new master for any reason. In the @@ -55,25 +55,23 @@ previous master, or the ID of the current environment. The application is responsible for adjusting its usage of the other environments in the replication group, including directing all database updates to the newly selected master, in accordance with the results of this election. -<p>The thread of control that calls the DB_ENV->rep_elect function must not be the +<p>The thread of control that calls the DB_ENV->rep_elect method must not be the thread of control that processes incoming messages; processing the incoming messages is necessary to successfully complete an election. -<p>The DB_ENV->rep_elect function returns a non-zero error value on failure and 0 on success. +<p>The DB_ENV->rep_elect method returns a non-zero error value on failure and 0 on success. <h1>Errors</h1> -<p>The DB_ENV->rep_elect function may fail and return a non-zero error for the following conditions: +<p>The DB_ENV->rep_elect method may fail and return a non-zero error for the following conditions: <p><dl compact> <p><dt>DB_REP_UNAVAIL<dd>The replication group was unable to elect a master. </dl> -<p>The DB_ENV->rep_elect function may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions. -If a catastrophic error has occurred, the DB_ENV->rep_elect function may fail and +<p>The DB_ENV->rep_elect method may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions. +If a catastrophic error has occurred, the DB_ENV->rep_elect method may fail and return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a>, in which case all subsequent Berkeley DB calls will fail in the same way. +<h1>Class</h1> +<a href="../api_c/env_class.html">DB_ENV</a> <h1>See Also</h1> -<a href="../api_c/rep_start.html">DB_ENV->rep_start</a>, -<a href="../api_c/rep_elect.html">DB_ENV->rep_elect</a>, -<a href="../api_c/rep_message.html">DB_ENV->rep_process_message</a> -and -<a href="../api_c/rep_transport.html">DB_ENV->set_rep_transport</a>. +<a href="../api_c/rep_list.html">Replication and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_c/rep_message.html b/db/docs/api_c/rep_message.html index 56d7c8078..ec94114e6 100644 --- a/db/docs/api_c/rep_message.html +++ b/db/docs/api_c/rep_message.html @@ -1,4 +1,4 @@ -<!--Id: rep_message.so,v 1.9 2002/07/02 15:22:24 bostic Exp --> +<!--Id: rep_message.so,v 1.11 2002/08/29 03:26:00 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -27,7 +27,7 @@ DB_ENV->rep_process_message(DB_ENV *env, DBT *control, DBT *rec, int *envid) </pre></h3> <h1>Description</h1> -<p>The DB_ENV->rep_process_message function processes an incoming replication +<p>The DB_ENV->rep_process_message method processes an incoming replication message sent by a member of the replication group to the local database environment. <p>The <b>rec</b> and <b>control</b> parameters should reference a copy @@ -38,48 +38,46 @@ corresponds to the environment that sent the message to be processed (see <a href="../ref/rep/id.html">Replication environment IDs</a> for more information). <p>For implementation reasons, all incoming replication messages must be -processed using the same <a href="../api_c/env_create.html">DB_ENV</a> handle. It is not required that +processed using the same <a href="../api_c/env_class.html">DB_ENV</a> handle. It is not required that a single thread of control process all messages, only that all threads of control processing messages use the same handle. <p> -If a new master has been elected, the DB_ENV->rep_process_message function will return DB_REP_NEWMASTER. +If a new master has been elected, the DB_ENV->rep_process_message method will return DB_REP_NEWMASTER. The <b>envid</b> parameter contains the environment ID of the new master. If the recipient of this error return has been made master, it is the application's responsibility to begin acting as the master environment. <p> -If the system received contact information from a new environment, the DB_ENV->rep_process_message function will return DB_REP_NEWSITE. +If the system received contact information from a new environment, the DB_ENV->rep_process_message method will return DB_REP_NEWSITE. The <b>rec</b> parameter contains the opaque data specified in the <b>cdata</b> parameter to the <a href="../api_c/rep_start.html">DB_ENV->rep_start</a>. The application should take whatever action is needed to establish a communication channel with this new environment. <p> -If the replication group has more than one master, the DB_ENV->rep_process_message function will return DB_REP_DUPMASTER. +If the replication group has more than one master, the DB_ENV->rep_process_message method will return DB_REP_DUPMASTER. The application should reconfigure itself as a client by calling the -<a href="../api_c/rep_start.html">DB_ENV->rep_start</a> function, and then call for an election by calling +<a href="../api_c/rep_start.html">DB_ENV->rep_start</a> method, and then call for an election by calling <a href="../api_c/rep_elect.html">DB_ENV->rep_elect</a>. <p> -If an election is needed, the DB_ENV->rep_process_message function will return DB_REP_HOLDELECTION. +If an election is needed, the DB_ENV->rep_process_message method will return DB_REP_HOLDELECTION. The application should call for an election by calling <a href="../api_c/rep_elect.html">DB_ENV->rep_elect</a>. <p> If the current environment's logs are too far out of date with respect -to the master to be automatically synchronized, the DB_ENV->rep_process_message function will return DB_REP_OUTDATED. The +to the master to be automatically synchronized, the DB_ENV->rep_process_message method will return DB_REP_OUTDATED. The application should copy over a hot backup of the environment, run recovery, and restart the client. <p> -Otherwise, the DB_ENV->rep_process_message function returns a non-zero error value on failure and 0 on success. +Otherwise, the DB_ENV->rep_process_message method returns a non-zero error value on failure and 0 on success. <h1>Errors</h1> -<p>The DB_ENV->rep_process_message function may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions. -If a catastrophic error has occurred, the DB_ENV->rep_process_message function may fail and +<p>The DB_ENV->rep_process_message method may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions. +If a catastrophic error has occurred, the DB_ENV->rep_process_message method may fail and return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a>, in which case all subsequent Berkeley DB calls will fail in the same way. +<h1>Class</h1> +<a href="../api_c/env_class.html">DB_ENV</a> <h1>See Also</h1> -<a href="../api_c/rep_start.html">DB_ENV->rep_start</a>, -<a href="../api_c/rep_elect.html">DB_ENV->rep_elect</a>, -<a href="../api_c/rep_message.html">DB_ENV->rep_process_message</a> -and -<a href="../api_c/rep_transport.html">DB_ENV->set_rep_transport</a>. +<a href="../api_c/rep_list.html">Replication and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_c/rep_start.html b/db/docs/api_c/rep_start.html index ab320ccbd..b560517ac 100644 --- a/db/docs/api_c/rep_start.html +++ b/db/docs/api_c/rep_start.html @@ -1,4 +1,4 @@ -<!--Id: rep_start.so,v 1.3 2002/06/24 14:49:30 bostic Exp --> +<!--Id: rep_start.so,v 1.5 2002/08/29 03:26:00 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -26,7 +26,7 @@ int DB_ENV->rep_start(DB_ENV *env, DBT *cdata, u_int32_t flags); </pre></h3> <h1>Description</h1> -<p>The DB_ENV->rep_start function configures the database environment as a client +<p>The DB_ENV->rep_start method configures the database environment as a client or master in a group of replicated database environments. Replication master environments are the only database environments where replicated databases may be modified. Replication client environments are @@ -34,8 +34,8 @@ read-only as long as they are clients. Replication client environments may be upgraded to be replication master environments in the case that the current master fails or there is no master present. <p>The enclosing database environment must already have been opened by -calling the <a href="../api_c/env_open.html">DB_ENV->open</a> function and must already have been configured -to send replication messages by calling the <a href="../api_c/rep_transport.html">DB_ENV->set_rep_transport</a> function. +calling the <a href="../api_c/env_open.html">DB_ENV->open</a> method and must already have been configured +to send replication messages by calling the <a href="../api_c/rep_transport.html">DB_ENV->set_rep_transport</a> method. <p>The <b>cdata</b> parameter is an opaque data item that is sent over the communication infrastructure when the client or master comes online (see <a href="../ref/rep/newsite.html">Connecting to a new site</a> for @@ -47,25 +47,23 @@ should be NULL. <p><dt><a name="DB_REP_LOGSONLY">DB_REP_LOGSONLY</a><dd>Configure the environment as a log files-only client. <p><dt><a name="DB_REP_MASTER">DB_REP_MASTER</a><dd>Configure the environment as a replication master. </dl> -<p>The DB_ENV->rep_start function returns a non-zero error value on failure and 0 on success. +<p>The DB_ENV->rep_start method returns a non-zero error value on failure and 0 on success. <h1>Errors</h1> -<p>The DB_ENV->rep_start function may fail and return a non-zero error for the following conditions: +<p>The DB_ENV->rep_start method may fail and return a non-zero error for the following conditions: <p><dl compact> <p><dt>EINVAL<dd>An invalid flag value or parameter was specified. <p>The environment was not already configured to communicate with a replication group by a call to <a href="../api_c/rep_transport.html">DB_ENV->set_rep_transport</a>. <p>The environment was not already opened. </dl> -<p>The DB_ENV->rep_start function may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions. -If a catastrophic error has occurred, the DB_ENV->rep_start function may fail and +<p>The DB_ENV->rep_start method may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions. +If a catastrophic error has occurred, the DB_ENV->rep_start method may fail and return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a>, in which case all subsequent Berkeley DB calls will fail in the same way. +<h1>Class</h1> +<a href="../api_c/env_class.html">DB_ENV</a> <h1>See Also</h1> -<a href="../api_c/rep_start.html">DB_ENV->rep_start</a>, -<a href="../api_c/rep_elect.html">DB_ENV->rep_elect</a>, -<a href="../api_c/rep_message.html">DB_ENV->rep_process_message</a> -and -<a href="../api_c/rep_transport.html">DB_ENV->set_rep_transport</a>. +<a href="../api_c/rep_list.html">Replication and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_c/rep_transport.html b/db/docs/api_c/rep_transport.html index dd935940a..73b549858 100644 --- a/db/docs/api_c/rep_transport.html +++ b/db/docs/api_c/rep_transport.html @@ -1,4 +1,4 @@ -<!--Id: rep_transport.so,v 1.7 2002/06/24 14:49:30 bostic Exp --> +<!--Id: rep_transport.so,v 1.9 2002/08/29 03:26:00 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -28,7 +28,7 @@ DB_ENV->set_rep_transport(DB_ENV *env, int envid, const DBT *control, const DBT *rec, int envid, u_int32_t flags)); </pre></h3> <h1>Description</h1> -<p>The DB_ENV->set_rep_transport function initializes the communication infrastructure +<p>The DB_ENV->set_rep_transport method initializes the communication infrastructure for a database environment participating in a replicated application. <p>The <b>envid</b> parameter is the local environment's ID. It must be a positive integer and uniquely identify this Berkeley DB database environment @@ -71,23 +71,21 @@ otherwise, any error from the <b>send</b> interface will be ignored. <p>It may sometimes be useful to pass application-specific data to the <b>send</b> interface; see <a href="../ref/env/faq.html">Environment FAQ</a> for a discussion on how to do this. -<p>The DB_ENV->set_rep_transport function configures operations performed using the specified -<a href="../api_c/env_create.html">DB_ENV</a> handle, not all operations performed on the underlying +<p>The DB_ENV->set_rep_transport method configures operations performed using the specified +<a href="../api_c/env_class.html">DB_ENV</a> handle, not all operations performed on the underlying database environment. <p>The DB_ENV->set_rep_transport interface may be called at any time during the life of the application. -<p>The DB_ENV->set_rep_transport function returns a non-zero error value on failure and 0 on success. +<p>The DB_ENV->set_rep_transport method returns a non-zero error value on failure and 0 on success. <h1>Errors</h1> -<p>The DB_ENV->set_rep_transport function may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions. -If a catastrophic error has occurred, the DB_ENV->set_rep_transport function may fail and +<p>The DB_ENV->set_rep_transport method may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions. +If a catastrophic error has occurred, the DB_ENV->set_rep_transport method may fail and return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a>, in which case all subsequent Berkeley DB calls will fail in the same way. +<h1>Class</h1> +<a href="../api_c/env_class.html">DB_ENV</a> <h1>See Also</h1> -<a href="../api_c/rep_start.html">DB_ENV->rep_start</a>, -<a href="../api_c/rep_elect.html">DB_ENV->rep_elect</a>, -<a href="../api_c/rep_message.html">DB_ENV->rep_process_message</a> -and -<a href="../api_c/rep_transport.html">DB_ENV->set_rep_transport</a>. +<a href="../api_c/rep_list.html">Replication and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_c/txn_set_timeout.html b/db/docs/api_c/txn_set_timeout.html index 6c008523c..310e26a56 100644 --- a/db/docs/api_c/txn_set_timeout.html +++ b/db/docs/api_c/txn_set_timeout.html @@ -1,4 +1,4 @@ -<!--Id: txn_set_timeout.so,v 10.6 2002/06/24 14:49:36 bostic Exp --> +<!--Id: txn_set_timeout.so,v 10.8 2002/08/29 03:26:14 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -26,7 +26,7 @@ u_int32_t DB_TXN->set_timeout(DB_TXN *tid, db_timeout_t timeout, u_int32_t flags); </pre></h3> <h1>Description</h1> -<p>The DB_TXN->set_timeout function sets timeout values for locks or +<p>The DB_TXN->set_timeout method sets timeout values for locks or transactions for the specified transaction. The timeout value is currently specified as an unsigned 32-bit number of microseconds, limiting the maximum timeout to roughly 71 minutes. @@ -47,37 +47,25 @@ is performed, the accuracy of the timeout depends on how often deadlock detection is performed. <p>Timeout values may be specified for the database environment as a whole. See <a href="../api_c/env_set_timeout.html">DB_ENV->set_timeout</a> and for more information. -<p>The DB_TXN->set_timeout function configures operations performed on the underlying +<p>The DB_TXN->set_timeout method configures operations performed on the underlying transaction, not only operations performed using the specified -<a href="../api_c/txn_begin.html">DB_TXN</a> handle. +<a href="../api_c/txn_class.html">DB_TXN</a> handle. <p>The DB_TXN->set_timeout interface may be called at any time during the life of the application. -<p>The DB_TXN->set_timeout function returns a non-zero error value on failure and 0 on success. +<p>The DB_TXN->set_timeout method returns a non-zero error value on failure and 0 on success. <h1>Errors</h1> -<p>The DB_TXN->set_timeout function may fail and return a non-zero error for the following conditions: +<p>The DB_TXN->set_timeout method may fail and return a non-zero error for the following conditions: <p><dl compact> <p><dt>EINVAL<dd>An invalid flag value or parameter was specified. </dl> -<p>The DB_TXN->set_timeout function may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions. -If a catastrophic error has occurred, the DB_TXN->set_timeout function may fail and +<p>The DB_TXN->set_timeout method may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions. +If a catastrophic error has occurred, the DB_TXN->set_timeout method may fail and return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a>, in which case all subsequent Berkeley DB calls will fail in the same way. +<h1>Class</h1> +<a href="../api_c/env_class.html">DB_ENV</a>, <a href="../api_c/txn_class.html">DB_TXN</a> <h1>See Also</h1> -<a href="../api_c/env_set_tx_max.html">DB_ENV->set_tx_max</a>, -<a href="../api_c/env_set_tx_timestamp.html">DB_ENV->set_tx_timestamp</a>, -<a href="../api_c/txn_begin.html">DB_ENV->txn_begin</a>, -<a href="../api_c/txn_checkpoint.html">DB_ENV->txn_checkpoint</a>, -<a href="../api_c/txn_recover.html">DB_ENV->txn_recover</a> -and -<a href="../api_c/txn_stat.html">DB_ENV->txn_stat</a>. -<p> -<a href="../api_c/txn_abort.html">DB_TXN->abort</a>, -<a href="../api_c/txn_commit.html">DB_TXN->commit</a>, -<a href="../api_c/txn_discard.html">DB_TXN->discard</a>, -<a href="../api_c/txn_id.html">DB_TXN->id</a>, -<a href="../api_c/txn_prepare.html">DB_TXN->prepare</a> -and -<a href="../api_c/txn_set_timeout.html">DB_TXN->set_timeout</a>. +<a href="../api_c/txn_list.html">Transaction Subsystem and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_cxx/c_index.html b/db/docs/api_cxx/c_index.html index 3958b8f0a..107e1c80d 100644 --- a/db/docs/api_cxx/c_index.html +++ b/db/docs/api_cxx/c_index.html @@ -1,4 +1,4 @@ -<!--Id: c_index.so,v 10.96 2002/07/24 05:06:08 bostic Exp --> +<!--Id: c_index.so,v 10.98 2002/08/24 18:22:34 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -12,7 +12,7 @@ <h1 align=center>Berkeley DB: C++ Interface</h1> <p><table border=1 align=center> <tr><th>Section</th><th>Class/Method</th><th>Description</th></tr> -<tr><td><b>Database Environment</b></td><td><a href="../api_cxx/dbenv_class.html">DbEnv</a></td><td>Create an environment handle</td></tr> +<tr><td><b>Database Environment</b></td><td><a href="../api_cxx/env_class.html">DbEnv</a></td><td>Create an environment handle</td></tr> <tr><td><br></td><td><a href="../api_cxx/env_close.html">DbEnv::close</a></td><td>Close an environment</td></tr> <tr><td><br></td><td><a href="../api_cxx/env_dbremove.html">DbEnv::dbremove</a></td><td>Remove a database</td></tr> <tr><td><br></td><td><a href="../api_cxx/env_dbrename.html">DbEnv::dbrename</a></td><td>Rename a database</td></tr> @@ -36,8 +36,8 @@ <tr><td><br></td><td><a href="../api_cxx/env_set_rpc_server.html">DbEnv::set_rpc_server</a></td><td>Establish an RPC server connection</td></tr> <tr><td><br></td><td><a href="../api_cxx/env_set_shm_key.html">DbEnv::set_shm_key</a></td><td>Set system memory shared segment ID</td></tr> <tr><td><br></td><td><a href="../api_cxx/env_set_tas_spins.html">DbEnv::set_tas_spins</a></td><td>Set the number of test-and-set spins</td></tr> -<tr><td><br></td><td><a href="../api_cxx/env_set_tmp_dir.html">DbEnv::set_tmp_dir</a></td><td>Set the environment temporary file directory</td></tr> <tr><td><br></td><td><a href="../api_cxx/env_set_timeout.html">DbEnv::set_timeout</a></td><td>Set lock and transaction timeout</td></tr> +<tr><td><br></td><td><a href="../api_cxx/env_set_tmp_dir.html">DbEnv::set_tmp_dir</a></td><td>Set the environment temporary file directory</td></tr> <tr><td><br></td><td><a href="../api_cxx/env_set_verbose.html">DbEnv::set_verbose</a></td><td>Set verbose messages</td></tr> <tr><td><b>Database Operations</b></td><td><a href="../api_cxx/db_class.html">Db</a></td><td>Create a database handle</td></tr> <tr><td><br></td><td><a href="../api_cxx/db_associate.html">Db::associate</a></td><td>Associate a secondary index</td></tr> @@ -67,6 +67,7 @@ <tr><td><br></td><td><a href="../api_cxx/db_set_encrypt.html">Db::set_encrypt</a></td><td>Set the database cryptographic key</td></tr> <tr><td><br></td><td><a href="../api_cxx/db_set_errcall.html">Db::set_errcall</a></td><td>Set error message callback</td></tr> <tr><td><br></td><td><a href="../api_cxx/db_set_errfile.html">Db::set_errfile</a></td><td>Set error message FILE</td></tr> +<tr><td><br></td><td><a href="../api_cxx/db_set_error_stream.html">Db::set_error_stream</a></td><td>Set error message output stream</td></tr> <tr><td><br></td><td><a href="../api_cxx/db_set_errpfx.html">Db::set_errpfx</a></td><td>Set error message prefix</td></tr> <tr><td><br></td><td><a href="../api_cxx/db_set_feedback.html">Db::set_feedback</a></td><td>Set feedback callback</td></tr> <tr><td><br></td><td><a href="../api_cxx/db_set_flags.html">Db::set_flags</a></td><td>General database configuration</td></tr> @@ -161,11 +162,9 @@ <tr><td><br></td><td><a href="../api_cxx/rep_start.html">DbEnv::rep_start</a></td><td>Configure an environment for replication</td></tr> <tr><td><br></td><td><a href="../api_cxx/rep_stat.html">DbEnv::rep_stat</a></td><td>Replication statistics</td></tr> <tr><td><b>Exceptions</b></td><td><a href="../api_cxx/except_class.html">DbException</a></td><td><b>Exception Class for Berkeley DB Activity</b></td></tr> -<tr><td><br></td><td><a href="../api_cxx/get_errno.html">DbException::get_errno</a></td><td>Get the error value</td></tr> -<tr><td><br></td><td><a href="../api_cxx/what.html">DbException::what</a></td><td>Get the error string</td></tr> <tr><td><br></td><td><a href="../api_cxx/deadlock_class.html">DbDeadlockException</a></td><td><b>Exception Class for deadlocks</b></td></tr> <tr><td><br></td><td><a href="../api_cxx/lockng_class.html">DbLockNotGrantedException</a></td><td><b>Exception Class for lock request failures</b></td></tr> -<tr><td><br></td><td><a href="../api_cxx/mem_class.html">DbMemoryException</a></td><td><b>Exception Class for insufficient memory</b></td></tr> +<tr><td><br></td><td><a href="../api_cxx/memp_class.html">DbMemoryException</a></td><td><b>Exception Class for insufficient memory</b></td></tr> <tr><td><br></td><td><a href="../api_cxx/runrec_class.html">DbRunRecoveryException</a></td><td><b>Exception Class for failures requiring recovery</b></td></tr> </table> <p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font> diff --git a/db/docs/api_cxx/env_set_timeout.html b/db/docs/api_cxx/env_set_timeout.html index 26a6b719c..4039a021c 100644 --- a/db/docs/api_cxx/env_set_timeout.html +++ b/db/docs/api_cxx/env_set_timeout.html @@ -1,4 +1,4 @@ -<!--Id: env_set_timeout.so,v 10.6 2002/06/24 14:49:21 bostic Exp --> +<!--Id: env_set_timeout.so,v 10.8 2002/08/29 03:24:42 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -61,7 +61,7 @@ detection is performed. on a per-lock or per-transaction basis. See <a href="../api_cxx/lock_vec.html">DbEnv::lock_vec</a> and <a href="../api_cxx/txn_set_timeout.html">DbTxn::set_timeout</a> for more information. <p>The DbEnv::set_timeout method configures a database environment, not only operations -performed using the specified <a href="../api_cxx/dbenv_class.html">DbEnv</a> handle. +performed using the specified <a href="../api_cxx/env_class.html">DbEnv</a> handle. <p>The DbEnv::set_timeout interface may be called at any time during the life of the application. <p>The DbEnv::set_timeout method either returns a non-zero error value or throws an exception that @@ -77,48 +77,9 @@ either return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVE <a href="../api_cxx/runrec_class.html">DbRunRecoveryException</a>, in which case all subsequent Berkeley DB calls will fail in the same way. <h1>Class</h1> -<a href="../api_cxx/dbenv_class.html">DbEnv</a> +<a href="../api_cxx/env_class.html">DbEnv</a> <h1>See Also</h1> -<a href="../api_cxx/env_close.html">DbEnv::close</a>, -<a href="../api_cxx/env_dbremove.html">DbEnv::dbremove</a>, -<a href="../api_cxx/env_dbrename.html">DbEnv::dbrename</a>, -<a href="../api_cxx/env_err.html">DbEnv::err</a>, -<a href="../api_cxx/env_err.html">DbEnv::errx</a>, -<a href="../api_cxx/env_open.html">DbEnv::open</a>, -<a href="../api_cxx/env_remove.html">DbEnv::remove</a>, -<a href="../api_cxx/env_set_alloc.html">DbEnv::set_alloc</a>, -<a href="../api_cxx/env_set_app_dispatch.html">DbEnv::set_app_dispatch</a>, -<a href="../api_cxx/env_set_cachesize.html">DbEnv::set_cachesize</a>, -<a href="../api_cxx/env_set_data_dir.html">DbEnv::set_data_dir</a>, -<a href="../api_cxx/env_set_encrypt.html">DbEnv::set_encrypt</a>, -<a href="../api_cxx/env_set_errcall.html">DbEnv::set_errcall</a>, -<a href="../api_cxx/env_set_errfile.html">DbEnv::set_errfile</a>, -<a href="../api_cxx/env_set_error_stream.html">DbEnv::set_error_stream</a>, -<a href="../api_cxx/env_set_errpfx.html">DbEnv::set_errpfx</a>, -<a href="../api_cxx/env_set_feedback.html">DbEnv::set_feedback</a>, -<a href="../api_cxx/env_set_flags.html">DbEnv::set_flags</a>, -<a href="../api_cxx/env_set_lg_bsize.html">DbEnv::set_lg_bsize</a>, -<a href="../api_cxx/env_set_lg_dir.html">DbEnv::set_lg_dir</a>, -<a href="../api_cxx/env_set_lg_max.html">DbEnv::set_lg_max</a>, -<a href="../api_cxx/env_set_lg_regionmax.html">DbEnv::set_lg_regionmax</a>, -<a href="../api_cxx/env_set_lk_conflicts.html">DbEnv::set_lk_conflicts</a>, -<a href="../api_cxx/env_set_lk_detect.html">DbEnv::set_lk_detect</a>, -<a href="../api_cxx/env_set_lk_max_lockers.html">DbEnv::set_lk_max_lockers</a>, -<a href="../api_cxx/env_set_lk_max_locks.html">DbEnv::set_lk_max_locks</a>, -<a href="../api_cxx/env_set_lk_max_objects.html">DbEnv::set_lk_max_objects</a>, -<a href="../api_cxx/env_set_mp_mmapsize.html">DbEnv::set_mp_mmapsize</a>, -<a href="../api_cxx/env_set_paniccall.html">DbEnv::set_paniccall</a>, -<a href="../api_cxx/env_set_rpc_server.html">DbEnv::set_rpc_server</a>, -<a href="../api_cxx/env_set_shm_key.html">DbEnv::set_shm_key</a>, -<a href="../api_cxx/env_set_tas_spins.html">DbEnv::set_tas_spins</a>, -<a href="../api_cxx/env_set_timeout.html">DbEnv::set_timeout</a>, -<a href="../api_cxx/env_set_tmp_dir.html">DbEnv::set_tmp_dir</a>, -<a href="../api_cxx/env_set_tx_max.html">DbEnv::set_tx_max</a>, -<a href="../api_cxx/env_set_tx_timestamp.html">DbEnv::set_tx_timestamp</a>, -<a href="../api_cxx/env_set_verbose.html">DbEnv::set_verbose</a>, -<a href="../api_cxx/env_strerror.html">DbEnv::strerror</a> -and -<a href="../api_cxx/env_version.html">DbEnv::version</a>. +<a href="../api_cxx/env_list.html">Database Environments and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_cxx/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_cxx/lock_id_free.html b/db/docs/api_cxx/lock_id_free.html index ee463e484..2320548a9 100644 --- a/db/docs/api_cxx/lock_id_free.html +++ b/db/docs/api_cxx/lock_id_free.html @@ -1,4 +1,4 @@ -<!--Id: lock_id_free.so,v 10.4 2002/06/24 14:49:23 bostic Exp --> +<!--Id: lock_id_free.so,v 10.5 2002/08/18 21:16:37 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -27,7 +27,7 @@ DbEnv::lock_id_free(u_int32_t id); </pre></h3> <h1>Description</h1> <p>The DbEnv::lock_id_free method frees a locker ID allocated by the -DbEnv::lock_id method. +<a href="../api_cxx/lock_id.html">DbEnv::lock_id</a> method. <p>The DbEnv::lock_id_free method either returns a non-zero error value or throws an exception that encapsulates a non-zero error value on failure, and returns 0 on success. <h1>Errors</h1> @@ -41,21 +41,9 @@ either return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVE <a href="../api_cxx/runrec_class.html">DbRunRecoveryException</a>, in which case all subsequent Berkeley DB calls will fail in the same way. <h1>Class</h1> -<a href="../api_cxx/dbenv_class.html">DbEnv</a>, <a href="../api_cxx/lock_class.html">DbLock</a> +<a href="../api_cxx/env_class.html">DbEnv</a>, <a href="../api_cxx/lock_class.html">DbLock</a> <h1>See Also</h1> -<a href="../api_cxx/env_set_lk_conflicts.html">DbEnv::set_lk_conflicts</a>, -<a href="../api_cxx/env_set_lk_detect.html">DbEnv::set_lk_detect</a>, -<a href="../api_cxx/env_set_lk_max_lockers.html">DbEnv::set_lk_max_lockers</a>, -<a href="../api_cxx/env_set_lk_max_locks.html">DbEnv::set_lk_max_locks</a>, -<a href="../api_cxx/env_set_lk_max_objects.html">DbEnv::set_lk_max_objects</a>, -<a href="../api_cxx/lock_detect.html">DbEnv::lock_detect</a>, -<a href="../api_cxx/lock_get.html">DbEnv::lock_get</a>, -<a href="../api_cxx/lock_id.html">DbEnv::lock_id</a>, -<a href="../api_cxx/lock_id_free.html">DbEnv::lock_id_free</a>, -<a href="../api_cxx/lock_put.html">DbEnv::lock_put</a>, -<a href="../api_cxx/lock_stat.html">DbEnv::lock_stat</a> -and -<a href="../api_cxx/lock_vec.html">DbEnv::lock_vec</a>. +<a href="../api_cxx/lock_list.html">Locking Subsystem and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_cxx/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_cxx/log_cursor.html b/db/docs/api_cxx/log_cursor.html index 083920d55..5baa889e3 100644 --- a/db/docs/api_cxx/log_cursor.html +++ b/db/docs/api_cxx/log_cursor.html @@ -1,4 +1,4 @@ -<!--Id: log_cursor.so,v 10.3 2002/06/24 14:49:24 bostic Exp --> +<!--Id: log_cursor.so,v 10.5 2002/08/24 15:13:43 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -43,56 +43,9 @@ either return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVE <a href="../api_cxx/runrec_class.html">DbRunRecoveryException</a>, in which case all subsequent Berkeley DB calls will fail in the same way. <h1>Class</h1> -<a href="../api_cxx/db_class.html">Db</a> +<a href="../api_cxx/env_class.html">DbEnv</a>, <a href="../api_cxx/logc_class.html">DbLogc</a>, <a href="../api_cxx/lsn_class.html">DbLsn</a> <h1>See Also</h1> -<a href="../api_cxx/db_set_alloc.html">Db::set_alloc</a>, -<a href="../api_cxx/db_associate.html">Db::associate</a>, -<a href="../api_cxx/db_close.html">Db::close</a>, -<a href="../api_cxx/db_cursor.html">Db::cursor</a>, -<a href="../api_cxx/db_del.html">Db::del</a>, -<a href="../api_cxx/db_err.html">Db::err</a>, -<a href="../api_cxx/db_err.html">Db::errx</a>, -<a href="../api_cxx/db_fd.html">Db::fd</a>, -<a href="../api_cxx/db_get.html">Db::get</a>, -<a href="../api_cxx/db_get_byteswapped.html">Db::get_byteswapped</a>, -<a href="../api_cxx/db_get_type.html">Db::get_type</a>, -<a href="../api_cxx/db_join.html">Db::join</a>, -<a href="../api_cxx/db_key_range.html">Db::key_range</a>, -<a href="../api_cxx/db_open.html">Db::open</a>, -<a href="../api_cxx/db_get.html">Db::pget</a>, -<a href="../api_cxx/db_put.html">Db::put</a>, -<a href="../api_cxx/db_remove.html">Db::remove</a>, -<a href="../api_cxx/db_rename.html">Db::rename</a>, -<a href="../api_cxx/db_set_append_recno.html">Db::set_append_recno</a>, -<a href="../api_cxx/db_set_bt_compare.html">Db::set_bt_compare</a>, -<a href="../api_cxx/db_set_bt_minkey.html">Db::set_bt_minkey</a>, -<a href="../api_cxx/db_set_bt_prefix.html">Db::set_bt_prefix</a>, -<a href="../api_cxx/db_set_cache_priority.html">Db::set_cache_priority</a>, -<a href="../api_cxx/db_set_cachesize.html">Db::set_cachesize</a>, -<a href="../api_cxx/db_set_dup_compare.html">Db::set_dup_compare</a>, -<a href="../api_cxx/db_set_encrypt.html">Db::set_encrypt</a>, -<a href="../api_cxx/db_set_errcall.html">Db::set_errcall</a>, -<a href="../api_cxx/db_set_errfile.html">Db::set_errfile</a>, -<a href="../api_cxx/db_set_errpfx.html">Db::set_errpfx</a>, -<a href="../api_cxx/db_set_feedback.html">Db::set_feedback</a>, -<a href="../api_cxx/db_set_flags.html">Db::set_flags</a>, -<a href="../api_cxx/db_set_h_ffactor.html">Db::set_h_ffactor</a>, -<a href="../api_cxx/db_set_h_hash.html">Db::set_h_hash</a>, -<a href="../api_cxx/db_set_h_nelem.html">Db::set_h_nelem</a>, -<a href="../api_cxx/db_set_lorder.html">Db::set_lorder</a>, -<a href="../api_cxx/db_set_pagesize.html">Db::set_pagesize</a>, -<a href="../api_cxx/db_set_paniccall.html">Db::set_paniccall</a>, -<a href="../api_cxx/db_set_q_extentsize.html">Db::set_q_extentsize</a>, -<a href="../api_cxx/db_set_re_delim.html">Db::set_re_delim</a>, -<a href="../api_cxx/db_set_re_len.html">Db::set_re_len</a>, -<a href="../api_cxx/db_set_re_pad.html">Db::set_re_pad</a>, -<a href="../api_cxx/db_set_re_source.html">Db::set_re_source</a>, -<a href="../api_cxx/db_stat.html">Db::stat</a>, -<a href="../api_cxx/db_sync.html">Db::sync</a>, -<a href="../api_cxx/db_truncate.html">Db::truncate</a>, -<a href="../api_cxx/db_upgrade.html">Db::upgrade</a> -and -<a href="../api_cxx/db_verify.html">Db::verify</a>. +<a href="../api_cxx/log_list.html">Logging Subsystem and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_cxx/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_cxx/logc_class.html b/db/docs/api_cxx/logc_class.html index de5b7d81b..84ff7c772 100644 --- a/db/docs/api_cxx/logc_class.html +++ b/db/docs/api_cxx/logc_class.html @@ -1,4 +1,4 @@ -<!--Id: logc_class.so,v 1.3 2002/06/27 19:10:06 bostic Exp --> +<!--Id: logc_class.so,v 1.5 2002/08/24 18:22:51 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -25,30 +25,15 @@ class DbLogc { ... }; </pre></h3> <h1>Description</h1> -<p>This manual page describes the specific details of the DbLogc class, -which provides cursor support for log files. -<p>The DbLogc functions are the library interface supporting -sequential access to the records stored in log files. Cursors are -created by calling the <a href="../api_cxx/log_cursor.html">DbEnv::log_cursor</a> method which returns a pointer to a DbLogc object. +<p>The DbLogc object is the handle for a cursor into the log files, +supporting sequential access to the records stored in log files. The +handle is not free-threaded. Once the <a href="../api_cxx/logc_close.html">DbLogc::close</a> method is called, +the handle may not be accessed again, regardless of that method's +return. <h1>Class</h1> -<a href="../api_cxx/dbenv_class.html">DbEnv</a>, <a href="../api_cxx/logc_class.html">DbLogc</a> +<a href="../api_cxx/env_class.html">DbEnv</a>, DbLogc, <a href="../api_cxx/lsn_class.html">DbLsn</a> <h1>See Also</h1> -<a href="../api_cxx/log_archive.html">DbEnv::log_archive</a>, -<a href="../api_cxx/log_file.html">DbEnv::log_file</a>, -<a href="../api_cxx/log_flush.html">DbEnv::log_flush</a>, -<a href="../api_cxx/log_put.html">DbEnv::log_put</a>, -<a href="../api_cxx/log_stat.html">DbEnv::log_stat</a>, -<a href="../api_cxx/env_set_lg_bsize.html">DbEnv::set_lg_bsize</a>, -<a href="../api_cxx/env_set_lg_dir.html">DbEnv::set_lg_dir</a>, -<a href="../api_cxx/env_set_lg_max.html">DbEnv::set_lg_max</a>, -<a href="../api_cxx/env_set_lg_regionmax.html">DbEnv::set_lg_regionmax</a>, -and -<a href="../api_cxx/log_compare.html">DbEnv::log_compare</a>. -<p> -<a href="../api_cxx/log_cursor.html">DbEnv::log_cursor</a>, -<a href="../api_cxx/logc_close.html">DbLogc::close</a> -and -<a href="../api_cxx/logc_get.html">DbLogc::get</a>. +<a href="../api_cxx/log_list.html">Logging Subsystem and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_cxx/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_cxx/logc_close.html b/db/docs/api_cxx/logc_close.html index 20c55bb79..c2f831f3e 100644 --- a/db/docs/api_cxx/logc_close.html +++ b/db/docs/api_cxx/logc_close.html @@ -1,4 +1,4 @@ -<!--Id: logc_close.so,v 10.5 2002/06/24 14:49:25 bostic Exp --> +<!--Id: logc_close.so,v 10.6 2002/08/18 21:16:43 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -44,24 +44,9 @@ either return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVE <a href="../api_cxx/runrec_class.html">DbRunRecoveryException</a>, in which case all subsequent Berkeley DB calls will fail in the same way. <h1>Class</h1> -<a href="../api_cxx/dbenv_class.html">DbEnv</a>, <a href="../api_cxx/logc_class.html">DbLogc</a> +<a href="../api_cxx/env_class.html">DbEnv</a>, <a href="../api_cxx/logc_class.html">DbLogc</a>, <a href="../api_cxx/lsn_class.html">DbLsn</a> <h1>See Also</h1> -<a href="../api_cxx/log_archive.html">DbEnv::log_archive</a>, -<a href="../api_cxx/log_file.html">DbEnv::log_file</a>, -<a href="../api_cxx/log_flush.html">DbEnv::log_flush</a>, -<a href="../api_cxx/log_put.html">DbEnv::log_put</a>, -<a href="../api_cxx/log_stat.html">DbEnv::log_stat</a>, -<a href="../api_cxx/env_set_lg_bsize.html">DbEnv::set_lg_bsize</a>, -<a href="../api_cxx/env_set_lg_dir.html">DbEnv::set_lg_dir</a>, -<a href="../api_cxx/env_set_lg_max.html">DbEnv::set_lg_max</a>, -<a href="../api_cxx/env_set_lg_regionmax.html">DbEnv::set_lg_regionmax</a>, -and -<a href="../api_cxx/log_compare.html">DbEnv::log_compare</a>. -<p> -<a href="../api_cxx/log_cursor.html">DbEnv::log_cursor</a>, -<a href="../api_cxx/logc_close.html">DbLogc::close</a> -and -<a href="../api_cxx/logc_get.html">DbLogc::get</a>. +<a href="../api_cxx/log_list.html">Logging Subsystem and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_cxx/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_cxx/logc_get.html b/db/docs/api_cxx/logc_get.html index cbfef46d0..12f402210 100644 --- a/db/docs/api_cxx/logc_get.html +++ b/db/docs/api_cxx/logc_get.html @@ -1,4 +1,4 @@ -<!--Id: logc_get.so,v 10.36 2002/07/01 16:52:26 bostic Exp --> +<!--Id: logc_get.so,v 10.37 2002/08/18 21:16:44 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -84,24 +84,9 @@ either return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVE <a href="../api_cxx/runrec_class.html">DbRunRecoveryException</a>, in which case all subsequent Berkeley DB calls will fail in the same way. <h1>Class</h1> -<a href="../api_cxx/dbenv_class.html">DbEnv</a>, <a href="../api_cxx/logc_class.html">DbLogc</a> +<a href="../api_cxx/env_class.html">DbEnv</a>, <a href="../api_cxx/logc_class.html">DbLogc</a>, <a href="../api_cxx/lsn_class.html">DbLsn</a> <h1>See Also</h1> -<a href="../api_cxx/log_archive.html">DbEnv::log_archive</a>, -<a href="../api_cxx/log_file.html">DbEnv::log_file</a>, -<a href="../api_cxx/log_flush.html">DbEnv::log_flush</a>, -<a href="../api_cxx/log_put.html">DbEnv::log_put</a>, -<a href="../api_cxx/log_stat.html">DbEnv::log_stat</a>, -<a href="../api_cxx/env_set_lg_bsize.html">DbEnv::set_lg_bsize</a>, -<a href="../api_cxx/env_set_lg_dir.html">DbEnv::set_lg_dir</a>, -<a href="../api_cxx/env_set_lg_max.html">DbEnv::set_lg_max</a>, -<a href="../api_cxx/env_set_lg_regionmax.html">DbEnv::set_lg_regionmax</a>, -and -<a href="../api_cxx/log_compare.html">DbEnv::log_compare</a>. -<p> -<a href="../api_cxx/log_cursor.html">DbEnv::log_cursor</a>, -<a href="../api_cxx/logc_close.html">DbLogc::close</a> -and -<a href="../api_cxx/logc_get.html">DbLogc::get</a>. +<a href="../api_cxx/log_list.html">Logging Subsystem and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_cxx/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_cxx/memp_fcreate.html b/db/docs/api_cxx/memp_fcreate.html index 25da222d0..6c177b521 100644 --- a/db/docs/api_cxx/memp_fcreate.html +++ b/db/docs/api_cxx/memp_fcreate.html @@ -1,4 +1,4 @@ -<!--Id: memp_fcreate.so,v 10.5 2002/06/24 14:49:26 bostic Exp --> +<!--Id: memp_fcreate.so,v 10.8 2002/08/28 20:25:53 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -26,7 +26,7 @@ int DbEnv::memp_fcreate(DbMpoolFile **dbmfp, u_int32_t flags); </pre></h3> <h1>Description</h1> -<p>The DbEnv::memp_fcreate method creates a DbMpoolFile structure that +<p>The DbEnv::memp_fcreate method creates a <a href="../api_cxx/mempfile_class.html">DbMpoolFile</a> structure that is the handle for a Berkeley DB shared memory buffer pool file. A pointer to this structure is returned in the memory to which <b>dbmfp</b> refers. Calling the <a href="../api_cxx/memp_fclose.html">DbMpoolFile::close</a> method will discard the returned handle. @@ -40,28 +40,9 @@ either return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVE <a href="../api_cxx/runrec_class.html">DbRunRecoveryException</a>, in which case all subsequent Berkeley DB calls will fail in the same way. <h1>Class</h1> -<a href="../api_cxx/dbenv_class.html">DbEnv</a>, <a href="../api_cxx/mempfile_class.html">DbMpoolFile</a> +<a href="../api_cxx/env_class.html">DbEnv</a>, <a href="../api_cxx/mempfile_class.html">DbMpoolFile</a> <h1>See Also</h1> -<a href="../api_cxx/env_set_cachesize.html">DbEnv::set_cachesize</a>, -<a href="../api_cxx/env_set_mp_mmapsize.html">DbEnv::set_mp_mmapsize</a>, -<a href="../api_cxx/memp_register.html">DbEnv::memp_register</a>, -<a href="../api_cxx/memp_stat.html">DbEnv::memp_stat</a>, -<a href="../api_cxx/memp_sync.html">DbEnv::memp_sync</a>, -<a href="../api_cxx/memp_trickle.html">DbEnv::memp_trickle</a>, -<p> -<a href="../api_cxx/memp_fcreate.html">DbEnv::memp_fcreate</a>, -<a href="../api_cxx/memp_fclose.html">DbMpoolFile::close</a>, -<a href="../api_cxx/memp_fget.html">DbMpoolFile::get</a>, -<a href="../api_cxx/memp_fopen.html">DbMpoolFile::open</a>, -<a href="../api_cxx/memp_fput.html">DbMpoolFile::put</a>, -<a href="../api_cxx/memp_fset.html">DbMpoolFile::set</a>, -<a href="../api_cxx/memp_set_fileid.html">DbMpoolFile::set_fileid</a>, -<a href="../api_cxx/memp_set_clear_len.html">DbMpoolFile::set_clear_len</a>, -<a href="../api_cxx/memp_set_ftype.html">DbMpoolFile::set_ftype</a>, -<a href="../api_cxx/memp_set_lsn_offset.html">DbMpoolFile::set_lsn_offset</a>, -<a href="../api_cxx/memp_set_pgcookie.html">DbMpoolFile::set_pgcookie</a> -and -<a href="../api_cxx/memp_fsync.html">DbMpoolFile::sync</a>. +<a href="../api_cxx/memp_list.html">Memory Pools and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_cxx/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_cxx/memp_set_clear_len.html b/db/docs/api_cxx/memp_set_clear_len.html index 98ed67676..abca761ab 100644 --- a/db/docs/api_cxx/memp_set_clear_len.html +++ b/db/docs/api_cxx/memp_set_clear_len.html @@ -1,4 +1,4 @@ -<!--Id: memp_set_clear_len.so,v 10.4 2002/06/24 14:49:27 bostic Exp --> +<!--Id: memp_set_clear_len.so,v 10.6 2002/08/24 18:23:32 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -48,28 +48,9 @@ either return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVE <a href="../api_cxx/runrec_class.html">DbRunRecoveryException</a>, in which case all subsequent Berkeley DB calls will fail in the same way. <h1>Class</h1> -<a href="../api_cxx/dbenv_class.html">DbEnv</a>, <a href="../api_cxx/mempfile_class.html">DbMpoolFile</a> +<a href="../api_cxx/env_class.html">DbEnv</a>, <a href="../api_cxx/mempfile_class.html">DbMpoolFile</a> <h1>See Also</h1> -<a href="../api_cxx/env_set_cachesize.html">DbEnv::set_cachesize</a>, -<a href="../api_cxx/env_set_mp_mmapsize.html">DbEnv::set_mp_mmapsize</a>, -<a href="../api_cxx/memp_register.html">DbEnv::memp_register</a>, -<a href="../api_cxx/memp_stat.html">DbEnv::memp_stat</a>, -<a href="../api_cxx/memp_sync.html">DbEnv::memp_sync</a>, -<a href="../api_cxx/memp_trickle.html">DbEnv::memp_trickle</a>, -<p> -<a href="../api_cxx/memp_fcreate.html">DbEnv::memp_fcreate</a>, -<a href="../api_cxx/memp_fclose.html">DbMpoolFile::close</a>, -<a href="../api_cxx/memp_fget.html">DbMpoolFile::get</a>, -<a href="../api_cxx/memp_fopen.html">DbMpoolFile::open</a>, -<a href="../api_cxx/memp_fput.html">DbMpoolFile::put</a>, -<a href="../api_cxx/memp_fset.html">DbMpoolFile::set</a>, -<a href="../api_cxx/memp_set_fileid.html">DbMpoolFile::set_fileid</a>, -<a href="../api_cxx/memp_set_clear_len.html">DbMpoolFile::set_clear_len</a>, -<a href="../api_cxx/memp_set_ftype.html">DbMpoolFile::set_ftype</a>, -<a href="../api_cxx/memp_set_lsn_offset.html">DbMpoolFile::set_lsn_offset</a>, -<a href="../api_cxx/memp_set_pgcookie.html">DbMpoolFile::set_pgcookie</a> -and -<a href="../api_cxx/memp_fsync.html">DbMpoolFile::sync</a>. +<a href="../api_cxx/memp_list.html">Memory Pools and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_cxx/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_cxx/memp_set_fileid.html b/db/docs/api_cxx/memp_set_fileid.html index d63738fcc..931dcc3e5 100644 --- a/db/docs/api_cxx/memp_set_fileid.html +++ b/db/docs/api_cxx/memp_set_fileid.html @@ -1,4 +1,4 @@ -<!--Id: memp_set_fileid.so,v 10.4 2002/06/24 14:49:27 bostic Exp --> +<!--Id: memp_set_fileid.so,v 10.6 2002/08/24 18:23:32 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -65,28 +65,9 @@ either return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVE <a href="../api_cxx/runrec_class.html">DbRunRecoveryException</a>, in which case all subsequent Berkeley DB calls will fail in the same way. <h1>Class</h1> -<a href="../api_cxx/dbenv_class.html">DbEnv</a>, <a href="../api_cxx/mempfile_class.html">DbMpoolFile</a> +<a href="../api_cxx/env_class.html">DbEnv</a>, <a href="../api_cxx/mempfile_class.html">DbMpoolFile</a> <h1>See Also</h1> -<a href="../api_cxx/env_set_cachesize.html">DbEnv::set_cachesize</a>, -<a href="../api_cxx/env_set_mp_mmapsize.html">DbEnv::set_mp_mmapsize</a>, -<a href="../api_cxx/memp_register.html">DbEnv::memp_register</a>, -<a href="../api_cxx/memp_stat.html">DbEnv::memp_stat</a>, -<a href="../api_cxx/memp_sync.html">DbEnv::memp_sync</a>, -<a href="../api_cxx/memp_trickle.html">DbEnv::memp_trickle</a>, -<p> -<a href="../api_cxx/memp_fcreate.html">DbEnv::memp_fcreate</a>, -<a href="../api_cxx/memp_fclose.html">DbMpoolFile::close</a>, -<a href="../api_cxx/memp_fget.html">DbMpoolFile::get</a>, -<a href="../api_cxx/memp_fopen.html">DbMpoolFile::open</a>, -<a href="../api_cxx/memp_fput.html">DbMpoolFile::put</a>, -<a href="../api_cxx/memp_fset.html">DbMpoolFile::set</a>, -<a href="../api_cxx/memp_set_fileid.html">DbMpoolFile::set_fileid</a>, -<a href="../api_cxx/memp_set_clear_len.html">DbMpoolFile::set_clear_len</a>, -<a href="../api_cxx/memp_set_ftype.html">DbMpoolFile::set_ftype</a>, -<a href="../api_cxx/memp_set_lsn_offset.html">DbMpoolFile::set_lsn_offset</a>, -<a href="../api_cxx/memp_set_pgcookie.html">DbMpoolFile::set_pgcookie</a> -and -<a href="../api_cxx/memp_fsync.html">DbMpoolFile::sync</a>. +<a href="../api_cxx/memp_list.html">Memory Pools and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_cxx/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_cxx/memp_set_ftype.html b/db/docs/api_cxx/memp_set_ftype.html index 7dd394def..6c7f41881 100644 --- a/db/docs/api_cxx/memp_set_ftype.html +++ b/db/docs/api_cxx/memp_set_ftype.html @@ -1,4 +1,4 @@ -<!--Id: memp_set_ftype.so,v 10.4 2002/06/24 14:49:27 bostic Exp --> +<!--Id: memp_set_ftype.so,v 10.6 2002/08/24 18:23:32 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -48,28 +48,9 @@ either return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVE <a href="../api_cxx/runrec_class.html">DbRunRecoveryException</a>, in which case all subsequent Berkeley DB calls will fail in the same way. <h1>Class</h1> -<a href="../api_cxx/dbenv_class.html">DbEnv</a>, <a href="../api_cxx/mempfile_class.html">DbMpoolFile</a> +<a href="../api_cxx/env_class.html">DbEnv</a>, <a href="../api_cxx/mempfile_class.html">DbMpoolFile</a> <h1>See Also</h1> -<a href="../api_cxx/env_set_cachesize.html">DbEnv::set_cachesize</a>, -<a href="../api_cxx/env_set_mp_mmapsize.html">DbEnv::set_mp_mmapsize</a>, -<a href="../api_cxx/memp_register.html">DbEnv::memp_register</a>, -<a href="../api_cxx/memp_stat.html">DbEnv::memp_stat</a>, -<a href="../api_cxx/memp_sync.html">DbEnv::memp_sync</a>, -<a href="../api_cxx/memp_trickle.html">DbEnv::memp_trickle</a>, -<p> -<a href="../api_cxx/memp_fcreate.html">DbEnv::memp_fcreate</a>, -<a href="../api_cxx/memp_fclose.html">DbMpoolFile::close</a>, -<a href="../api_cxx/memp_fget.html">DbMpoolFile::get</a>, -<a href="../api_cxx/memp_fopen.html">DbMpoolFile::open</a>, -<a href="../api_cxx/memp_fput.html">DbMpoolFile::put</a>, -<a href="../api_cxx/memp_fset.html">DbMpoolFile::set</a>, -<a href="../api_cxx/memp_set_fileid.html">DbMpoolFile::set_fileid</a>, -<a href="../api_cxx/memp_set_clear_len.html">DbMpoolFile::set_clear_len</a>, -<a href="../api_cxx/memp_set_ftype.html">DbMpoolFile::set_ftype</a>, -<a href="../api_cxx/memp_set_lsn_offset.html">DbMpoolFile::set_lsn_offset</a>, -<a href="../api_cxx/memp_set_pgcookie.html">DbMpoolFile::set_pgcookie</a> -and -<a href="../api_cxx/memp_fsync.html">DbMpoolFile::sync</a>. +<a href="../api_cxx/memp_list.html">Memory Pools and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_cxx/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_cxx/memp_set_lsn_offset.html b/db/docs/api_cxx/memp_set_lsn_offset.html index 74c76d4f8..afe6320ac 100644 --- a/db/docs/api_cxx/memp_set_lsn_offset.html +++ b/db/docs/api_cxx/memp_set_lsn_offset.html @@ -1,4 +1,4 @@ -<!--Id: memp_set_lsn_offset.so,v 10.4 2002/06/24 14:49:28 bostic Exp --> +<!--Id: memp_set_lsn_offset.so,v 10.6 2002/08/24 18:23:33 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -47,28 +47,9 @@ either return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVE <a href="../api_cxx/runrec_class.html">DbRunRecoveryException</a>, in which case all subsequent Berkeley DB calls will fail in the same way. <h1>Class</h1> -<a href="../api_cxx/dbenv_class.html">DbEnv</a>, <a href="../api_cxx/mempfile_class.html">DbMpoolFile</a> +<a href="../api_cxx/env_class.html">DbEnv</a>, <a href="../api_cxx/mempfile_class.html">DbMpoolFile</a> <h1>See Also</h1> -<a href="../api_cxx/env_set_cachesize.html">DbEnv::set_cachesize</a>, -<a href="../api_cxx/env_set_mp_mmapsize.html">DbEnv::set_mp_mmapsize</a>, -<a href="../api_cxx/memp_register.html">DbEnv::memp_register</a>, -<a href="../api_cxx/memp_stat.html">DbEnv::memp_stat</a>, -<a href="../api_cxx/memp_sync.html">DbEnv::memp_sync</a>, -<a href="../api_cxx/memp_trickle.html">DbEnv::memp_trickle</a>, -<p> -<a href="../api_cxx/memp_fcreate.html">DbEnv::memp_fcreate</a>, -<a href="../api_cxx/memp_fclose.html">DbMpoolFile::close</a>, -<a href="../api_cxx/memp_fget.html">DbMpoolFile::get</a>, -<a href="../api_cxx/memp_fopen.html">DbMpoolFile::open</a>, -<a href="../api_cxx/memp_fput.html">DbMpoolFile::put</a>, -<a href="../api_cxx/memp_fset.html">DbMpoolFile::set</a>, -<a href="../api_cxx/memp_set_fileid.html">DbMpoolFile::set_fileid</a>, -<a href="../api_cxx/memp_set_clear_len.html">DbMpoolFile::set_clear_len</a>, -<a href="../api_cxx/memp_set_ftype.html">DbMpoolFile::set_ftype</a>, -<a href="../api_cxx/memp_set_lsn_offset.html">DbMpoolFile::set_lsn_offset</a>, -<a href="../api_cxx/memp_set_pgcookie.html">DbMpoolFile::set_pgcookie</a> -and -<a href="../api_cxx/memp_fsync.html">DbMpoolFile::sync</a>. +<a href="../api_cxx/memp_list.html">Memory Pools and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_cxx/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_cxx/memp_set_pgcookie.html b/db/docs/api_cxx/memp_set_pgcookie.html index 6c89916e8..cd17a52a7 100644 --- a/db/docs/api_cxx/memp_set_pgcookie.html +++ b/db/docs/api_cxx/memp_set_pgcookie.html @@ -1,4 +1,4 @@ -<!--Id: memp_set_pgcookie.so,v 10.4 2002/06/24 14:49:28 bostic Exp --> +<!--Id: memp_set_pgcookie.so,v 10.6 2002/08/24 18:23:33 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -47,28 +47,9 @@ either return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVE <a href="../api_cxx/runrec_class.html">DbRunRecoveryException</a>, in which case all subsequent Berkeley DB calls will fail in the same way. <h1>Class</h1> -<a href="../api_cxx/dbenv_class.html">DbEnv</a>, <a href="../api_cxx/mempfile_class.html">DbMpoolFile</a> +<a href="../api_cxx/env_class.html">DbEnv</a>, <a href="../api_cxx/mempfile_class.html">DbMpoolFile</a> <h1>See Also</h1> -<a href="../api_cxx/env_set_cachesize.html">DbEnv::set_cachesize</a>, -<a href="../api_cxx/env_set_mp_mmapsize.html">DbEnv::set_mp_mmapsize</a>, -<a href="../api_cxx/memp_register.html">DbEnv::memp_register</a>, -<a href="../api_cxx/memp_stat.html">DbEnv::memp_stat</a>, -<a href="../api_cxx/memp_sync.html">DbEnv::memp_sync</a>, -<a href="../api_cxx/memp_trickle.html">DbEnv::memp_trickle</a>, -<p> -<a href="../api_cxx/memp_fcreate.html">DbEnv::memp_fcreate</a>, -<a href="../api_cxx/memp_fclose.html">DbMpoolFile::close</a>, -<a href="../api_cxx/memp_fget.html">DbMpoolFile::get</a>, -<a href="../api_cxx/memp_fopen.html">DbMpoolFile::open</a>, -<a href="../api_cxx/memp_fput.html">DbMpoolFile::put</a>, -<a href="../api_cxx/memp_fset.html">DbMpoolFile::set</a>, -<a href="../api_cxx/memp_set_fileid.html">DbMpoolFile::set_fileid</a>, -<a href="../api_cxx/memp_set_clear_len.html">DbMpoolFile::set_clear_len</a>, -<a href="../api_cxx/memp_set_ftype.html">DbMpoolFile::set_ftype</a>, -<a href="../api_cxx/memp_set_lsn_offset.html">DbMpoolFile::set_lsn_offset</a>, -<a href="../api_cxx/memp_set_pgcookie.html">DbMpoolFile::set_pgcookie</a> -and -<a href="../api_cxx/memp_fsync.html">DbMpoolFile::sync</a>. +<a href="../api_cxx/memp_list.html">Memory Pools and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_cxx/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_cxx/rep_elect.html b/db/docs/api_cxx/rep_elect.html index a15408235..d6d0d08c5 100644 --- a/db/docs/api_cxx/rep_elect.html +++ b/db/docs/api_cxx/rep_elect.html @@ -1,4 +1,4 @@ -<!--Id: rep_elect.so,v 1.6 2002/06/24 14:49:30 bostic Exp --> +<!--Id: rep_elect.so,v 1.8 2002/08/29 03:25:54 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -70,12 +70,10 @@ If a catastrophic error has occurred, the DbEnv::rep_elect method may fail and either return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a> or throw a <a href="../api_cxx/runrec_class.html">DbRunRecoveryException</a>, in which case all subsequent Berkeley DB calls will fail in the same way. +<h1>Class</h1> +<a href="../api_cxx/env_class.html">DbEnv</a> <h1>See Also</h1> -<a href="../api_cxx/rep_start.html">DbEnv::rep_start</a>, -<a href="../api_cxx/rep_elect.html">DbEnv::rep_elect</a>, -<a href="../api_cxx/rep_message.html">DbEnv::rep_process_message</a> -and -<a href="../api_cxx/rep_transport.html">DbEnv::set_rep_transport</a>. +<a href="../api_cxx/rep_list.html">Replication and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_cxx/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_cxx/rep_message.html b/db/docs/api_cxx/rep_message.html index a11cd9566..c666bad3d 100644 --- a/db/docs/api_cxx/rep_message.html +++ b/db/docs/api_cxx/rep_message.html @@ -1,4 +1,4 @@ -<!--Id: rep_message.so,v 1.9 2002/07/02 15:22:24 bostic Exp --> +<!--Id: rep_message.so,v 1.11 2002/08/29 03:26:00 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -37,7 +37,7 @@ corresponds to the environment that sent the message to be processed (see <a href="../ref/rep/id.html">Replication environment IDs</a> for more information). <p>For implementation reasons, all incoming replication messages must be -processed using the same <a href="../api_cxx/dbenv_class.html">DbEnv</a> handle. It is not required that +processed using the same <a href="../api_cxx/env_class.html">DbEnv</a> handle. It is not required that a single thread of control process all messages, only that all threads of control processing messages use the same handle. <p> @@ -75,12 +75,10 @@ If a catastrophic error has occurred, the DbEnv::rep_process_message method may either return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a> or throw a <a href="../api_cxx/runrec_class.html">DbRunRecoveryException</a>, in which case all subsequent Berkeley DB calls will fail in the same way. +<h1>Class</h1> +<a href="../api_cxx/env_class.html">DbEnv</a> <h1>See Also</h1> -<a href="../api_cxx/rep_start.html">DbEnv::rep_start</a>, -<a href="../api_cxx/rep_elect.html">DbEnv::rep_elect</a>, -<a href="../api_cxx/rep_message.html">DbEnv::rep_process_message</a> -and -<a href="../api_cxx/rep_transport.html">DbEnv::set_rep_transport</a>. +<a href="../api_cxx/rep_list.html">Replication and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_cxx/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_cxx/rep_start.html b/db/docs/api_cxx/rep_start.html index 7a81b6fcf..167438297 100644 --- a/db/docs/api_cxx/rep_start.html +++ b/db/docs/api_cxx/rep_start.html @@ -1,4 +1,4 @@ -<!--Id: rep_start.so,v 1.3 2002/06/24 14:49:30 bostic Exp --> +<!--Id: rep_start.so,v 1.5 2002/08/29 03:26:00 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -62,12 +62,10 @@ If a catastrophic error has occurred, the DbEnv::rep_start method may fail and either return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a> or throw a <a href="../api_cxx/runrec_class.html">DbRunRecoveryException</a>, in which case all subsequent Berkeley DB calls will fail in the same way. +<h1>Class</h1> +<a href="../api_cxx/env_class.html">DbEnv</a> <h1>See Also</h1> -<a href="../api_cxx/rep_start.html">DbEnv::rep_start</a>, -<a href="../api_cxx/rep_elect.html">DbEnv::rep_elect</a>, -<a href="../api_cxx/rep_message.html">DbEnv::rep_process_message</a> -and -<a href="../api_cxx/rep_transport.html">DbEnv::set_rep_transport</a>. +<a href="../api_cxx/rep_list.html">Replication and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_cxx/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_cxx/rep_transport.html b/db/docs/api_cxx/rep_transport.html index 19fb8d233..f530e4114 100644 --- a/db/docs/api_cxx/rep_transport.html +++ b/db/docs/api_cxx/rep_transport.html @@ -1,4 +1,4 @@ -<!--Id: rep_transport.so,v 1.7 2002/06/24 14:49:30 bostic Exp --> +<!--Id: rep_transport.so,v 1.9 2002/08/29 03:26:00 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -72,7 +72,7 @@ otherwise, any error from the <b>send</b> interface will be ignored. <b>send</b> interface; see <a href="../ref/env/faq.html">Environment FAQ</a> for a discussion on how to do this. <p>The DbEnv::set_rep_transport method configures operations performed using the specified -<a href="../api_cxx/dbenv_class.html">DbEnv</a> handle, not all operations performed on the underlying +<a href="../api_cxx/env_class.html">DbEnv</a> handle, not all operations performed on the underlying database environment. <p>The DbEnv::set_rep_transport interface may be called at any time during the life of the application. @@ -84,12 +84,10 @@ If a catastrophic error has occurred, the DbEnv::set_rep_transport method may fa either return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a> or throw a <a href="../api_cxx/runrec_class.html">DbRunRecoveryException</a>, in which case all subsequent Berkeley DB calls will fail in the same way. +<h1>Class</h1> +<a href="../api_cxx/env_class.html">DbEnv</a> <h1>See Also</h1> -<a href="../api_cxx/rep_start.html">DbEnv::rep_start</a>, -<a href="../api_cxx/rep_elect.html">DbEnv::rep_elect</a>, -<a href="../api_cxx/rep_message.html">DbEnv::rep_process_message</a> -and -<a href="../api_cxx/rep_transport.html">DbEnv::set_rep_transport</a>. +<a href="../api_cxx/rep_list.html">Replication and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_cxx/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_cxx/txn_set_timeout.html b/db/docs/api_cxx/txn_set_timeout.html index 29e675587..68d808ca5 100644 --- a/db/docs/api_cxx/txn_set_timeout.html +++ b/db/docs/api_cxx/txn_set_timeout.html @@ -1,4 +1,4 @@ -<!--Id: txn_set_timeout.so,v 10.6 2002/06/24 14:49:36 bostic Exp --> +<!--Id: txn_set_timeout.so,v 10.8 2002/08/29 03:26:14 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -65,23 +65,9 @@ either return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVE <a href="../api_cxx/runrec_class.html">DbRunRecoveryException</a>, in which case all subsequent Berkeley DB calls will fail in the same way. <h1>Class</h1> -<a href="../api_cxx/dbenv_class.html">DbEnv</a>, <a href="../api_cxx/txn_class.html">DbTxn</a> +<a href="../api_cxx/env_class.html">DbEnv</a>, <a href="../api_cxx/txn_class.html">DbTxn</a> <h1>See Also</h1> -<a href="../api_cxx/env_set_tx_max.html">DbEnv::set_tx_max</a>, -<a href="../api_cxx/env_set_tx_timestamp.html">DbEnv::set_tx_timestamp</a>, -<a href="../api_cxx/txn_begin.html">DbEnv::txn_begin</a>, -<a href="../api_cxx/txn_checkpoint.html">DbEnv::txn_checkpoint</a>, -<a href="../api_cxx/txn_recover.html">DbEnv::txn_recover</a> -and -<a href="../api_cxx/txn_stat.html">DbEnv::txn_stat</a>. -<p> -<a href="../api_cxx/txn_abort.html">DbTxn::abort</a>, -<a href="../api_cxx/txn_commit.html">DbTxn::commit</a>, -<a href="../api_cxx/txn_discard.html">DbTxn::discard</a>, -<a href="../api_cxx/txn_id.html">DbTxn::id</a>, -<a href="../api_cxx/txn_prepare.html">DbTxn::prepare</a> -and -<a href="../api_cxx/txn_set_timeout.html">DbTxn::set_timeout</a>. +<a href="../api_cxx/txn_list.html">Transaction Subsystem and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_cxx/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_java/c_index.html b/db/docs/api_java/c_index.html index 73c9cbb1f..5f1243f45 100644 --- a/db/docs/api_java/c_index.html +++ b/db/docs/api_java/c_index.html @@ -1,4 +1,4 @@ -<!--Id: c_index.so,v 10.96 2002/07/24 05:06:08 bostic Exp --> +<!--Id: c_index.so,v 10.98 2002/08/24 18:22:34 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -12,7 +12,7 @@ <h1 align=center>Berkeley DB: Java Interface</h1> <p><table border=1 align=center> <tr><th>Section</th><th>Class/Method</th><th>Description</th></tr> -<tr><td><b>Database Environment</b></td><td><a href="../api_java/dbenv_class.html">DbEnv</a></td><td>Create an environment handle</td></tr> +<tr><td><b>Database Environment</b></td><td><a href="../api_java/env_class.html">DbEnv</a></td><td>Create an environment handle</td></tr> <tr><td><br></td><td><a href="../api_java/env_close.html">DbEnv.close</a></td><td>Close an environment</td></tr> <tr><td><br></td><td><a href="../api_java/env_dbremove.html">DbEnv.dbremove</a></td><td>Remove a database</td></tr> <tr><td><br></td><td><a href="../api_java/env_dbrename.html">DbEnv.dbrename</a></td><td>Rename a database</td></tr> @@ -33,8 +33,8 @@ <tr><td><br></td><td><a href="../api_java/env_set_rpc_server.html">DbEnv.set_rpc_server</a></td><td>Establish an RPC server connection</td></tr> <tr><td><br></td><td><a href="../api_java/env_set_shm_key.html">DbEnv.set_shm_key</a></td><td>Set system memory shared segment ID</td></tr> <tr><td><br></td><td><a href="../api_java/env_set_tas_spins.html">DbEnv.set_tas_spins</a></td><td>Set the number of test-and-set spins</td></tr> -<tr><td><br></td><td><a href="../api_java/env_set_tmp_dir.html">DbEnv.set_tmp_dir</a></td><td>Set the environment temporary file directory</td></tr> <tr><td><br></td><td><a href="../api_java/env_set_timeout.html">DbEnv.set_timeout</a></td><td>Set lock and transaction timeout</td></tr> +<tr><td><br></td><td><a href="../api_java/env_set_tmp_dir.html">DbEnv.set_tmp_dir</a></td><td>Set the environment temporary file directory</td></tr> <tr><td><br></td><td><a href="../api_java/env_set_verbose.html">DbEnv.set_verbose</a></td><td>Set verbose messages</td></tr> <tr><td><b>Database Operations</b></td><td><a href="../api_java/db_class.html">Db</a></td><td>Create a database handle</td></tr> <tr><td><br></td><td><a href="../api_java/db_associate.html">Db.associate</a></td><td>Associate a secondary index</td></tr> @@ -62,6 +62,7 @@ <tr><td><br></td><td><a href="../api_java/db_set_dup_compare.html">Db.set_dup_compare</a></td><td>Set a duplicate comparison function</td></tr> <tr><td><br></td><td><a href="../api_java/db_set_encrypt.html">Db.set_encrypt</a></td><td>Set the database cryptographic key</td></tr> <tr><td><br></td><td><a href="../api_java/db_set_errcall.html">Db.set_errcall</a></td><td>Set error message callback</td></tr> +<tr><td><br></td><td><a href="../api_java/db_set_error_stream.html">Db.set_error_stream</a></td><td>Set error message output stream</td></tr> <tr><td><br></td><td><a href="../api_java/db_set_errpfx.html">Db.set_errpfx</a></td><td>Set error message prefix</td></tr> <tr><td><br></td><td><a href="../api_java/db_set_feedback.html">Db.set_feedback</a></td><td>Set feedback callback</td></tr> <tr><td><br></td><td><a href="../api_java/db_set_flags.html">Db.set_flags</a></td><td>General database configuration</td></tr> @@ -142,10 +143,9 @@ <tr><td><br></td><td><a href="../api_java/rep_start.html">DbEnv.rep_start</a></td><td>Configure an environment for replication</td></tr> <tr><td><br></td><td><a href="../api_java/rep_stat.html">DbEnv.rep_stat</a></td><td>Replication statistics</td></tr> <tr><td><b>Exceptions</b></td><td><a href="../api_java/except_class.html">DbException</a></td><td><b>Exception Class for Berkeley DB Activity</b></td></tr> -<tr><td><br></td><td><a href="../api_java/get_errno.html">DbException.get_errno</a></td><td>Get the error value</td></tr> <tr><td><br></td><td><a href="../api_java/deadlock_class.html">DbDeadlockException</a></td><td><b>Exception Class for deadlocks</b></td></tr> <tr><td><br></td><td><a href="../api_java/lockng_class.html">DbLockNotGrantedException</a></td><td><b>Exception Class for lock request failures</b></td></tr> -<tr><td><br></td><td><a href="../api_java/mem_class.html">DbMemoryException</a></td><td><b>Exception Class for insufficient memory</b></td></tr> +<tr><td><br></td><td><a href="../api_java/memp_class.html">DbMemoryException</a></td><td><b>Exception Class for insufficient memory</b></td></tr> <tr><td><br></td><td><a href="../api_java/runrec_class.html">DbRunRecoveryException</a></td><td><b>Exception Class for failures requiring recovery</b></td></tr> </table> <p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font> diff --git a/db/docs/api_java/dbt_bulk_class.html b/db/docs/api_java/dbt_bulk_class.html index e58524221..382428ae4 100644 --- a/db/docs/api_java/dbt_bulk_class.html +++ b/db/docs/api_java/dbt_bulk_class.html @@ -1,4 +1,4 @@ -<!--Id: dbt_bulk_class.so,v 1.4 2002/06/27 19:35:20 bostic Exp --> +<!--Id: dbt_bulk_class.so,v 1.6 2002/08/29 03:24:33 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> diff --git a/db/docs/api_java/env_set_timeout.html b/db/docs/api_java/env_set_timeout.html index 2657643c4..9a193327e 100644 --- a/db/docs/api_java/env_set_timeout.html +++ b/db/docs/api_java/env_set_timeout.html @@ -1,4 +1,4 @@ -<!--Id: env_set_timeout.so,v 10.6 2002/06/24 14:49:21 bostic Exp --> +<!--Id: env_set_timeout.so,v 10.8 2002/08/29 03:24:42 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -61,7 +61,7 @@ detection is performed. on a per-lock or per-transaction basis. See <a href="../api_java/lock_vec.html">DbEnv.lock_vec</a> and <a href="../api_java/txn_set_timeout.html">DbTxn.set_timeout</a> for more information. <p>The DbEnv.set_timeout method configures a database environment, not only operations -performed using the specified <a href="../api_java/dbenv_class.html">DbEnv</a> handle. +performed using the specified <a href="../api_java/env_class.html">DbEnv</a> handle. <p>The DbEnv.set_timeout interface may be called at any time during the life of the application. <p>The DbEnv.set_timeout method throws an exception that encapsulates a non-zero error value on @@ -76,45 +76,9 @@ If a catastrophic error has occurred, the DbEnv.set_timeout method may fail and throw a <a href="../api_java/runrec_class.html">DbRunRecoveryException</a>, in which case all subsequent Berkeley DB calls will fail in the same way. <h1>Class</h1> -<a href="../api_java/dbenv_class.html">DbEnv</a> +<a href="../api_java/env_class.html">DbEnv</a> <h1>See Also</h1> -<a href="../api_java/env_close.html">DbEnv.close</a>, -<a href="../api_java/env_dbremove.html">DbEnv.dbremove</a>, -<a href="../api_java/env_dbrename.html">DbEnv.dbrename</a>, -<a href="../api_java/env_err.html">DbEnv.err</a>, -<a href="../api_java/env_err.html">DbEnv.errx</a>, -<a href="../api_java/env_version.html">DbEnv.get_version_string</a>, -<a href="../api_java/env_open.html">DbEnv.open</a>, -<a href="../api_java/env_remove.html">DbEnv.remove</a>, -<a href="../api_java/env_set_app_dispatch.html">DbEnv.set_app_dispatch</a>, -<a href="../api_java/env_set_cachesize.html">DbEnv.set_cachesize</a>, -<a href="../api_java/env_set_data_dir.html">DbEnv.set_data_dir</a>, -<a href="../api_java/env_set_encrypt.html">DbEnv.set_encrypt</a>, -<a href="../api_java/env_set_errcall.html">DbEnv.set_errcall</a>, -<a href="../api_java/env_set_error_stream.html">DbEnv.set_error_stream</a>, -<a href="../api_java/env_set_errpfx.html">DbEnv.set_errpfx</a>, -<a href="../api_java/env_set_feedback.html">DbEnv.set_feedback</a>, -<a href="../api_java/env_set_flags.html">DbEnv.set_flags</a>, -<a href="../api_java/env_set_lg_bsize.html">DbEnv.set_lg_bsize</a>, -<a href="../api_java/env_set_lg_dir.html">DbEnv.set_lg_dir</a>, -<a href="../api_java/env_set_lg_max.html">DbEnv.set_lg_max</a>, -<a href="../api_java/env_set_lg_regionmax.html">DbEnv.set_lg_regionmax</a>, -<a href="../api_java/env_set_lk_conflicts.html">DbEnv.set_lk_conflicts</a>, -<a href="../api_java/env_set_lk_detect.html">DbEnv.set_lk_detect</a>, -<a href="../api_java/env_set_lk_max_lockers.html">DbEnv.set_lk_max_lockers</a>, -<a href="../api_java/env_set_lk_max_locks.html">DbEnv.set_lk_max_locks</a>, -<a href="../api_java/env_set_lk_max_objects.html">DbEnv.set_lk_max_objects</a>, -<a href="../api_java/env_set_mp_mmapsize.html">DbEnv.set_mp_mmapsize</a>, -<a href="../api_java/env_set_rpc_server.html">DbEnv.set_rpc_server</a>, -<a href="../api_java/env_set_shm_key.html">DbEnv.set_shm_key</a>, -<a href="../api_java/env_set_tas_spins.html">DbEnv.set_tas_spins</a>, -<a href="../api_java/env_set_timeout.html">DbEnv.set_timeout</a>, -<a href="../api_java/env_set_tmp_dir.html">DbEnv.set_tmp_dir</a>, -<a href="../api_java/env_set_tx_max.html">DbEnv.set_tx_max</a>, -<a href="../api_java/env_set_tx_timestamp.html">DbEnv.set_tx_timestamp</a>, -<a href="../api_java/env_set_verbose.html">DbEnv.set_verbose</a> -and -<a href="../api_java/env_strerror.html">DbEnv.strerror</a>. +<a href="../api_java/env_list.html">Database Environments and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_java/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_java/lock_id_free.html b/db/docs/api_java/lock_id_free.html index 57b47f026..7a22c15ac 100644 --- a/db/docs/api_java/lock_id_free.html +++ b/db/docs/api_java/lock_id_free.html @@ -1,4 +1,4 @@ -<!--Id: lock_id_free.so,v 10.4 2002/06/24 14:49:23 bostic Exp --> +<!--Id: lock_id_free.so,v 10.5 2002/08/18 21:16:37 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -27,7 +27,7 @@ public void lock_id_free(int id) </pre></h3> <h1>Description</h1> <p>The DbEnv.lock_id_free method frees a locker ID allocated by the -DbEnv.lock_id method. +<a href="../api_java/lock_id.html">DbEnv.lock_id</a> method. <p>The DbEnv.lock_id_free method throws an exception that encapsulates a non-zero error value on failure. <h1>Errors</h1> @@ -40,20 +40,9 @@ If a catastrophic error has occurred, the DbEnv.lock_id_free method may fail and throw a <a href="../api_java/runrec_class.html">DbRunRecoveryException</a>, in which case all subsequent Berkeley DB calls will fail in the same way. <h1>Class</h1> -<a href="../api_java/dbenv_class.html">DbEnv</a>, <a href="../api_java/lock_class.html">DbLock</a> +<a href="../api_java/env_class.html">DbEnv</a>, <a href="../api_java/lock_class.html">DbLock</a> <h1>See Also</h1> -<a href="../api_java/env_set_lk_conflicts.html">DbEnv.set_lk_conflicts</a>, -<a href="../api_java/env_set_lk_detect.html">DbEnv.set_lk_detect</a>, -<a href="../api_java/env_set_lk_max_lockers.html">DbEnv.set_lk_max_lockers</a>, -<a href="../api_java/env_set_lk_max_locks.html">DbEnv.set_lk_max_locks</a>, -<a href="../api_java/env_set_lk_max_objects.html">DbEnv.set_lk_max_objects</a>, -<a href="../api_java/lock_detect.html">DbEnv.lock_detect</a>, -<a href="../api_java/lock_get.html">DbEnv.lock_get</a>, -<a href="../api_java/lock_id.html">DbEnv.lock_id</a>, -<a href="../api_java/lock_id_free.html">DbEnv.lock_id_free</a>, -<a href="../api_java/lock_put.html">DbEnv.lock_put</a> -and -<a href="../api_java/lock_stat.html">DbEnv.lock_stat</a>. +<a href="../api_java/lock_list.html">Locking Subsystem and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_java/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_java/log_cursor.html b/db/docs/api_java/log_cursor.html index 9542433af..566ee5cfd 100644 --- a/db/docs/api_java/log_cursor.html +++ b/db/docs/api_java/log_cursor.html @@ -1,4 +1,4 @@ -<!--Id: log_cursor.so,v 10.3 2002/06/24 14:49:24 bostic Exp --> +<!--Id: log_cursor.so,v 10.5 2002/08/24 15:13:43 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -41,49 +41,9 @@ If a catastrophic error has occurred, the DbEnv.log_cursor method may fail and throw a <a href="../api_java/runrec_class.html">DbRunRecoveryException</a>, in which case all subsequent Berkeley DB calls will fail in the same way. <h1>Class</h1> -<a href="../api_java/db_class.html">Db</a> +<a href="../api_java/env_class.html">DbEnv</a>, <a href="../api_java/logc_class.html">DbLogc</a>, <a href="../api_java/lsn_class.html">DbLsn</a> <h1>See Also</h1> -<a href="../api_java/db_associate.html">Db.associate</a>, -<a href="../api_java/db_close.html">Db.close</a>, -<a href="../api_java/db_cursor.html">Db.cursor</a>, -<a href="../api_java/db_del.html">Db.del</a>, -<a href="../api_java/db_err.html">Db.err</a>, -<a href="../api_java/db_err.html">Db.errx</a>, -<a href="../api_java/db_fd.html">Db.fd</a>, -<a href="../api_java/db_get.html">Db.get</a>, -<a href="../api_java/db_get_byteswapped.html">Db.get_byteswapped</a>, -<a href="../api_java/db_get_type.html">Db.get_type</a>, -<a href="../api_java/db_join.html">Db.join</a>, -<a href="../api_java/db_key_range.html">Db.key_range</a>, -<a href="../api_java/db_open.html">Db.open</a>, -<a href="../api_java/db_get.html">Db.pget</a>, -<a href="../api_java/db_put.html">Db.put</a>, -<a href="../api_java/db_remove.html">Db.remove</a>, -<a href="../api_java/db_rename.html">Db.rename</a>, -<a href="../api_java/db_set_append_recno.html">Db.set_append_recno</a>, -<a href="../api_java/db_set_bt_minkey.html">Db.set_bt_minkey</a>, -<a href="../api_java/db_set_cache_priority.html">Db.set_cache_priority</a>, -<a href="../api_java/db_set_cachesize.html">Db.set_cachesize</a>, -<a href="../api_java/db_set_encrypt.html">Db.set_encrypt</a>, -<a href="../api_java/db_set_errcall.html">Db.set_errcall</a>, -<a href="../api_java/db_set_errpfx.html">Db.set_errpfx</a>, -<a href="../api_java/db_set_feedback.html">Db.set_feedback</a>, -<a href="../api_java/db_set_flags.html">Db.set_flags</a>, -<a href="../api_java/db_set_h_ffactor.html">Db.set_h_ffactor</a>, -<a href="../api_java/db_set_h_nelem.html">Db.set_h_nelem</a>, -<a href="../api_java/db_set_lorder.html">Db.set_lorder</a>, -<a href="../api_java/db_set_pagesize.html">Db.set_pagesize</a>, -<a href="../api_java/db_set_q_extentsize.html">Db.set_q_extentsize</a>, -<a href="../api_java/db_set_re_delim.html">Db.set_re_delim</a>, -<a href="../api_java/db_set_re_len.html">Db.set_re_len</a>, -<a href="../api_java/db_set_re_pad.html">Db.set_re_pad</a>, -<a href="../api_java/db_set_re_source.html">Db.set_re_source</a>, -<a href="../api_java/db_stat.html">Db.stat</a>, -<a href="../api_java/db_sync.html">Db.sync</a>, -<a href="../api_java/db_truncate.html">Db.truncate</a>, -<a href="../api_java/db_upgrade.html">Db.upgrade</a> -and -<a href="../api_java/db_verify.html">Db.verify</a>. +<a href="../api_java/log_list.html">Logging Subsystem and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_java/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_java/logc_class.html b/db/docs/api_java/logc_class.html index 5cefe0f34..4ad402c70 100644 --- a/db/docs/api_java/logc_class.html +++ b/db/docs/api_java/logc_class.html @@ -1,4 +1,4 @@ -<!--Id: logc_class.so,v 1.3 2002/06/27 19:10:06 bostic Exp --> +<!--Id: logc_class.so,v 1.5 2002/08/24 18:22:51 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -25,30 +25,15 @@ import com.sleepycat.db.*; public class DbLogc extends Object { ... } </pre></h3> <h1>Description</h1> -<p>This manual page describes the specific details of the DbLogc class, -which provides cursor support for log files. -<p>The DbLogc functions are the library interface supporting -sequential access to the records stored in log files. Cursors are -created by calling the <a href="../api_java/log_cursor.html">DbEnv.log_cursor</a> method which returns a DbLogc object. +<p>The DbLogc object is the handle for a cursor into the log files, +supporting sequential access to the records stored in log files. The +handle is not free-threaded. Once the <a href="../api_java/logc_close.html">DbLogc.close</a> method is called, +the handle may not be accessed again, regardless of that method's +return. <h1>Class</h1> -<a href="../api_java/dbenv_class.html">DbEnv</a>, <a href="../api_java/logc_class.html">DbLogc</a> +<a href="../api_java/env_class.html">DbEnv</a>, DbLogc, <a href="../api_java/lsn_class.html">DbLsn</a> <h1>See Also</h1> -<a href="../api_java/log_archive.html">DbEnv.log_archive</a>, -<a href="../api_java/log_file.html">DbEnv.log_file</a>, -<a href="../api_java/log_flush.html">DbEnv.log_flush</a>, -<a href="../api_java/log_put.html">DbEnv.log_put</a>, -<a href="../api_java/log_stat.html">DbEnv.log_stat</a>, -<a href="../api_java/env_set_lg_bsize.html">DbEnv.set_lg_bsize</a>, -<a href="../api_java/env_set_lg_dir.html">DbEnv.set_lg_dir</a>, -<a href="../api_java/env_set_lg_max.html">DbEnv.set_lg_max</a>, -<a href="../api_java/env_set_lg_regionmax.html">DbEnv.set_lg_regionmax</a>, -and -<a href="../api_java/log_compare.html">DbEnv.log_compare</a>. -<p> -<a href="../api_java/log_cursor.html">DbEnv.log_cursor</a>, -<a href="../api_java/logc_close.html">DbLogc.close</a> -and -<a href="../api_java/logc_get.html">DbLogc.get</a>. +<a href="../api_java/log_list.html">Logging Subsystem and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_java/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_java/logc_close.html b/db/docs/api_java/logc_close.html index cabdf6ebb..9d0ce47a6 100644 --- a/db/docs/api_java/logc_close.html +++ b/db/docs/api_java/logc_close.html @@ -1,4 +1,4 @@ -<!--Id: logc_close.so,v 10.5 2002/06/24 14:49:25 bostic Exp --> +<!--Id: logc_close.so,v 10.6 2002/08/18 21:16:43 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -43,24 +43,9 @@ If a catastrophic error has occurred, the DbLogc.close method may fail and throw a <a href="../api_java/runrec_class.html">DbRunRecoveryException</a>, in which case all subsequent Berkeley DB calls will fail in the same way. <h1>Class</h1> -<a href="../api_java/dbenv_class.html">DbEnv</a>, <a href="../api_java/logc_class.html">DbLogc</a> +<a href="../api_java/env_class.html">DbEnv</a>, <a href="../api_java/logc_class.html">DbLogc</a>, <a href="../api_java/lsn_class.html">DbLsn</a> <h1>See Also</h1> -<a href="../api_java/log_archive.html">DbEnv.log_archive</a>, -<a href="../api_java/log_file.html">DbEnv.log_file</a>, -<a href="../api_java/log_flush.html">DbEnv.log_flush</a>, -<a href="../api_java/log_put.html">DbEnv.log_put</a>, -<a href="../api_java/log_stat.html">DbEnv.log_stat</a>, -<a href="../api_java/env_set_lg_bsize.html">DbEnv.set_lg_bsize</a>, -<a href="../api_java/env_set_lg_dir.html">DbEnv.set_lg_dir</a>, -<a href="../api_java/env_set_lg_max.html">DbEnv.set_lg_max</a>, -<a href="../api_java/env_set_lg_regionmax.html">DbEnv.set_lg_regionmax</a>, -and -<a href="../api_java/log_compare.html">DbEnv.log_compare</a>. -<p> -<a href="../api_java/log_cursor.html">DbEnv.log_cursor</a>, -<a href="../api_java/logc_close.html">DbLogc.close</a> -and -<a href="../api_java/logc_get.html">DbLogc.get</a>. +<a href="../api_java/log_list.html">Logging Subsystem and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_java/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_java/logc_get.html b/db/docs/api_java/logc_get.html index c9288d3e3..8cd873f23 100644 --- a/db/docs/api_java/logc_get.html +++ b/db/docs/api_java/logc_get.html @@ -1,4 +1,4 @@ -<!--Id: logc_get.so,v 10.36 2002/07/01 16:52:26 bostic Exp --> +<!--Id: logc_get.so,v 10.37 2002/08/18 21:16:44 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -83,24 +83,9 @@ If a catastrophic error has occurred, the DbLogc.get method may fail and throw a <a href="../api_java/runrec_class.html">DbRunRecoveryException</a>, in which case all subsequent Berkeley DB calls will fail in the same way. <h1>Class</h1> -<a href="../api_java/dbenv_class.html">DbEnv</a>, <a href="../api_java/logc_class.html">DbLogc</a> +<a href="../api_java/env_class.html">DbEnv</a>, <a href="../api_java/logc_class.html">DbLogc</a>, <a href="../api_java/lsn_class.html">DbLsn</a> <h1>See Also</h1> -<a href="../api_java/log_archive.html">DbEnv.log_archive</a>, -<a href="../api_java/log_file.html">DbEnv.log_file</a>, -<a href="../api_java/log_flush.html">DbEnv.log_flush</a>, -<a href="../api_java/log_put.html">DbEnv.log_put</a>, -<a href="../api_java/log_stat.html">DbEnv.log_stat</a>, -<a href="../api_java/env_set_lg_bsize.html">DbEnv.set_lg_bsize</a>, -<a href="../api_java/env_set_lg_dir.html">DbEnv.set_lg_dir</a>, -<a href="../api_java/env_set_lg_max.html">DbEnv.set_lg_max</a>, -<a href="../api_java/env_set_lg_regionmax.html">DbEnv.set_lg_regionmax</a>, -and -<a href="../api_java/log_compare.html">DbEnv.log_compare</a>. -<p> -<a href="../api_java/log_cursor.html">DbEnv.log_cursor</a>, -<a href="../api_java/logc_close.html">DbLogc.close</a> -and -<a href="../api_java/logc_get.html">DbLogc.get</a>. +<a href="../api_java/log_list.html">Logging Subsystem and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_java/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_java/rep_elect.html b/db/docs/api_java/rep_elect.html index d68435a9c..3b7d0f1f8 100644 --- a/db/docs/api_java/rep_elect.html +++ b/db/docs/api_java/rep_elect.html @@ -1,4 +1,4 @@ -<!--Id: rep_elect.so,v 1.6 2002/06/24 14:49:30 bostic Exp --> +<!--Id: rep_elect.so,v 1.8 2002/08/29 03:25:54 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -68,12 +68,10 @@ failure. If a catastrophic error has occurred, the DbEnv.rep_elect method may fail and throw a <a href="../api_java/runrec_class.html">DbRunRecoveryException</a>, in which case all subsequent Berkeley DB calls will fail in the same way. +<h1>Class</h1> +<a href="../api_java/env_class.html">DbEnv</a> <h1>See Also</h1> -<a href="../api_java/rep_start.html">DbEnv.rep_start</a>, -<a href="../api_java/rep_elect.html">DbEnv.rep_elect</a>, -<a href="../api_java/rep_message.html">DbEnv.rep_process_message</a> -and -<a href="../api_java/rep_transport.html">DbEnv.set_rep_transport</a>. +<a href="../api_java/rep_list.html">Replication and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_java/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_java/rep_message.html b/db/docs/api_java/rep_message.html index c127df371..343f96e51 100644 --- a/db/docs/api_java/rep_message.html +++ b/db/docs/api_java/rep_message.html @@ -1,4 +1,4 @@ -<!--Id: rep_message.so,v 1.9 2002/07/02 15:22:24 bostic Exp --> +<!--Id: rep_message.so,v 1.11 2002/08/29 03:26:00 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -41,7 +41,7 @@ corresponds to the environment that sent the message to be processed (see <a href="../ref/rep/id.html">Replication environment IDs</a> for more information). <p>For implementation reasons, all incoming replication messages must be -processed using the same <a href="../api_java/dbenv_class.html">DbEnv</a> handle. It is not required that +processed using the same <a href="../api_java/env_class.html">DbEnv</a> handle. It is not required that a single thread of control process all messages, only that all threads of control processing messages use the same handle. <p> @@ -78,12 +78,10 @@ failure. If a catastrophic error has occurred, the DbEnv.rep_process_message method may fail and throw a <a href="../api_java/runrec_class.html">DbRunRecoveryException</a>, in which case all subsequent Berkeley DB calls will fail in the same way. +<h1>Class</h1> +<a href="../api_java/env_class.html">DbEnv</a> <h1>See Also</h1> -<a href="../api_java/rep_start.html">DbEnv.rep_start</a>, -<a href="../api_java/rep_elect.html">DbEnv.rep_elect</a>, -<a href="../api_java/rep_message.html">DbEnv.rep_process_message</a> -and -<a href="../api_java/rep_transport.html">DbEnv.set_rep_transport</a>. +<a href="../api_java/rep_list.html">Replication and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_java/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_java/rep_start.html b/db/docs/api_java/rep_start.html index f0d5e3273..78c3e3f41 100644 --- a/db/docs/api_java/rep_start.html +++ b/db/docs/api_java/rep_start.html @@ -1,4 +1,4 @@ -<!--Id: rep_start.so,v 1.3 2002/06/24 14:49:30 bostic Exp --> +<!--Id: rep_start.so,v 1.5 2002/08/29 03:26:00 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -61,12 +61,10 @@ replication group by a call to <a href="../api_java/rep_transport.html">DbEnv.se If a catastrophic error has occurred, the DbEnv.rep_start method may fail and throw a <a href="../api_java/runrec_class.html">DbRunRecoveryException</a>, in which case all subsequent Berkeley DB calls will fail in the same way. +<h1>Class</h1> +<a href="../api_java/env_class.html">DbEnv</a> <h1>See Also</h1> -<a href="../api_java/rep_start.html">DbEnv.rep_start</a>, -<a href="../api_java/rep_elect.html">DbEnv.rep_elect</a>, -<a href="../api_java/rep_message.html">DbEnv.rep_process_message</a> -and -<a href="../api_java/rep_transport.html">DbEnv.set_rep_transport</a>. +<a href="../api_java/rep_list.html">Replication and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_java/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_java/rep_transport.html b/db/docs/api_java/rep_transport.html index 0b263947a..9bf357037 100644 --- a/db/docs/api_java/rep_transport.html +++ b/db/docs/api_java/rep_transport.html @@ -1,4 +1,4 @@ -<!--Id: rep_transport.so,v 1.7 2002/06/24 14:49:30 bostic Exp --> +<!--Id: rep_transport.so,v 1.9 2002/08/29 03:26:00 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -79,7 +79,7 @@ otherwise, any error from the <b>send</b> interface will be ignored. <b>send</b> interface; see <a href="../ref/env/faq.html">Environment FAQ</a> for a discussion on how to do this. <p>The DbEnv.set_rep_transport method configures operations performed using the specified -<a href="../api_java/dbenv_class.html">DbEnv</a> handle, not all operations performed on the underlying +<a href="../api_java/env_class.html">DbEnv</a> handle, not all operations performed on the underlying database environment. <p>The DbEnv.set_rep_transport interface may be called at any time during the life of the application. @@ -90,12 +90,10 @@ failure. If a catastrophic error has occurred, the DbEnv.set_rep_transport method may fail and throw a <a href="../api_java/runrec_class.html">DbRunRecoveryException</a>, in which case all subsequent Berkeley DB calls will fail in the same way. +<h1>Class</h1> +<a href="../api_java/env_class.html">DbEnv</a> <h1>See Also</h1> -<a href="../api_java/rep_start.html">DbEnv.rep_start</a>, -<a href="../api_java/rep_elect.html">DbEnv.rep_elect</a>, -<a href="../api_java/rep_message.html">DbEnv.rep_process_message</a> -and -<a href="../api_java/rep_transport.html">DbEnv.set_rep_transport</a>. +<a href="../api_java/rep_list.html">Replication and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_java/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/api_java/txn_set_timeout.html b/db/docs/api_java/txn_set_timeout.html index 5b44a390b..66de82d9d 100644 --- a/db/docs/api_java/txn_set_timeout.html +++ b/db/docs/api_java/txn_set_timeout.html @@ -1,4 +1,4 @@ -<!--Id: txn_set_timeout.so,v 10.6 2002/06/24 14:49:36 bostic Exp --> +<!--Id: txn_set_timeout.so,v 10.8 2002/08/29 03:26:14 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -64,23 +64,9 @@ If a catastrophic error has occurred, the DbTxn.set_timeout method may fail and throw a <a href="../api_java/runrec_class.html">DbRunRecoveryException</a>, in which case all subsequent Berkeley DB calls will fail in the same way. <h1>Class</h1> -<a href="../api_java/dbenv_class.html">DbEnv</a>, <a href="../api_java/txn_class.html">DbTxn</a> +<a href="../api_java/env_class.html">DbEnv</a>, <a href="../api_java/txn_class.html">DbTxn</a> <h1>See Also</h1> -<a href="../api_java/env_set_tx_max.html">DbEnv.set_tx_max</a>, -<a href="../api_java/env_set_tx_timestamp.html">DbEnv.set_tx_timestamp</a>, -<a href="../api_java/txn_begin.html">DbEnv.txn_begin</a>, -<a href="../api_java/txn_checkpoint.html">DbEnv.txn_checkpoint</a>, -<a href="../api_java/txn_recover.html">DbEnv.txn_recover</a> -and -<a href="../api_java/txn_stat.html">DbEnv.txn_stat</a>. -<p> -<a href="../api_java/txn_abort.html">DbTxn.abort</a>, -<a href="../api_java/txn_commit.html">DbTxn.commit</a>, -<a href="../api_java/txn_discard.html">DbTxn.discard</a>, -<a href="../api_java/txn_id.html">DbTxn.id</a>, -<a href="../api_java/txn_prepare.html">DbTxn.prepare</a> -and -<a href="../api_java/txn_set_timeout.html">DbTxn.set_timeout</a>. +<a href="../api_java/txn_list.html">Transaction Subsystem and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_java/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a> diff --git a/db/docs/ref/am_misc/get_bulk.html b/db/docs/ref/am_misc/get_bulk.html index eb340ae3b..5bac2ed84 100644 --- a/db/docs/ref/am_misc/get_bulk.html +++ b/db/docs/ref/am_misc/get_bulk.html @@ -20,14 +20,14 @@ of method calls can often dominate performance. Berkeley DB offers bulk get interfaces which can significantly increase performance for some applications. To retrieve records in bulk, an application buffer must -be specified to the <a href="../../api_c/db_get.html">DB->get</a> or <a href="../../api_c/dbc_get.html">DBcursor->c_get</a> functions. This is done +be specified to the <a href="../../api_c/db_get.html">DB->get</a> or <a href="../../api_c/dbc_get.html">DBcursor->c_get</a> methods. This is done in the C API by setting the <b>data</b> and <b>ulen</b> fields of the -<b>data</b> <a href="../../api_c/dbt.html">DBT</a> to reference an application buffer, and the -<b>flags</b> field of that structure to <a href="../../api_c/dbt.html#DB_DBT_USERMEM">DB_DBT_USERMEM</a>. In +<b>data</b> <a href="../../api_c/dbt_class.html">DBT</a> to reference an application buffer, and the +<b>flags</b> field of that structure to <a href="../../api_c/dbt_class.html#DB_DBT_USERMEM">DB_DBT_USERMEM</a>. In the Berkeley DB C++ and Java APIs, the actions are similar, although there -are API-specific methods to set the <a href="../../api_c/dbt.html">DBT</a> values. Then, the +are API-specific methods to set the <a href="../../api_c/dbt_class.html">DBT</a> values. Then, the <a href="../../api_c/dbc_get.html#DB_MULTIPLE">DB_MULTIPLE</a> or <a href="../../api_c/dbc_get.html#DB_MULTIPLE_KEY">DB_MULTIPLE_KEY</a> flags are specified to -the <a href="../../api_c/db_get.html">DB->get</a> or <a href="../../api_c/dbc_get.html">DBcursor->c_get</a> functions, which cause multiple records +the <a href="../../api_c/db_get.html">DB->get</a> or <a href="../../api_c/dbc_get.html">DBcursor->c_get</a> methods, which cause multiple records to be returned in the specified buffer. <p>The difference between <a href="../../api_c/dbc_get.html#DB_MULTIPLE">DB_MULTIPLE</a> and <a href="../../api_c/dbc_get.html#DB_MULTIPLE_KEY">DB_MULTIPLE_KEY</a> is as follows: <a href="../../api_c/dbc_get.html#DB_MULTIPLE">DB_MULTIPLE</a> returns multiple data items for a @@ -36,7 +36,7 @@ retrieve all of the duplicate data items for a single key in a single call. The <a href="../../api_c/dbc_get.html#DB_MULTIPLE_KEY">DB_MULTIPLE_KEY</a> flag is used to retrieve multiple key/data pairs, where each returned key may or may not have duplicate data items. -<p>Once the <a href="../../api_c/db_get.html">DB->get</a> or <a href="../../api_c/dbc_get.html">DBcursor->c_get</a> function has returned, the +<p>Once the <a href="../../api_c/db_get.html">DB->get</a> or <a href="../../api_c/dbc_get.html">DBcursor->c_get</a> method has returned, the application will walk through the buffer handling the returned records. This is implemented for the C and C++ APIs using four macros: <a href="../../api_c/dbt_bulk.html#DB_MULTIPLE_INIT">DB_MULTIPLE_INIT</a>, <a href="../../api_c/dbt_bulk.html#DB_MULTIPLE_NEXT">DB_MULTIPLE_NEXT</a>, @@ -47,18 +47,18 @@ the Java API, this is implemented as three iterator classes: <a href="../../api_java/dbt_bulk_class.html">DbMultipleRecnoDataIterator</a>. <p>The <a href="../../api_c/dbt_bulk.html#DB_MULTIPLE_INIT">DB_MULTIPLE_INIT</a> macro is always called first. It initializes a local application variable and the <b>data</b> -<a href="../../api_c/dbt.html">DBT</a> for stepping through the set of returned records. Then, +<a href="../../api_c/dbt_class.html">DBT</a> for stepping through the set of returned records. Then, the application calls one of the remaining three macros: <a href="../../api_c/dbt_bulk.html#DB_MULTIPLE_NEXT">DB_MULTIPLE_NEXT</a>, <a href="../../api_c/dbt_bulk.html#DB_MULTIPLE_KEY_NEXT">DB_MULTIPLE_KEY_NEXT</a>, and <a href="../../api_c/dbt_bulk.html#DB_MULTIPLE_RECNO_NEXT">DB_MULTIPLE_RECNO_NEXT</a>. <p>If the <a href="../../api_c/dbc_get.html#DB_MULTIPLE">DB_MULTIPLE</a> flag was specified to the <a href="../../api_c/db_get.html">DB->get</a> or -<a href="../../api_c/dbc_get.html">DBcursor->c_get</a> function, the application will always call the +<a href="../../api_c/dbc_get.html">DBcursor->c_get</a> method, the application will always call the <a href="../../api_c/dbt_bulk.html#DB_MULTIPLE_NEXT">DB_MULTIPLE_NEXT</a> macro. If the <a href="../../api_c/dbc_get.html#DB_MULTIPLE_KEY">DB_MULTIPLE_KEY</a> flag -was specified to the <a href="../../api_c/db_get.html">DB->get</a> or <a href="../../api_c/dbc_get.html">DBcursor->c_get</a> function, and, the +was specified to the <a href="../../api_c/db_get.html">DB->get</a> or <a href="../../api_c/dbc_get.html">DBcursor->c_get</a> method, and, the underlying database is a Btree or Hash database, the application will always call the <a href="../../api_c/dbt_bulk.html#DB_MULTIPLE_KEY_NEXT">DB_MULTIPLE_KEY_NEXT</a> macro. If the <a href="../../api_c/dbc_get.html#DB_MULTIPLE_KEY">DB_MULTIPLE_KEY</a> flag was specified to the <a href="../../api_c/db_get.html">DB->get</a> or -<a href="../../api_c/dbc_get.html">DBcursor->c_get</a> function, and, the underlying database is a Queue or Recno +<a href="../../api_c/dbc_get.html">DBcursor->c_get</a> method, and, the underlying database is a Queue or Recno database, the application will always call the <a href="../../api_c/dbt_bulk.html#DB_MULTIPLE_RECNO_NEXT">DB_MULTIPLE_RECNO_NEXT</a> macro. The <a href="../../api_c/dbt_bulk.html#DB_MULTIPLE_NEXT">DB_MULTIPLE_NEXT</a>, <a href="../../api_c/dbt_bulk.html#DB_MULTIPLE_KEY_NEXT">DB_MULTIPLE_KEY_NEXT</a>, and <a href="../../api_c/dbt_bulk.html#DB_MULTIPLE_RECNO_NEXT">DB_MULTIPLE_RECNO_NEXT</a> macros diff --git a/db/docs/ref/build_unix/macosx.html b/db/docs/ref/build_unix/macosx.html index 202d5191e..1c31dee4a 100644 --- a/db/docs/ref/build_unix/macosx.html +++ b/db/docs/ref/build_unix/macosx.html @@ -1,4 +1,4 @@ -<!--Id: macosx.so,v 11.4 2002/06/20 14:43:40 bostic Exp --> +<!--Id: macosx.so,v 11.7 2002/09/05 15:59:10 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -17,7 +17,7 @@ <p> <h1 align=center>Mac OS X</h1> <p><ol> -<p><li><b>I can't use the Java API on Mac OS X.</b> +<p><li><b>I cannot use the Java API on Mac OS X.</b> <p>The Berkeley DB configuration and build procedure is unable to dynamically load some libraries on Mac OS X. This restriction is expected to be removed in future Berkeley DB releases. @@ -27,6 +27,13 @@ our build procedure, does not support this extension. To work around this, you must add a -D option to your Java command line to specify the complete pathname of the installed library: <p><blockquote><pre>% java -Dsleepycat.db.libfile=/full/path/to/libdb_java-VERSION.so</pre></blockquote> +<p><li><b>I cannot run the test suite on Mac OS X.</b> +<p>The Mac OS X 10.1 and 10.2 Developer Tools installer will optionally +install one additional package called simply, "BSD SDK". That package +contains the additional parts of the TCL distribution required to +configure, compile and run the Berkeley DB test suite. The Berkeley DB configuration +step will need the flag "--with-tcl=/System/Library/Tcl/8.3" added to +the arguments in order to locate the now installed TCL distribution. </ol> <table width="100%"><tr><td><br></td><td align=right><a href="../../ref/build_unix/linux.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/build_unix/osf1.html"><img src="../../images/next.gif" alt="Next"></a> </td></tr></table> diff --git a/db/docs/ref/lock/timeout.html b/db/docs/ref/lock/timeout.html index a6da96ca6..bebc07e09 100644 --- a/db/docs/ref/lock/timeout.html +++ b/db/docs/ref/lock/timeout.html @@ -36,10 +36,10 @@ configured with a different option, then regular deadlock detection will be performed, and in addition, if timeouts have also been specified, lock requests and transactions will time out as well. <p>Lock and transaction timeouts may be specified on a database environment -wide basis using the <a href="../../api_c/env_set_timeout.html">DB_ENV->set_timeout</a> function. Lock timeouts may be -specified on a per-lock request basis using the <a href="../../api_c/lock_vec.html">DB_ENV->lock_vec</a> function. +wide basis using the <a href="../../api_c/env_set_timeout.html">DB_ENV->set_timeout</a> method. Lock timeouts may be +specified on a per-lock request basis using the <a href="../../api_c/lock_vec.html">DB_ENV->lock_vec</a> method. Transaction timeouts may be specified on a per-transaction basis using -the <a href="../../api_c/txn_set_timeout.html">DB_TXN->set_timeout</a> function. Per-lock and per-transaction timeouts +the <a href="../../api_c/txn_set_timeout.html">DB_TXN->set_timeout</a> method. Per-lock and per-transaction timeouts supersede environment wide timeouts. <p>For example, consider that the environment wide transaction timeout has been set to 20ms, the environment wide lock timeout has been set to diff --git a/db/docs/ref/rep/app.html b/db/docs/ref/rep/app.html index cb05fc5a6..5ab61eb18 100644 --- a/db/docs/ref/rep/app.html +++ b/db/docs/ref/rep/app.html @@ -1,4 +1,4 @@ -<!--Id: app.so,v 1.5 2002/07/13 18:09:09 margo Exp --> +<!--Id: app.so,v 1.6 2002/08/21 21:02:15 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -23,18 +23,18 @@ applications use the following additional four Berkeley DB methods: <a href="../../api_c/rep_transport.html">DB_ENV->set_rep_transport</a> and may also use the configuration method <a href="../../api_c/rep_limit.html">DB_ENV->set_rep_limit</a>: <p><dl compact> -<p><dt><a href="../../api_c/rep_transport.html">DB_ENV->set_rep_transport</a><dd>The <a href="../../api_c/rep_transport.html">DB_ENV->set_rep_transport</a> function configures the replication system's +<p><dt><a href="../../api_c/rep_transport.html">DB_ENV->set_rep_transport</a><dd>The <a href="../../api_c/rep_transport.html">DB_ENV->set_rep_transport</a> method configures the replication system's communications infrastructure. -<p><dt><a href="../../api_c/rep_start.html">DB_ENV->rep_start</a><dd>The <a href="../../api_c/rep_start.html">DB_ENV->rep_start</a> function configures (or reconfigures) an existing database +<p><dt><a href="../../api_c/rep_start.html">DB_ENV->rep_start</a><dd>The <a href="../../api_c/rep_start.html">DB_ENV->rep_start</a> method configures (or reconfigures) an existing database environment to be a replication master or client. -<p><dt><a href="../../api_c/rep_message.html">DB_ENV->rep_process_message</a><dd>The <a href="../../api_c/rep_message.html">DB_ENV->rep_process_message</a> function is used to process incoming messages from other +<p><dt><a href="../../api_c/rep_message.html">DB_ENV->rep_process_message</a><dd>The <a href="../../api_c/rep_message.html">DB_ENV->rep_process_message</a> method is used to process incoming messages from other environments in the replication group. For clients, it is responsible for accepting log records and updating the local databases based on messages from the master. For both the master and the clients, it is responsible for handling administrative functions (for example, the protocol for dealing with lost messages), and permitting new clients to join an active replication group. -<p><dt><a href="../../api_c/rep_elect.html">DB_ENV->rep_elect</a><dd>The <a href="../../api_c/rep_elect.html">DB_ENV->rep_elect</a> function causes the replication group to elect a new +<p><dt><a href="../../api_c/rep_elect.html">DB_ENV->rep_elect</a><dd>The <a href="../../api_c/rep_elect.html">DB_ENV->rep_elect</a> method causes the replication group to elect a new master; it is called whenever contact with the master is lost. <p><dt><a href="../../api_c/rep_limit.html">DB_ENV->set_rep_limit</a><dd>The <a href="../../api_c/rep_limit.html">DB_ENV->set_rep_limit</a> imposes an upper bound on the amount of data that will be sent in response to a single call to <a href="../../api_c/rep_message.html">DB_ENV->rep_process_message</a>. @@ -49,22 +49,22 @@ communications infrastructure, and second, it must start the Berkeley DB replication system. Generally, a replicated application will do normal Berkeley DB recovery and configuration, exactly like any other transactional application. Then, once the database environment has been opened, it -will call the <a href="../../api_c/rep_transport.html">DB_ENV->set_rep_transport</a> function to configure Berkeley DB for replication, -and then will call the <a href="../../api_c/rep_start.html">DB_ENV->rep_start</a> function to join or create the -replication group. When calling <a href="../../api_c/rep_start.html">DB_ENV->rep_start</a>, the application has -two choices: specifically configure the master for the replication -group, or, alternatively, configure all group members as clients and -then call an election, letting the clients select the master from among -themselves. Either is correct, and the choice is entirely up to the -application. -<p>The result of calling <a href="../../api_c/rep_start.html">DB_ENV->rep_start</a> is usually the discovery of a +will call the <a href="../../api_c/rep_transport.html">DB_ENV->set_rep_transport</a> method to configure Berkeley DB for replication, +and then will call the <a href="../../api_c/rep_start.html">DB_ENV->rep_start</a> method to join or create the +replication group. +<p>When calling <a href="../../api_c/rep_start.html">DB_ENV->rep_start</a>, the application has two choices: +specifically configure the master for the replication group, or, +alternatively, configure all group members as clients and then call an +election, letting the clients select the master from among themselves. +Either is correct, and the choice is entirely up to the application. +The result of calling <a href="../../api_c/rep_start.html">DB_ENV->rep_start</a> is usually the discovery of a master, or the declaration of the local environment as the master. If -a master has not been discovered after a reasonable amount of time, -the application should call <a href="../../api_c/rep_elect.html">DB_ENV->rep_elect</a> to call for an election. +a master has not been discovered after a reasonable amount of time, the +application should call <a href="../../api_c/rep_elect.html">DB_ENV->rep_elect</a> to call for an election. <p>In the case of multiple processes accessing a replicated environment, all of the threads of control expecting to modify databases in the environment or process replication messages must call the -<a href="../../api_c/rep_start.html">DB_ENV->rep_start</a> function. Note that not all processes running in replicated +<a href="../../api_c/rep_start.html">DB_ENV->rep_start</a> method. Note that not all processes running in replicated environments need to call <a href="../../api_c/rep_transport.html">DB_ENV->set_rep_transport</a> or <a href="../../api_c/rep_start.html">DB_ENV->rep_start</a>. Read-only processes running in a master environment do not need to be configured for replication in any way. Processes running in a client @@ -82,11 +82,13 @@ upgraded to be the master, the client would have to close and reopen all of its databases in order to support database update queries.) However, even though the database is opened read-write on the client, any attempt to update it will result in an error until the client is -reconfigured as a master. +reconfigured as a master. No databases can be opened on clients before +calling <a href="../../api_c/rep_start.html">DB_ENV->rep_start</a>, and attempting to do so will result in an +error. <p>There are no additional interface calls required to shut down a database environment participating in a replication group. The application should shut down the environment in the usual manner, by calling the -<a href="../../api_c/env_close.html">DB_ENV->close</a> function. +<a href="../../api_c/env_close.html">DB_ENV->close</a> method. <table width="100%"><tr><td><br></td><td align=right><a href="../../ref/rep/pri.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/rep/comm.html"><img src="../../images/next.gif" alt="Next"></a> </td></tr></table> <p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font> diff --git a/db/docs/ref/rep/comm.html b/db/docs/ref/rep/comm.html index 26a47734f..00f4f2b45 100644 --- a/db/docs/ref/rep/comm.html +++ b/db/docs/ref/rep/comm.html @@ -1,4 +1,4 @@ -<!--Id: comm.so,v 1.4 2002/05/09 20:38:15 bostic Exp --> +<!--Id: comm.so,v 1.5 2002/09/05 01:46:30 margo Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -21,11 +21,11 @@ channels, receiving and sending messages. These threads accept messages from remote environments for the local database environment, and accept messages from the local environment for remote environments. Messages from remote environments are passed to the local database environment -using the <a href="../../api_c/rep_message.html">DB_ENV->rep_process_message</a> function. Messages from the local environment +using the <a href="../../api_c/rep_message.html">DB_ENV->rep_process_message</a> method. Messages from the local environment are passed to the application for transmission using the callback -interface specified to the <a href="../../api_c/rep_transport.html">DB_ENV->set_rep_transport</a> function. +interface specified to the <a href="../../api_c/rep_transport.html">DB_ENV->set_rep_transport</a> method. <p>Processes establish communication channels by calling the -<a href="../../api_c/rep_transport.html">DB_ENV->set_rep_transport</a> function, regardless of whether they are running in client +<a href="../../api_c/rep_transport.html">DB_ENV->set_rep_transport</a> method, regardless of whether they are running in client or server environments. This method specifies the <b>send</b> interface, a callback interface used by Berkeley DB for sending messages to other database environments in the replication group. The <b>send</b> @@ -33,33 +33,34 @@ interface takes an environment ID and two opaque data objects. It is the responsibility of the <b>send</b> interface to transmit the information in the two data objects to the database environment corresponding to the ID, with the receiving application then calling -the <a href="../../api_c/rep_message.html">DB_ENV->rep_process_message</a> function to process the message. +the <a href="../../api_c/rep_message.html">DB_ENV->rep_process_message</a> method to process the message. <p>The details of the transport mechanism are left entirely to the application; the only requirement is that the data buffer and size of -each of the control and rec <a href="../../api_c/dbt.html">DBT</a>s passed to the <b>send</b> +each of the control and rec <a href="../../api_c/dbt_class.html">DBT</a>s passed to the <b>send</b> function on the sending site be faithfully copied and delivered to the receiving site by means of a call to <a href="../../api_c/rep_message.html">DB_ENV->rep_process_message</a> with -corresponding arguments. The <a href="../../api_c/rep_message.html">DB_ENV->rep_process_message</a> function is free-threaded; it +corresponding arguments. The <a href="../../api_c/rep_message.html">DB_ENV->rep_process_message</a> method is free-threaded; it is safe to deliver any number of messages simultaneously, and from any arbitrary thread or process in the Berkeley DB environment. <p>There are a number of informational returns from the -<a href="../../api_c/rep_message.html">DB_ENV->rep_process_message</a> function: +<a href="../../api_c/rep_message.html">DB_ENV->rep_process_message</a> method: <p><dl compact> <p><dt><a href="../../api_c/rep_message.html#DB_REP_DUPMASTER">DB_REP_DUPMASTER</a><dd>When <a href="../../api_c/rep_message.html">DB_ENV->rep_process_message</a> returns <a href="../../api_c/rep_message.html#DB_REP_DUPMASTER">DB_REP_DUPMASTER</a>, it means that another database environment in the replication group also believes -itself to be the master. The application should reconfigure itself as -a client using the <a href="../../api_c/rep_start.html">DB_ENV->rep_start</a> function, and then call for an election by -calling the <a href="../../api_c/rep_elect.html">DB_ENV->rep_elect</a> function. +itself to be the master. The application should complete all active +transactions, close all open database handles, reconfigure itself as +a client using the <a href="../../api_c/rep_start.html">DB_ENV->rep_start</a> method, and then call for an election by +calling the <a href="../../api_c/rep_elect.html">DB_ENV->rep_elect</a> method. <p><dt><a href="../../api_c/rep_message.html#DB_REP_HOLDELECTION">DB_REP_HOLDELECTION</a><dd>When <a href="../../api_c/rep_message.html">DB_ENV->rep_process_message</a> returns <a href="../../api_c/rep_message.html#DB_REP_HOLDELECTION">DB_REP_HOLDELECTION</a>, it means that another database environment in the replication group has called -for an election. The application should call the <a href="../../api_c/rep_elect.html">DB_ENV->rep_elect</a> function. +for an election. The application should call the <a href="../../api_c/rep_elect.html">DB_ENV->rep_elect</a> method. <p><dt><a href="../../api_c/rep_message.html#DB_REP_NEWMASTER">DB_REP_NEWMASTER</a><dd>When <a href="../../api_c/rep_message.html">DB_ENV->rep_process_message</a> returns <a href="../../api_c/rep_message.html#DB_REP_NEWMASTER">DB_REP_NEWMASTER</a>, it means that a new master has been elected. The call will also return the local environment's ID for that master. If the ID of the master has changed, the application may need to reconfigure itself (for example, to redirect update queries to the new master rather then the old one). If the new master is the local environment, then the application must call the -<a href="../../api_c/rep_start.html">DB_ENV->rep_start</a> function, and reconfigure the supporting Berkeley DB library as a +<a href="../../api_c/rep_start.html">DB_ENV->rep_start</a> method, and reconfigure the supporting Berkeley DB library as a replication master. <p><dt><a href="../../api_c/rep_message.html#DB_REP_NEWSITE">DB_REP_NEWSITE</a><dd>When <a href="../../api_c/rep_message.html">DB_ENV->rep_process_message</a> returns <a href="../../api_c/rep_message.html#DB_REP_NEWSITE">DB_REP_NEWSITE</a>, it means that a message from a previously unknown member of the replication group has diff --git a/db/docs/ref/rep/elect.html b/db/docs/ref/rep/elect.html index a811d4fd1..f4b39fdd9 100644 --- a/db/docs/ref/rep/elect.html +++ b/db/docs/ref/rep/elect.html @@ -1,4 +1,4 @@ -<!--Id: elect.so,v 1.5 2001/10/25 21:20:01 bostic Exp --> +<!--Id: elect.so,v 1.7 2002/09/11 19:25:03 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -20,7 +20,7 @@ application. It is not dangerous to hold an election, as the Berkeley DB election process ensures there is never more than a single master environment. Clients should initiate an election whenever they lose contact with the master environment, whenever they see a return of -<a href="../../api_c/rep_message.html#DB_REP_HOLDELECTION">DB_REP_HOLDELECTION</a> from the <a href="../../api_c/rep_message.html">DB_ENV->rep_process_message</a> function, or when, for +<a href="../../api_c/rep_message.html#DB_REP_HOLDELECTION">DB_REP_HOLDELECTION</a> from the <a href="../../api_c/rep_message.html">DB_ENV->rep_process_message</a> method, or when, for whatever reason, they do not know who the master is. It is not necessary for applications to immediately hold elections when they start, as any existing master will be quickly discovered after calling @@ -34,12 +34,12 @@ of the replication group must participate in the election. In the case of multiple database environments with equal priorities, the environment with the most recent log records will win. <p>It is dangerous to configure more than one master environment using the -<a href="../../api_c/rep_start.html">DB_ENV->rep_start</a> function, and applications should be careful not to do so. +<a href="../../api_c/rep_start.html">DB_ENV->rep_start</a> method, and applications should be careful not to do so. Applications should only configure themselves as the master environment if they are the only possible master, or if they have won an election. An application can only know it has won an election if the -<a href="../../api_c/rep_elect.html">DB_ENV->rep_elect</a> function returns success and the local database environment's -ID as the new master environment ID, or if the <a href="../../api_c/rep_message.html">DB_ENV->rep_process_message</a> function +<a href="../../api_c/rep_elect.html">DB_ENV->rep_elect</a> method returns success and the local database environment's +ID as the new master environment ID, or if the <a href="../../api_c/rep_message.html">DB_ENV->rep_process_message</a> method returns <a href="../../api_c/rep_message.html#DB_REP_NEWMASTER">DB_REP_NEWMASTER</a> and the local database environment's ID as the new master environment ID. <p>To add a database environment to the replication group with the intent @@ -63,7 +63,7 @@ partition, either of these choices can result in there being two masters in one replication group, and the databases in the environment might irretrievably diverge as they are modified in different ways by the masters. -<p>Finally, it is possible for the wrong database environment to win an +<p>It is possible for a less-preferred database environment to win an election if a number of systems crash at the same time. Because an election winner is declared as soon as enough environments participate in the election, the environment on a slow booting but well-connected @@ -74,6 +74,22 @@ machine room), applications should bring the database environments on line as clients initially (which will allow them to process read queries immediately), and then hold an election after sufficient time has passed for the slower booting machines to catch up. +<p>If, for any reason, a less-preferred database environment becomes the +master, it is possible to switch masters in a replicated environment, +although it is not a simple operation. For example, the preferred +master crashes, and one of the replication group clients becomes the +group master. In order to restore the preferred master to master +status, take the following steps: +<p><ol> +<p><li>The preferred master should reboot and re-join the replication group +as a client. +<li>Once the preferred master has caught up with the replication group, the +application on the current master should complete all active +transactions, close all open database handles, and reconfigure itself +as a client using the <a href="../../api_c/rep_start.html">DB_ENV->rep_start</a> method. +<li>Then, the current or preferred master should call for an election using +the <a href="../../api_c/rep_elect.html">DB_ENV->rep_elect</a> method. +</ol> <table width="100%"><tr><td><br></td><td align=right><a href="../../ref/rep/init.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/rep/logonly.html"><img src="../../images/next.gif" alt="Next"></a> </td></tr></table> <p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font> diff --git a/db/docs/ref/rep/ex_comm.html b/db/docs/ref/rep/ex_comm.html index bc0f2dcc0..e0a56003d 100644 --- a/db/docs/ref/rep/ex_comm.html +++ b/db/docs/ref/rep/ex_comm.html @@ -25,7 +25,7 @@ all sites, a hybrid solution). The communication infrastructure is implemented in the file <b>ex_repquote/ex_rq_net.c</b>, and each part of that infrastructure is described as follows. <p>Ex_repquote maintains a table of environment ID to TCP/IP port mappings. -This table is stored in the app_private field of the <a href="../../api_c/env_create.html">DB_ENV</a> +This table is stored in the app_private field of the <a href="../../api_c/env_class.html">DB_ENV</a> object so it can be accessed by any function that has the database environment handle. The table is represented by a machtab_t structure which contains a reference to a linked list of member_t's, both of which diff --git a/db/docs/ref/rep/id.html b/db/docs/ref/rep/id.html index 9cae04d06..c728f5a00 100644 --- a/db/docs/ref/rep/id.html +++ b/db/docs/ref/rep/id.html @@ -25,7 +25,7 @@ B and C respectively, while site B might assign the identifiers 301 and 302 to sites A and C respectively. Note that it is not wrong to have global identifiers, it is just not a requirement. <p>It is the responsibility of the application to label each incoming -replication message passed to <a href="../../api_c/rep_message.html">DB_ENV->rep_process_message</a> function with the appropriate +replication message passed to <a href="../../api_c/rep_message.html">DB_ENV->rep_process_message</a> method with the appropriate identifier. Subsequently, Berkeley DB will label outgoing messages to the <b>send</b> interface with those same identifiers. <p>Negative identifiers are reserved for use by Berkeley DB, and should never be diff --git a/db/docs/ref/rep/init.html b/db/docs/ref/rep/init.html index 9901967ba..0155e8fbc 100644 --- a/db/docs/ref/rep/init.html +++ b/db/docs/ref/rep/init.html @@ -31,7 +31,7 @@ replication group. </ol> <p>If copying the backup to the client takes a long time relative to the frequency with which log files are reclaimed using the -<a href="../../utility/db_archive.html">db_archive</a> utility or the <a href="../../api_c/log_archive.html">DB_ENV->log_archive</a> function, it may be +<a href="../../utility/db_archive.html">db_archive</a> utility or the <a href="../../api_c/log_archive.html">DB_ENV->log_archive</a> method, it may be necessary to suppress log reclamation until the newly restarted client has "caught up" and applied all log records generated during its downtime. diff --git a/db/docs/ref/rep/intro.html b/db/docs/ref/rep/intro.html index d300cd27e..538c68e2f 100644 --- a/db/docs/ref/rep/intro.html +++ b/db/docs/ref/rep/intro.html @@ -1,4 +1,4 @@ -<!--Id: intro.so,v 1.4 2002/05/09 20:38:15 bostic Exp --> +<!--Id: intro.so,v 1.6 2002/08/30 20:02:24 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -56,6 +56,16 @@ For example, the application may choose to encrypt data, use a secure socket layer, or do nothing at all. The level of security is left to the sole discretion of the application. </ol> +<!--Id: m4.methods,v 1.1 2002/08/30 20:02:36 bostic Exp --> +<p><table border=1 align=center> +<tr><th>Replication and Related Methods</th><th>Description</th></tr> +<tr><td><a href="../../api_c/rep_transport.html">DB_ENV->set_rep_transport</a></td><td>Configure replication transport</td></tr> +<tr><td><a href="../../api_c/rep_elect.html">DB_ENV->rep_elect</a></td><td>Hold a replication election</td></tr> +<tr><td><a href="../../api_c/rep_limit.html">DB_ENV->set_rep_limit</a></td><td>Limit data sent in response to a single message</td></tr> +<tr><td><a href="../../api_c/rep_message.html">DB_ENV->rep_process_message</a></td><td>Process a replication message</td></tr> +<tr><td><a href="../../api_c/rep_start.html">DB_ENV->rep_start</a></td><td>Configure an environment for replication</td></tr> +<tr><td><a href="../../api_c/rep_stat.html">DB_ENV->rep_stat</a></td><td>Replication statistics</td></tr> +</table> <table width="100%"><tr><td><br></td><td align=right><a href="../../ref/transapp/faq.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/rep/id.html"><img src="../../images/next.gif" alt="Next"></a> </td></tr></table> <p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font> diff --git a/db/docs/ref/rep/logonly.html b/db/docs/ref/rep/logonly.html index e3f26ac2e..2aca1b8cf 100644 --- a/db/docs/ref/rep/logonly.html +++ b/db/docs/ref/rep/logonly.html @@ -22,8 +22,8 @@ queries but they still receive a complete copy the log files, so that in the event of master failure, a copy of the logs is available. <p>Log file only clients are configured like other client sites, except they should specify the <a href="../../api_c/rep_start.html#DB_REP_LOGSONLY">DB_REP_LOGSONLY</a> flag to the -<a href="../../api_c/rep_start.html">DB_ENV->rep_start</a> function and should specify a priority of 0 to the -<a href="../../api_c/rep_elect.html">DB_ENV->rep_elect</a> function. +<a href="../../api_c/rep_start.html">DB_ENV->rep_start</a> method and should specify a priority of 0 to the +<a href="../../api_c/rep_elect.html">DB_ENV->rep_elect</a> method. <p>There are two ways to recover using a log-file-only replica. The simplest way is to copy the log files from the log-file-only replica onto another site (either master or replica) and run catastrophic diff --git a/db/docs/ref/rep/newsite.html b/db/docs/ref/rep/newsite.html index cdd6afaf2..850d8967d 100644 --- a/db/docs/ref/rep/newsite.html +++ b/db/docs/ref/rep/newsite.html @@ -16,7 +16,7 @@ <p> <h1 align=center>Connecting to a new site</h1> <p>Connecting to a new site in the replication group happens whenever the -<a href="../../api_c/rep_message.html">DB_ENV->rep_process_message</a> function returns <a href="../../api_c/rep_message.html#DB_REP_NEWSITE">DB_REP_NEWSITE</a>. The application +<a href="../../api_c/rep_message.html">DB_ENV->rep_process_message</a> method returns <a href="../../api_c/rep_message.html#DB_REP_NEWSITE">DB_REP_NEWSITE</a>. The application should assign the new site a local environment ID number, and all future messages from the site passed to <a href="../../api_c/rep_message.html">DB_ENV->rep_process_message</a> should include that environment ID number. It is possible, of course, for the application @@ -29,13 +29,13 @@ environments to replication groups, environments joining an existing replication group may need to provide contact information. (For example, in an application using TCP/IP sockets, a DNS name or IP address might be a reasonable value to provide.) This can be done using -the <b>cdata</b> parameter to the <a href="../../api_c/rep_start.html">DB_ENV->rep_start</a> function. The information +the <b>cdata</b> parameter to the <a href="../../api_c/rep_start.html">DB_ENV->rep_start</a> method. The information referenced by <b>cdata</b> is wrapped in the initial contact message sent by the new environment, and is provided to the existing members of the group using the <b>rec</b> parameter returned by <a href="../../api_c/rep_message.html">DB_ENV->rep_process_message</a>. If no additional information was provided for Berkeley DB to forward to the existing members of the group, the <b>data</b> field of the <b>rec</b> -parameter passed to the <a href="../../api_c/rep_message.html">DB_ENV->rep_process_message</a> function will be NULL after +parameter passed to the <a href="../../api_c/rep_message.html">DB_ENV->rep_process_message</a> method will be NULL after <a href="../../api_c/rep_message.html">DB_ENV->rep_process_message</a> returns <a href="../../api_c/rep_message.html#DB_REP_NEWSITE">DB_REP_NEWSITE</a>. <table width="100%"><tr><td><br></td><td align=right><a href="../../ref/rep/comm.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/rep/init.html"><img src="../../images/next.gif" alt="Next"></a> </td></tr></table> diff --git a/db/docs/ref/rep/partition.html b/db/docs/ref/rep/partition.html index e4d678ddd..4e12fe7c9 100644 --- a/db/docs/ref/rep/partition.html +++ b/db/docs/ref/rep/partition.html @@ -64,7 +64,7 @@ database environments in the replication group, applications can keep systems from declaring themselves the master unless they can talk to at a large percentage of the sites in the system. For example, if there are 20 database environments in the replication group, and an argument -of 30 is specified to the <a href="../../api_c/rep_elect.html">DB_ENV->rep_elect</a> function, then a system will have +of 30 is specified to the <a href="../../api_c/rep_elect.html">DB_ENV->rep_elect</a> method, then a system will have to be able to talk to at least 16 of the sites to declare itself the master. <p>Specifying a <b>nsites</b> argument to <a href="../../api_c/rep_elect.html">DB_ENV->rep_elect</a> that is diff --git a/db/docs/ref/rep/trans.html b/db/docs/ref/rep/trans.html index 64e033d85..4f9021ad9 100644 --- a/db/docs/ref/rep/trans.html +++ b/db/docs/ref/rep/trans.html @@ -52,7 +52,7 @@ faster than local disk writes, replication becomes a way for applications to significantly improve their performance as well as their reliability. <p>The return status from the <b>send</b> interface specified to the -<a href="../../api_c/rep_transport.html">DB_ENV->set_rep_transport</a> function must be set by the application to ensure the +<a href="../../api_c/rep_transport.html">DB_ENV->set_rep_transport</a> method must be set by the application to ensure the transactional guarantees the application wants to provide. The effect of the <b>send</b> interface returning failure is to flush the local database environment's log as necessary to ensure that any information diff --git a/db/docs/ref/transapp/faq.html b/db/docs/ref/transapp/faq.html index 1a94344a6..d296ca164 100644 --- a/db/docs/ref/transapp/faq.html +++ b/db/docs/ref/transapp/faq.html @@ -1,4 +1,4 @@ -<!--Id: faq.so,v 10.5 2002/05/14 15:01:45 bostic Exp --> +<!--Id: faq.so,v 10.6 2002/09/09 14:52:40 bostic Exp --> <!--Copyright 1997-2002 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> @@ -74,7 +74,19 @@ cannot be simply moved into different database environments. To move a database into a different environment, dump and reload the database before moving it. If the database is too large to dump and reload, the database may be prepared in place by setting the first eight bytes of -each page in the file to 0. +each database page in the file to 0. +<p><li><b>I'm seeing the error "log_flush: LSN past current end-of-log", +what does that mean?</b> +<p>The most common cause of this error is that a system administrator has +removed all of the log files from a database environment. You should +shut down your database environment as gracefully as possible, first +flushing the database environment cache to disk, if that's possible. +Then, dump and reload your databases. If your databases are too large +to dump and reload, the database may be repaired in place by setting +the first eight bytes of each database page in the file to 0, but if +you do that, you must verify your databases before using them again. +(It is possible for the databases to be corrupted when this happens, +and the longer the application runs, the worse it can get.) </ol> <table width="100%"><tr><td><br></td><td align=right><a href="../../ref/transapp/throughput.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/rep/intro.html"><img src="../../images/next.gif" alt="Next"></a> </td></tr></table> diff --git a/db/docs/ref/transapp/hotfail.html b/db/docs/ref/transapp/hotfail.html index 5caea831a..6a973be58 100644 --- a/db/docs/ref/transapp/hotfail.html +++ b/db/docs/ref/transapp/hotfail.html @@ -30,7 +30,7 @@ to the backup directory. Berkeley DB files, it may be simpler to copy the directory itself instead of the individual files (see <a href="../../api_c/env_set_data_dir.html">DB_ENV->set_data_dir</a> for additional information). <b>Note: if any of the database files did not have -an open <a href="../../api_c/db_create.html">DB</a> handle during the lifetime of the current log files, +an open <a href="../../api_c/db_class.html">DB</a> handle during the lifetime of the current log files, <a href="../../utility/db_archive.html">db_archive</a> will not list them in its output!</b> This is another reason it may be simpler to use a separate database file directory and copy the entire directory instead of archiving only the files listed by diff --git a/db/docs/ref/upgrade.3.3/getswap.html b/db/docs/ref/upgrade.3.3/getswap.html index 17a2e004b..ac0f2880a 100644 --- a/db/docs/ref/upgrade.3.3/getswap.html +++ b/db/docs/ref/upgrade.3.3/getswap.html @@ -15,7 +15,7 @@ </td></tr></table> <p> <h1 align=center>Release 3.3: DB->get_byteswapped</h1> -<p>The <a href="../../api_c/db_get_byteswapped.html">DB->get_byteswapped</a> function method can return an error in the Berkeley DB +<p>The <a href="../../api_c/db_get_byteswapped.html">DB->get_byteswapped</a> method method can return an error in the Berkeley DB 3.3 release, and so requires an interface change. C and C++ applications calling <a href="../../api_c/db_get_byteswapped.html">DB->get_byteswapped</a> should be changed to treat the method's return as an error code, and to pass an additional diff --git a/db/docs/ref/upgrade.3.3/gettype.html b/db/docs/ref/upgrade.3.3/gettype.html index 883bc2149..8776d3fe2 100644 --- a/db/docs/ref/upgrade.3.3/gettype.html +++ b/db/docs/ref/upgrade.3.3/gettype.html @@ -15,7 +15,7 @@ </td></tr></table> <p> <h1 align=center>Release 3.3: DB->get_type</h1> -<p>The <a href="../../api_c/db_get_type.html">DB->get_type</a> function method can return an error in the Berkeley DB 3.3 +<p>The <a href="../../api_c/db_get_type.html">DB->get_type</a> method method can return an error in the Berkeley DB 3.3 release, and so requires an interface change. C and C++ applications calling <a href="../../api_c/db_get_type.html">DB->get_type</a> should be changed to treat the method's return as an error code, and to pass an additional second argument of diff --git a/db/docs/ref/upgrade.4.0/env.html b/db/docs/ref/upgrade.4.0/env.html index e506bdc51..0eea01495 100644 --- a/db/docs/ref/upgrade.4.0/env.html +++ b/db/docs/ref/upgrade.4.0/env.html @@ -20,22 +20,22 @@ replaced with the <a href="../../api_c/env_set_flags.html#DB_REGION_INIT">DB_REG <a href="../../api_c/env_set_flags.html">DB_ENV->set_flags</a> interface. This is an interface change: historically, the db_env_set_region_init interface operated on the entire Berkeley DB library, not a single environment. The new interface only -operates on a single <a href="../../api_c/env_create.html">DB_ENV</a> handle (and any handles created in +operates on a single <a href="../../api_c/env_class.html">DB_ENV</a> handle (and any handles created in the scope of that handle). Applications calling the db_env_set_region_init interface should update their calls: calls to the historic routine with an argument of 1 (0) are equivalent to calling <a href="../../api_c/env_set_flags.html">DB_ENV->set_flags</a> with the <a href="../../api_c/env_set_flags.html#DB_REGION_INIT">DB_REGION_INIT</a> flag and an argument of 1 (0). <p>The db_env_set_tas_spins interface was removed in the 4.0 release and -replaced with the <a href="../../api_c/env_set_tas_spins.html">DB_ENV->set_tas_spins</a> function. This is an interface +replaced with the <a href="../../api_c/env_set_tas_spins.html">DB_ENV->set_tas_spins</a> method. This is an interface change: historically, the db_env_set_tas_spins interface operated on the entire Berkeley DB library, not a single environment. The new interface -only operates on a single <a href="../../api_c/env_create.html">DB_ENV</a> handle (and any handles created +only operates on a single <a href="../../api_c/env_class.html">DB_ENV</a> handle (and any handles created in the scope of that handle). Applications calling the db_env_set_tas_spins interface should update their calls: calls to the -historic routine are equivalent to calling <a href="../../api_c/env_set_tas_spins.html">DB_ENV->set_tas_spins</a> function +historic routine are equivalent to calling <a href="../../api_c/env_set_tas_spins.html">DB_ENV->set_tas_spins</a> method with the same argument. In addition, for consistent behavior, all -<a href="../../api_c/env_create.html">DB_ENV</a> handles opened by the application should make the same +<a href="../../api_c/env_class.html">DB_ENV</a> handles opened by the application should make the same configuration call, or the value will need to be entered into the environment's <b>DB_CONFIG</b> file. <p>Also, three of the standard Berkeley DB debugging interfaces changed in the @@ -53,12 +53,12 @@ replaced with the <a href="../../api_c/env_set_flags.html#DB_YIELDCPU">DB_YIELDC <a href="../../api_c/env_set_flags.html">DB_ENV->set_flags</a> interface. This is an interface change: historically, the db_env_set_pageyield interface operated on the entire Berkeley DB library, not a single environment. The new interface only -operates on a single <a href="../../api_c/env_create.html">DB_ENV</a> handle (and any handles created in +operates on a single <a href="../../api_c/env_class.html">DB_ENV</a> handle (and any handles created in the scope of that handle). Applications calling the db_env_set_pageyield interface should update their calls: calls to the historic routine with an argument of 1 (0) are equivalent to calling <a href="../../api_c/env_set_flags.html">DB_ENV->set_flags</a> with the <a href="../../api_c/env_set_flags.html#DB_YIELDCPU">DB_YIELDCPU</a> flag and an -argument of 1 (0). In addition, all <a href="../../api_c/env_create.html">DB_ENV</a> handles opened by +argument of 1 (0). In addition, all <a href="../../api_c/env_class.html">DB_ENV</a> handles opened by the application will need to make the same call, or the <a href="../../api_c/env_set_flags.html#DB_YIELDCPU">DB_YIELDCPU</a> flag will need to be entered into the environment's <b>DB_CONFIG</b> file. @@ -67,7 +67,7 @@ replaced with the <a href="../../api_c/env_set_flags.html#DB_PANIC_ENVIRONMENT"> flags to the <a href="../../api_c/env_set_flags.html">DB_ENV->set_flags</a> interface. (The <a href="../../api_c/env_set_flags.html#DB_PANIC_ENVIRONMENT">DB_PANIC_ENVIRONMENT</a> flag will cause an environment to panic, affecting all threads of control using that environment. The -<a href="../../api_c/env_set_flags.html#DB_NOPANIC">DB_NOPANIC</a> flag will cause a single <a href="../../api_c/env_create.html">DB_ENV</a> handle to +<a href="../../api_c/env_set_flags.html#DB_NOPANIC">DB_NOPANIC</a> flag will cause a single <a href="../../api_c/env_class.html">DB_ENV</a> handle to ignore the current panic state of the environment.) This is an interface change: historically the db_env_set_panicstate interface operated on the entire Berkeley DB library, not a single environment. diff --git a/db/docs/ref/upgrade.4.0/lock.html b/db/docs/ref/upgrade.4.0/lock.html index d7dcf1d1f..3394f3784 100644 --- a/db/docs/ref/upgrade.4.0/lock.html +++ b/db/docs/ref/upgrade.4.0/lock.html @@ -27,7 +27,7 @@ release as follows: <tr><td>lock_vec</td><td><a href="../../api_c/lock_vec.html">DB_ENV->lock_vec</a></td></tr> </table> <p>Applications calling any of these functions should update their calls -to use the enclosing <a href="../../api_c/env_create.html">DB_ENV</a> handle's method (easily done as the +to use the enclosing <a href="../../api_c/env_class.html">DB_ENV</a> handle's method (easily done as the first argument to the existing call is the correct handle to use). <p>In addition, the <a href="../../api_c/lock_stat.html">DB_ENV->lock_stat</a> call has been changed in the 4.0 release to take a flags argument. To leave their historic behavior @@ -35,9 +35,9 @@ unchanged, applications should add a final argument of 0 to any calls made to <a href="../../api_c/lock_stat.html">DB_ENV->lock_stat</a>. <p>The C++ and Java APIs for the DbLock::put (DbLock.put) method was reworked in the 4.0 release to make the lock put interface a method of -the <a href="../../api_c/env_create.html">DB_ENV</a> handle rather than the DbLock handle. Applications +the <a href="../../api_c/env_class.html">DB_ENV</a> handle rather than the DbLock handle. Applications calling the DbLock::put or DbLock.put method should update their calls -to use the enclosing <a href="../../api_c/env_create.html">DB_ENV</a> handle's method (easily done as the +to use the enclosing <a href="../../api_c/env_class.html">DB_ENV</a> handle's method (easily done as the first argument to the existing call is the correct handle to use). <table width="100%"><tr><td><br></td><td align=right><a href="../../ref/upgrade.4.0/deadlock.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/upgrade.4.0/log.html"><img src="../../images/next.gif" alt="Next"></a> </td></tr></table> diff --git a/db/docs/ref/upgrade.4.0/lock_id_free.html b/db/docs/ref/upgrade.4.0/lock_id_free.html index 0fe47ad6b..fd2dfb4ad 100644 --- a/db/docs/ref/upgrade.4.0/lock_id_free.html +++ b/db/docs/ref/upgrade.4.0/lock_id_free.html @@ -15,8 +15,8 @@ </td></tr></table> <p> <h1 align=center>Release 4.0: DB_ENV->lock_id_free</h1> -<p>A new locker ID related API, the <a href="../../api_c/lock_id_free.html">DB_ENV->lock_id_free</a> function, was added to -Berkeley DB 4.0 release. Applications using the <a href="../../api_c/lock_id.html">DB_ENV->lock_id</a> function to allocate +<p>A new locker ID related API, the <a href="../../api_c/lock_id_free.html">DB_ENV->lock_id_free</a> method, was added to +Berkeley DB 4.0 release. Applications using the <a href="../../api_c/lock_id.html">DB_ENV->lock_id</a> method to allocate locker IDs may want to update their applications to free the locker ID when it is no longer needed. <table width="100%"><tr><td><br></td><td align=right><a href="../../ref/upgrade.4.0/set_lk_max.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/upgrade.4.0/java.html"><img src="../../images/next.gif" alt="Next"></a> diff --git a/db/docs/ref/upgrade.4.0/log.html b/db/docs/ref/upgrade.4.0/log.html index 41ae96de8..dea35d811 100644 --- a/db/docs/ref/upgrade.4.0/log.html +++ b/db/docs/ref/upgrade.4.0/log.html @@ -29,22 +29,22 @@ release as follows: <tr><td>log_unregister</td><td>DB_ENV->log_unregister</td></tr> </table> <p>Applications calling any of these functions should update their calls -to use the enclosing <a href="../../api_c/env_create.html">DB_ENV</a> handle's method (in all cases other +to use the enclosing <a href="../../api_c/env_class.html">DB_ENV</a> handle's method (in all cases other than the log_get call, this is easily done as the first argument to the existing call is the correct handle to use). <p>Application calls to the historic log_get interface must be replaced -with the creation of a log file cursor (a <a href="../../api_c/log_cursor.html">DB_LOGC</a> object), using -the <a href="../../api_c/log_cursor.html">DB_ENV->log_cursor</a> function, calls to the <a href="../../api_c/logc_get.html">DB_LOGC->get</a> function to retrieve log -records and calls to the <a href="../../api_c/logc_close.html">DB_LOGC->close</a> function to destroy the cursor. It +with the creation of a log file cursor (a <a href="../../api_c/logc_class.html">DB_LOGC</a> object), using +the <a href="../../api_c/log_cursor.html">DB_ENV->log_cursor</a> method, calls to the <a href="../../api_c/logc_get.html">DB_LOGC->get</a> method to retrieve log +records and calls to the <a href="../../api_c/logc_close.html">DB_LOGC->close</a> method to destroy the cursor. It may also be possible to simplify some applications. In previous releases of Berkeley DB, the DB_CURRENT, DB_NEXT, and DB_PREV flags to the -log_get function could not be used by a free-threaded <a href="../../api_c/env_create.html">DB_ENV</a> -handle. If their <a href="../../api_c/env_create.html">DB_ENV</a> handle was free-threaded, applications +log_get function could not be used by a free-threaded <a href="../../api_c/env_class.html">DB_ENV</a> +handle. If their <a href="../../api_c/env_class.html">DB_ENV</a> handle was free-threaded, applications had to create an additional, unique environment handle by separately calling <a href="../../api_c/env_open.html">DB_ENV->open</a> without specifying <a href="../../api_c/env_open.html#DB_THREAD">DB_THREAD</a>. This is no longer an issue in the log cursor interface, and applications may be able to remove the now unnecessary creation of the additional -<a href="../../api_c/env_create.html">DB_ENV</a> object. +<a href="../../api_c/env_class.html">DB_ENV</a> object. <p>Finally, the <a href="../../api_c/log_stat.html">DB_ENV->log_stat</a> call has been changed in the 4.0 release to take a flags argument. To leave their historic behavior unchanged, applications should add a final argument of 0 to any calls made to diff --git a/db/docs/ref/upgrade.4.0/mp.html b/db/docs/ref/upgrade.4.0/mp.html index bbd8b7ebe..01d09b3f4 100644 --- a/db/docs/ref/upgrade.4.0/mp.html +++ b/db/docs/ref/upgrade.4.0/mp.html @@ -37,27 +37,27 @@ release as follows: </table> <p>Applications calling any of the memp_register, memp_stat, memp_sync or memp_trickle interfaces should update those calls to use the enclosing -<a href="../../api_c/env_create.html">DB_ENV</a> handle's method (easily done as the first argument to the -existing call is the correct <a href="../../api_c/env_create.html">DB_ENV</a> handle). +<a href="../../api_c/env_class.html">DB_ENV</a> handle's method (easily done as the first argument to the +existing call is the correct <a href="../../api_c/env_class.html">DB_ENV</a> handle). <p>In addition, the <a href="../../api_c/memp_stat.html">DB_ENV->memp_stat</a> call has been changed in the 4.0 release to take a flags argument. To leave their historic behavior unchanged, applications should add a final argument of 0 to any calls made to <a href="../../api_c/memp_stat.html">DB_ENV->memp_stat</a>. <p>Applications calling the memp_fopen interface should update those calls -as follows: First, acquire a <a href="../../api_c/memp_fcreate.html">DB_MPOOLFILE</a> handle using the -<a href="../../api_c/memp_fcreate.html">DB_ENV->memp_fcreate</a> function. Second, if the DB_MPOOL_FINFO structure +as follows: First, acquire a <a href="../../api_c/mempfile_class.html">DB_MPOOLFILE</a> handle using the +<a href="../../api_c/memp_fcreate.html">DB_ENV->memp_fcreate</a> method. Second, if the DB_MPOOL_FINFO structure reference passed to the memp_fopen interface was non-NULL, call the -<a href="../../api_c/memp_fcreate.html">DB_MPOOLFILE</a> method corresponding to each initialized field in -the DB_MPOOL_FINFO structure. Third, call the <a href="../../api_c/memp_fopen.html">DB_MPOOLFILE->open</a> function -method to open the underlying file. If the <a href="../../api_c/memp_fopen.html">DB_MPOOLFILE->open</a> function call -fails, then <a href="../../api_c/memp_fclose.html">DB_MPOOLFILE->close</a> function must be called to destroy the allocated +<a href="../../api_c/mempfile_class.html">DB_MPOOLFILE</a> method corresponding to each initialized field in +the DB_MPOOL_FINFO structure. Third, call the <a href="../../api_c/memp_fopen.html">DB_MPOOLFILE->open</a> method +method to open the underlying file. If the <a href="../../api_c/memp_fopen.html">DB_MPOOLFILE->open</a> method call +fails, then <a href="../../api_c/memp_fclose.html">DB_MPOOLFILE->close</a> method must be called to destroy the allocated handle. <p>Applications calling the memp_fopen, memp_fclose, memp_fput, memp_fset, or memp_fsync interfaces should update those calls to use the enclosing -<a href="../../api_c/memp_fcreate.html">DB_MPOOLFILE</a> handle's method. Again, this is easily done as the -first argument to the existing call is the correct <a href="../../api_c/memp_fcreate.html">DB_MPOOLFILE</a> +<a href="../../api_c/mempfile_class.html">DB_MPOOLFILE</a> handle's method. Again, this is easily done as the +first argument to the existing call is the correct <a href="../../api_c/mempfile_class.html">DB_MPOOLFILE</a> handle. With one exception, the calling conventions of the old a new -interfaces are identical; the one exception is the <a href="../../api_c/memp_fclose.html">DB_MPOOLFILE->close</a> function, +interfaces are identical; the one exception is the <a href="../../api_c/memp_fclose.html">DB_MPOOLFILE->close</a> method, which requires an additional flag parameter that should be set to 0. <table width="100%"><tr><td><br></td><td align=right><a href="../../ref/upgrade.4.0/log.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/upgrade.4.0/txn.html"><img src="../../images/next.gif" alt="Next"></a> </td></tr></table> diff --git a/db/docs/ref/upgrade.4.0/rpc.html b/db/docs/ref/upgrade.4.0/rpc.html index 50f4cf074..09facdc18 100644 --- a/db/docs/ref/upgrade.4.0/rpc.html +++ b/db/docs/ref/upgrade.4.0/rpc.html @@ -16,8 +16,8 @@ <p> <h1 align=center>Release 4.0: DB_ENV->set_server</h1> <p>The DB_ENV->set_server interface has been replaced with the -<a href="../../api_c/env_set_rpc_server.html">DB_ENV->set_rpc_server</a> function. The DB_ENV->set_server interface -can be easily converted to the <a href="../../api_c/env_set_rpc_server.html">DB_ENV->set_rpc_server</a> function by changing +<a href="../../api_c/env_set_rpc_server.html">DB_ENV->set_rpc_server</a> method. The DB_ENV->set_server interface +can be easily converted to the <a href="../../api_c/env_set_rpc_server.html">DB_ENV->set_rpc_server</a> method by changing the name, and specifying a NULL for the added argument, second in the argument list. <table width="100%"><tr><td><br></td><td align=right><a href="../../ref/upgrade.4.0/env.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/upgrade.4.0/set_lk_max.html"><img src="../../images/next.gif" alt="Next"></a> diff --git a/db/docs/ref/upgrade.4.0/set_lk_max.html b/db/docs/ref/upgrade.4.0/set_lk_max.html index e2605de58..ba08ed694 100644 --- a/db/docs/ref/upgrade.4.0/set_lk_max.html +++ b/db/docs/ref/upgrade.4.0/set_lk_max.html @@ -17,7 +17,7 @@ <h1 align=center>Release 4.0: DB_ENV->set_lk_max</h1> <p>The DB_ENV->set_lk_max interface has been deprecated in favor of the <a href="../../api_c/env_set_lk_max_locks.html">DB_ENV->set_lk_max_locks</a>, <a href="../../api_c/env_set_lk_max_lockers.html">DB_ENV->set_lk_max_lockers</a>, -and <a href="../../api_c/env_set_lk_max_objects.html">DB_ENV->set_lk_max_objects</a> functions. The DB_ENV->set_lk_max +and <a href="../../api_c/env_set_lk_max_objects.html">DB_ENV->set_lk_max_objects</a> methods. The DB_ENV->set_lk_max interface continues to be available, but is no longer documented and is expected to be removed in a future release. <table width="100%"><tr><td><br></td><td align=right><a href="../../ref/upgrade.4.0/rpc.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/upgrade.4.0/lock_id_free.html"><img src="../../images/next.gif" alt="Next"></a> diff --git a/db/docs/ref/upgrade.4.0/txn.html b/db/docs/ref/upgrade.4.0/txn.html index 913f06334..ce06e4c52 100644 --- a/db/docs/ref/upgrade.4.0/txn.html +++ b/db/docs/ref/upgrade.4.0/txn.html @@ -30,7 +30,7 @@ release as follows: <tr><td>txn_stat</td><td><a href="../../api_c/txn_stat.html">DB_ENV->txn_stat</a></td></tr> </table> <p>Applications calling any of these functions should update their calls -to use the enclosing <a href="../../api_c/env_create.html">DB_ENV</a> or <a href="../../api_c/txn_begin.html">DB_TXN</a> handle's method +to use the enclosing <a href="../../api_c/env_class.html">DB_ENV</a> or <a href="../../api_c/txn_class.html">DB_TXN</a> handle's method (easily done as the first argument to the existing call is the correct handle to use). <p>As a special case, since applications might potentially have many calls diff --git a/db/env/db_salloc.c b/db/env/db_salloc.c index 881c63bbd..0961ac420 100644 --- a/db/env/db_salloc.c +++ b/db/env/db_salloc.c @@ -8,7 +8,7 @@ #include "db_config.h" #ifndef lint -static const char revid[] = "Id: db_salloc.c,v 11.15 2002/02/22 01:55:53 mjc Exp "; +static const char revid[] = "Id: db_salloc.c,v 11.16 2002/08/24 20:27:25 bostic Exp "; #endif /* not lint */ #ifndef NO_SYSTEM_INCLUDES diff --git a/db/examples_c/bench_001.c b/db/examples_c/bench_001.c index b35a6f806..4d1f1a326 100644 --- a/db/examples_c/bench_001.c +++ b/db/examples_c/bench_001.c @@ -2,7 +2,7 @@ * Copyright (c) 2001-2002 * Sleepycat Software. All rights reserved. * - * Id: bench_001.c,v 1.12 2002/08/06 06:11:23 bostic Exp + * Id: bench_001.c,v 1.13 2002/08/15 02:45:39 bostic Exp */ /* @@ -201,7 +201,6 @@ fill(dbenv, dbp, txn, datalen, num, dups) default: dbp->err(dbp, ret, "DB->put"); goto err; - break; } } while (++data_val->id < dups); } @@ -228,19 +227,17 @@ main(argc, argv) DB_TXN *txnp; struct timeval start_time, end_time; double secs; - int ch, count, env, ret; - int cache, datalen, dups, init, iter, num, pagesize, read, txn; + int cache, ch, count, datalen, dups, env, init, iter, num, pagesize; + int ret, rflag, txn; + txnp = NULL; datalen = 20; iter = num = 1000000; + env = 1; + dups = init = rflag = txn = 0; + pagesize = 65536; cache = 1000 * pagesize; - env = 1; - read = 0; - dups = 0; - init = 0; - txn = 0; - txnp = NULL; while ((ch = getopt(argc, argv, "c:d:EIi:l:n:p:RT")) != EOF) switch (ch) { @@ -269,7 +266,7 @@ main(argc, argv) pagesize = atoi(optarg); break; case 'R': - read = 1; + rflag = 1; break; case 'T': txn = 1; @@ -282,7 +279,7 @@ main(argc, argv) argv += optind; /* Remove the previous database. */ - if (!read) { + if (!rflag) { if (env) system("rm -rf BENCH_001; mkdir BENCH_001"); else @@ -340,7 +337,7 @@ main(argc, argv) if (ret != 0) goto err1; - if (read) { + if (rflag) { /* If no environment, fill the cache. */ if (!env && (ret = get(dbp, txn, datalen, num, dups, iter, &count)) != 0) @@ -364,7 +361,7 @@ main(argc, argv) goto err1; /* Close everything down. */ - if ((ret = dbp->close(dbp, read ? DB_NOSYNC : 0)) != 0) { + if ((ret = dbp->close(dbp, rflag ? DB_NOSYNC : 0)) != 0) { fprintf(stderr, "%s: DB->close: %s\n", progname, db_strerror(ret)); return (1); diff --git a/db/hash/hash_page.c b/db/hash/hash_page.c index 301e9bab5..a21fa035f 100644 --- a/db/hash/hash_page.c +++ b/db/hash/hash_page.c @@ -43,7 +43,7 @@ #include "db_config.h" #ifndef lint -static const char revid[] = "Id: hash_page.c,v 11.85 2002/08/06 06:11:27 bostic Exp "; +static const char revid[] = "Id: hash_page.c,v 11.87 2002/08/15 02:46:20 bostic Exp "; #endif /* not lint */ /* @@ -542,7 +542,6 @@ __ham_del_pair(dbc, reclaim_page) { DB *dbp; DBT data_dbt, key_dbt; - DB_ENV *dbenv; DB_LSN new_lsn, *n_lsn, tmp_lsn; DB_MPOOLFILE *mpf; HASH_CURSOR *hcp; @@ -554,7 +553,6 @@ __ham_del_pair(dbc, reclaim_page) u_int32_t order; dbp = dbc->dbp; - dbenv = dbp->dbenv; mpf = dbp->mpf; hcp = (HASH_CURSOR *)dbc->internal; n_pagep = p_pagep = nn_pagep = NULL; @@ -830,9 +828,10 @@ __ham_replpair(dbc, dbt, make_dup) u_int32_t make_dup; { DB *dbp; - HASH_CURSOR *hcp; DBT old_dbt, tdata, tmp; + DB_ENV *dbenv; DB_LSN new_lsn; + HASH_CURSOR *hcp; int32_t change; /* XXX: Possible overflow. */ u_int32_t dup_flag, len, memsize; int beyond_eor, is_big, ret, type; @@ -851,6 +850,7 @@ __ham_replpair(dbc, dbt, make_dup) * add. */ dbp = dbc->dbp; + dbenv = dbp->dbenv; hcp = (HASH_CURSOR *)dbc->internal; /* @@ -916,13 +916,13 @@ __ham_replpair(dbc, dbt, make_dup) /* Now we can delete the item. */ if ((ret = __ham_del_pair(dbc, 0)) != 0) { - __os_free(dbp->dbenv, memp); + __os_free(dbenv, memp); goto err; } /* Now shift old data around to make room for new. */ if (change > 0) { - if ((ret = __os_realloc(dbp->dbenv, + if ((ret = __os_realloc(dbenv, tdata.size + change, &tdata.data)) != 0) return (ret); memp = tdata.data; @@ -944,7 +944,7 @@ __ham_replpair(dbc, dbt, make_dup) /* Now add the pair. */ ret = __ham_add_el(dbc, &tmp, &tdata, type); - __os_free(dbp->dbenv, memp); + __os_free(dbenv, memp); } F_SET(hcp, dup_flag); err: return (ret); @@ -1210,7 +1210,7 @@ __ham_split_page(dbc, obucket, nbucket) } if (carray != NULL) /* We never knew its size. */ - __os_free(dbp->dbenv, carray); + __os_free(dbenv, carray); carray = NULL; } if (big_buf != NULL) @@ -1266,7 +1266,7 @@ err: if (old_pagep != NULL) if (LOCK_ISSET(block)) __TLPUT(dbc, block); if (carray != NULL) /* We never knew its size. */ - __os_free(dbp->dbenv, carray); + __os_free(dbenv, carray); return (ret); } @@ -1842,7 +1842,7 @@ __ham_c_delpg(dbc, old_pgno, new_pgno, num_ent, op, orderp) break; default: DB_ASSERT(0); - return (__db_panic(dbp->dbenv, EINVAL)); + return (__db_panic(dbenv, EINVAL)); } if (my_txn != NULL && cp->txn != my_txn) found = 1; diff --git a/db/log/log.c b/db/log/log.c index fdbb84e5a..0c2169ab7 100644 --- a/db/log/log.c +++ b/db/log/log.c @@ -7,7 +7,7 @@ #include "db_config.h" #ifndef lint -static const char revid[] = "Id: log.c,v 11.110 2002/08/13 17:51:13 sue Exp "; +static const char revid[] = "Id: log.c,v 11.111 2002/08/16 00:27:44 ubell Exp "; #endif /* not lint */ #ifndef NO_SYSTEM_INCLUDES @@ -950,8 +950,10 @@ __log_vtruncate(dbenv, lsn, ckplsn) /* Now throw away any extra log files that we have around. */ for (fn = lp->lsn.file + 1;; fn++) { - if (__log_name(dblp, fn, &fname, &fh, DB_OSO_RDONLY) != 0) + if (__log_name(dblp, fn, &fname, &fh, DB_OSO_RDONLY) != 0) { + __os_free(dbenv, fname); break; + } (void)__os_closehandle(dbenv, &fh); ret = __os_unlink(dbenv, fname); __os_free(dbenv, fname); diff --git a/db/mp/mp_bh.c b/db/mp/mp_bh.c index 24f14ab1d..2c294b054 100644 --- a/db/mp/mp_bh.c +++ b/db/mp/mp_bh.c @@ -7,7 +7,7 @@ #include "db_config.h" #ifndef lint -static const char revid[] = "Id: mp_bh.c,v 11.68 2002/05/03 15:21:16 bostic Exp "; +static const char revid[] = "Id: mp_bh.c,v 11.71 2002/09/04 19:06:45 margo Exp "; #endif /* not lint */ #ifndef NO_SYSTEM_INCLUDES @@ -157,7 +157,7 @@ __memp_bhwrite(dbmp, hp, mfp, bhp, open_extents) } local_open = 1; -found: ret = __memp_pgwrite(dbmp, dbmfp, hp, bhp) == 0 ? 0 : 1; +found: ret = __memp_pgwrite(dbmp, dbmfp, hp, bhp); MUTEX_THREAD_LOCK(dbenv, dbmp->mutexp); if (incremented) @@ -284,13 +284,11 @@ __memp_pgwrite(dbmp, dbmfp, hp, bhp) DB_ENV *dbenv; DB_IO db_io; DB_LSN lsn; - MPOOL *mp; MPOOLFILE *mfp; size_t nw; int callpgin, ret; dbenv = dbmp->dbenv; - mp = dbmp->reginfo[0].primary; mfp = dbmfp == NULL ? NULL : dbmfp->mfp; callpgin = ret = 0; @@ -360,7 +358,8 @@ __memp_pgwrite(dbmp, dbmfp, hp, bhp) dblp = dbenv->lg_handle; lp = dblp->reginfo.primary; - if (log_compare(&lp->s_lsn, &LSN(bhp->buf)) <= 0) { + if (!IS_NOT_LOGGED_LSN(LSN(bhp->buf)) && + log_compare(&lp->s_lsn, &LSN(bhp->buf)) <= 0) { R_LOCK(dbenv, &dblp->reginfo); DB_ASSERT(log_compare(&lp->s_lsn, &LSN(bhp->buf)) > 0); R_UNLOCK(dbenv, &dblp->reginfo); diff --git a/db/mp/mp_fopen.c b/db/mp/mp_fopen.c index 7209bf066..51b816431 100644 --- a/db/mp/mp_fopen.c +++ b/db/mp/mp_fopen.c @@ -7,7 +7,7 @@ #include "db_config.h" #ifndef lint -static const char revid[] = "Id: mp_fopen.c,v 11.88 2002/07/01 15:05:30 bostic Exp "; +static const char revid[] = "Id: mp_fopen.c,v 11.90 2002/08/26 15:22:01 bostic Exp "; #endif /* not lint */ #ifndef NO_SYSTEM_INCLUDES @@ -136,6 +136,11 @@ __memp_set_fileid(dbmfp, fileid) { MPF_ILLEGAL_AFTER_OPEN(dbmfp, "set_fileid"); + /* + * XXX + * This is dangerous -- we're saving the caller's pointer instead + * of allocating memory and copying the contents. + */ dbmfp->fileid = fileid; return (0); } @@ -149,10 +154,6 @@ __memp_set_ftype(dbmfp, ftype) DB_MPOOLFILE *dbmfp; int ftype; { - DB_ENV *dbenv; - - dbenv = dbmfp->dbmp->dbenv; - MPF_ILLEGAL_AFTER_OPEN(dbmfp, "set_ftype"); dbmfp->ftype = ftype; diff --git a/db/mp/mp_sync.c b/db/mp/mp_sync.c index 8c176a385..85d140514 100644 --- a/db/mp/mp_sync.c +++ b/db/mp/mp_sync.c @@ -7,7 +7,7 @@ #include "db_config.h" #ifndef lint -static const char revid[] = "Id: mp_sync.c,v 11.63 2002/08/13 18:30:07 bostic Exp "; +static const char revid[] = "Id: mp_sync.c,v 11.64 2002/08/25 16:00:27 bostic Exp "; #endif /* not lint */ #ifndef NO_SYSTEM_INCLUDES diff --git a/db/perl/BerkeleyDB/BerkeleyDB.pm b/db/perl/BerkeleyDB/BerkeleyDB.pm index 9f145af80..c56390ba7 100644 --- a/db/perl/BerkeleyDB/BerkeleyDB.pm +++ b/db/perl/BerkeleyDB/BerkeleyDB.pm @@ -17,7 +17,7 @@ use Carp; use vars qw($VERSION @ISA @EXPORT $AUTOLOAD $use_XSLoader); -$VERSION = '0.19'; +$VERSION = '0.20'; require Exporter; #require DynaLoader; @@ -85,6 +85,7 @@ BEGIN { DB_ENCRYPT DB_ENCRYPT_AES DB_ENV_APPINIT + DB_ENV_AUTO_COMMIT DB_ENV_CDB DB_ENV_CDB_ALLDB DB_ENV_CREATE @@ -307,6 +308,12 @@ BEGIN { DB_SWAPBYTES DB_SYSTEM_MEM DB_TEMPORARY + DB_TEST_ELECTINIT + DB_TEST_ELECTSEND + DB_TEST_ELECTVOTE1 + DB_TEST_ELECTVOTE2 + DB_TEST_ELECTWAIT1 + DB_TEST_ELECTWAIT2 DB_TEST_POSTDESTROY DB_TEST_POSTEXTDELETE DB_TEST_POSTEXTOPEN @@ -330,6 +337,7 @@ BEGIN { DB_TXNVERSION DB_TXN_ABORT DB_TXN_APPLY + DB_TXN_BACKWARD_ALLOC DB_TXN_BACKWARD_ROLL DB_TXN_CKP DB_TXN_FORWARD_ROLL @@ -1383,7 +1391,7 @@ sub db_join my $db = shift ; my ($addr) = $db->_db_join(@_) ; my $obj ; - $obj = bless [$addr, $db] , "BerkeleyDB::Cursor" if $addr ; + $obj = bless [$addr, $db, $_[0]] , "BerkeleyDB::Cursor" if $addr ; return $obj ; } diff --git a/db/perl/BerkeleyDB/BerkeleyDB.xs b/db/perl/BerkeleyDB/BerkeleyDB.xs index 47ca6165a..531b38a65 100644 --- a/db/perl/BerkeleyDB/BerkeleyDB.xs +++ b/db/perl/BerkeleyDB/BerkeleyDB.xs @@ -347,28 +347,6 @@ hash_delete(char * hash, char * key); # endif #endif -#ifdef DBM_FILTERING -#define ckFilter(arg,type,name) \ - if (db->type) { \ - SV * save_defsv ; \ - /* printf("filtering %s\n", name) ;*/ \ - if (db->filtering) \ - softCrash("recursion detected in %s", name) ; \ - db->filtering = TRUE ; \ - save_defsv = newSVsv(DEFSV) ; \ - sv_setsv(DEFSV, arg) ; \ - PUSHMARK(sp) ; \ - (void) perl_call_sv(db->type, G_DISCARD|G_NOARGS); \ - sv_setsv(arg, DEFSV) ; \ - sv_setsv(DEFSV, save_defsv) ; \ - SvREFCNT_dec(save_defsv) ; \ - db->filtering = FALSE ; \ - /*printf("end of filtering %s\n", name) ;*/ \ - } -#else -#define ckFilter(type, sv, name) -#endif - #define ERR_BUFF "BerkeleyDB::Error" #define ZMALLOC(to, typ) ((to = (typ *)safemalloc(sizeof(typ))), \ @@ -421,7 +399,7 @@ hash_delete(char * hash, char * key); #define OutputValue(arg, name) \ { if (RETVAL == 0) { \ my_sv_setpvn(arg, name.data, name.size) ; \ - ckFilter(arg, filter_fetch_value,"filter_fetch_value") ; \ + DBM_ckFilter(arg, filter_fetch_value,"filter_fetch_value") ; \ } \ } @@ -434,7 +412,7 @@ hash_delete(char * hash, char * key); else { \ my_sv_setpvn(arg, name.data, name.size) ; \ } \ - ckFilter(arg, filter_fetch_value, "filter_fetch_value"); \ + DBM_ckFilter(arg, filter_fetch_value, "filter_fetch_value"); \ } \ } @@ -446,7 +424,7 @@ hash_delete(char * hash, char * key); } \ else \ sv_setiv(arg, (I32)*(I32*)name.data - RECNO_BASE); \ - ckFilter(arg, filter_fetch_key, "filter_fetch_key") ; \ + DBM_ckFilter(arg, filter_fetch_key, "filter_fetch_key") ; \ } \ } @@ -461,7 +439,7 @@ hash_delete(char * hash, char * key); else { \ my_sv_setpvn(arg, name.data, name.size); \ } \ - ckFilter(arg, filter_fetch_key, "filter_fetch_key") ; \ + DBM_ckFilter(arg, filter_fetch_key, "filter_fetch_key") ; \ } \ } @@ -2232,7 +2210,9 @@ db_stat(db, flags=0) #else hv_store_iv(RETVAL, "hash_nrecs", stat->hash_nrecs); #endif +#ifndef AT_LEAST_DB_3_1 hv_store_iv(RETVAL, "hash_nelem", stat->hash_nelem); +#endif hv_store_iv(RETVAL, "hash_ffactor", stat->hash_ffactor); hv_store_iv(RETVAL, "hash_buckets", stat->hash_buckets); hv_store_iv(RETVAL, "hash_free", stat->hash_free); @@ -2847,7 +2827,7 @@ filter_fetch_key(db, code) SV * code SV * RETVAL = &PL_sv_undef ; CODE: - setFilter(filter_fetch_key) ; + DBM_setFilter(db->filter_fetch_key, code) ; SV * filter_store_key(db, code) @@ -2855,7 +2835,7 @@ filter_store_key(db, code) SV * code SV * RETVAL = &PL_sv_undef ; CODE: - setFilter(filter_store_key) ; + DBM_setFilter(db->filter_store_key, code) ; SV * filter_fetch_value(db, code) @@ -2863,7 +2843,7 @@ filter_fetch_value(db, code) SV * code SV * RETVAL = &PL_sv_undef ; CODE: - setFilter(filter_fetch_value) ; + DBM_setFilter(db->filter_fetch_value, code) ; SV * filter_store_value(db, code) @@ -2871,7 +2851,7 @@ filter_store_value(db, code) SV * code SV * RETVAL = &PL_sv_undef ; CODE: - setFilter(filter_store_value) ; + DBM_setFilter(db->filter_store_value, code) ; #endif /* DBM_FILTERING */ @@ -2948,7 +2928,7 @@ db_get(db, key, data, flags=0) Trace((" RETVAL %d\n", RETVAL)); OUTPUT: RETVAL - key if (writeToKey()) OutputValue(ST(1), key) ; + key if (writeToKey()) OutputKey(ST(1), key) ; data #define db_pget(db, key, pkey, data, flags) \ @@ -2974,7 +2954,7 @@ db_pget(db, key, pkey, data, flags=0) #endif OUTPUT: RETVAL - key if (writeToKey()) OutputValue(ST(1), key) ; + key if (writeToKey()) OutputKey(ST(1), key) ; pkey data diff --git a/db/perl/BerkeleyDB/Changes b/db/perl/BerkeleyDB/Changes index caad63691..cbeb1a34d 100644 --- a/db/perl/BerkeleyDB/Changes +++ b/db/perl/BerkeleyDB/Changes @@ -1,5 +1,13 @@ Revision history for Perl extension BerkeleyDB. +0.20 2nd September 2002 + + * More support for building with Berkeley DB 4.1.x + * db->get & db->pget used the wrong output macro for DBM filters + bug spotted by Aaron Ross. + * db_join didn't keep a reference to the cursors it was joining. + Spotted by Winton Davies. + 0.19 5th June 2002 * Removed the targets that used mkconsts from Makefile.PL. They relied on a module that is not available in all versions of Perl. diff --git a/db/perl/BerkeleyDB/Makefile.PL b/db/perl/BerkeleyDB/Makefile.PL index e0e17bb12..86da9a845 100644 --- a/db/perl/BerkeleyDB/Makefile.PL +++ b/db/perl/BerkeleyDB/Makefile.PL @@ -43,7 +43,7 @@ $OS2 = "-DOS2" if $^O eq 'os2' ; WriteMakefile( NAME => 'BerkeleyDB', LIBS => ["-L${LIB_DIR} $LIBS"], - MAN3PODS => {}, # Pods will be built by installman. + #MAN3PODS => {}, # Pods will be built by installman. INC => "-I$INC_DIR", VERSION_FROM => 'BerkeleyDB.pm', XSPROTOARG => '-noprototypes', diff --git a/db/perl/BerkeleyDB/README b/db/perl/BerkeleyDB/README index c4ed4dacc..a600e3131 100644 --- a/db/perl/BerkeleyDB/README +++ b/db/perl/BerkeleyDB/README @@ -1,8 +1,8 @@ BerkeleyDB - Version 0.19 + Version 0.20 - 5th June 2002 + 2nd Sept 2002 Copyright (c) 1997-2002 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify diff --git a/db/perl/BerkeleyDB/config.in b/db/perl/BerkeleyDB/config.in index d5b4c0075..fd1bb1cae 100644 --- a/db/perl/BerkeleyDB/config.in +++ b/db/perl/BerkeleyDB/config.in @@ -7,28 +7,16 @@ # Change the path below to point to the directory where db.h is # installed on your system. -#INCLUDE = /usr/local/include -INCLUDE = /usr/local/BerkeleyDB/include -#INCLUDE = ./libraries/2.7.5/include -#INCLUDE = ./libraries/3.0.55/include -#INCLUDE = ./libraries/3.1.17/include -#INCLUDE = ./libraries/3.3.11/include -#INCLUDE = ./libraries/4.1.12/include -#INCLUDE = ./libraries/4.0.14/include +INCLUDE = /usr/local/include +#INCLUDE = /usr/local/BerkeleyDB/include # 2. Where is libdb? # # Change the path below to point to the directory where libdb is # installed on your system. -#LIB = /usr/local/lib -LIB = /usr/local/BerkeleyDB/lib -#LIB = ./libraries/2.7.5/lib -#LIB = ./libraries/3.0.55/lib -#LIB = ./libraries/3.1.17/lib -#LIB = ./libraries/3.3.11/lib -#LIB = ./libraries/4.1.12/lib -#LIB = ./libraries/4.0.14/lib +LIB = /usr/local/lib +#LIB = /usr/local/BerkeleyDB/lib # 3. Is the library called libdb? # diff --git a/db/perl/BerkeleyDB/constants.h b/db/perl/BerkeleyDB/constants.h index 257d5c2a4..d86cef155 100644 --- a/db/perl/BerkeleyDB/constants.h +++ b/db/perl/BerkeleyDB/constants.h @@ -1394,7 +1394,7 @@ constant_12 (pTHX_ const char *name, IV *iv_return) { #if (DB_VERSION_MAJOR > 4) || \ (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 1) || \ (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 1 && \ - DB_VERSION_PATCH >= 12) + DB_VERSION_PATCH >= 17) *iv_return = DB_TXN_PRINT; return PERL_constant_ISIV; #else @@ -1495,7 +1495,7 @@ constant_13 (pTHX_ const char *name, IV *iv_return) { #if (DB_VERSION_MAJOR > 4) || \ (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 1) || \ (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 1 && \ - DB_VERSION_PATCH >= 12) + DB_VERSION_PATCH >= 17) *iv_return = DB_LOCK_TRADE; return PERL_constant_ISIV; #else @@ -2476,7 +2476,7 @@ constant_15 (pTHX_ const char *name, IV *iv_return) { #if (DB_VERSION_MAJOR > 4) || \ (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 1) || \ (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 1 && \ - DB_VERSION_PATCH >= 12) + DB_VERSION_PATCH >= 17) *iv_return = DB_TXN_GETPGNOS; return PERL_constant_ISIV; #else @@ -2576,7 +2576,7 @@ constant_15 (pTHX_ const char *name, IV *iv_return) { #if (DB_VERSION_MAJOR > 4) || \ (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 1) || \ (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 1 && \ - DB_VERSION_PATCH >= 12) + DB_VERSION_PATCH >= 17) *iv_return = DB_PRIORITY_LOW; return PERL_constant_ISIV; #else @@ -2738,7 +2738,7 @@ constant_16 (pTHX_ const char *name, IV *iv_return) { #if (DB_VERSION_MAJOR > 4) || \ (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 1) || \ (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 1 && \ - DB_VERSION_PATCH >= 12) + DB_VERSION_PATCH >= 17) *iv_return = DB_PRIORITY_HIGH; return PERL_constant_ISIV; #else @@ -3076,8 +3076,8 @@ constant_17 (pTHX_ const char *name, IV *iv_return, const char **pv_return) { here. However, subsequent manual editing may have added or removed some. DB_ENV_DIRECT_LOG DB_ENV_REP_CLIENT DB_ENV_REP_MASTER DB_ENV_STANDALONE DB_ENV_SYSTEM_MEM DB_ENV_TXN_NOSYNC DB_ENV_USER_ALLOC DB_GET_BOTH_RANGE - DB_LOG_SILENT_ERR DB_RPC_SERVERPROG DB_RPC_SERVERVERS DB_TEST_PRERENAME - DB_TXN_POPENFILES DB_VERSION_STRING */ + DB_LOG_SILENT_ERR DB_RPC_SERVERPROG DB_RPC_SERVERVERS DB_TEST_ELECTINIT + DB_TEST_ELECTSEND DB_TEST_PRERENAME DB_TXN_POPENFILES DB_VERSION_STRING */ /* Offset 14 gives the best switch position. */ switch (name[14]) { case 'A': @@ -3119,6 +3119,15 @@ constant_17 (pTHX_ const char *name, IV *iv_return, const char **pv_return) { return PERL_constant_NOTDEF; #endif } + if (memEQ(name, "DB_TEST_ELECTSEND", 17)) { + /* ^ */ +#ifdef DB_TEST_ELECTSEND + *iv_return = DB_TEST_ELECTSEND; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } break; case 'I': if (memEQ(name, "DB_VERSION_STRING", 17)) { @@ -3184,6 +3193,15 @@ constant_17 (pTHX_ const char *name, IV *iv_return, const char **pv_return) { return PERL_constant_NOTDEF; #endif } + if (memEQ(name, "DB_TEST_ELECTINIT", 17)) { + /* ^ */ +#ifdef DB_TEST_ELECTINIT + *iv_return = DB_TEST_ELECTINIT; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } break; case 'O': if (memEQ(name, "DB_ENV_STANDALONE", 17)) { @@ -3237,10 +3255,11 @@ static int constant_18 (pTHX_ const char *name, IV *iv_return) { /* When generated this function returned values for the list of names given here. However, subsequent manual editing may have added or removed some. - DB_ALREADY_ABORTED DB_ENV_OPEN_CALLED DB_ENV_REGION_INIT - DB_LOCK_NOTGRANTED DB_MPOOL_NEW_GROUP DB_PR_RECOVERYTEST - DB_SET_TXN_TIMEOUT DB_TEST_POSTRENAME DB_TEST_PREDESTROY - DB_TEST_PREEXTOPEN */ + DB_ALREADY_ABORTED DB_ENV_AUTO_COMMIT DB_ENV_OPEN_CALLED + DB_ENV_REGION_INIT DB_LOCK_NOTGRANTED DB_MPOOL_NEW_GROUP + DB_PR_RECOVERYTEST DB_SET_TXN_TIMEOUT DB_TEST_ELECTVOTE1 + DB_TEST_ELECTVOTE2 DB_TEST_ELECTWAIT1 DB_TEST_ELECTWAIT2 + DB_TEST_POSTRENAME DB_TEST_PREDESTROY DB_TEST_PREEXTOPEN */ /* Offset 13 gives the best switch position. */ switch (name[13]) { case 'A': @@ -3306,6 +3325,15 @@ constant_18 (pTHX_ const char *name, IV *iv_return) { return PERL_constant_NOTDEF; #endif } + if (memEQ(name, "DB_ENV_AUTO_COMMIT", 18)) { + /* ^ */ +#ifdef DB_ENV_AUTO_COMMIT + *iv_return = DB_ENV_AUTO_COMMIT; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } break; case 'S': if (memEQ(name, "DB_TEST_PREDESTROY", 18)) { @@ -3329,6 +3357,46 @@ constant_18 (pTHX_ const char *name, IV *iv_return) { #endif } break; + case 'V': + if (memEQ(name, "DB_TEST_ELECTVOTE1", 18)) { + /* ^ */ +#ifdef DB_TEST_ELECTVOTE1 + *iv_return = DB_TEST_ELECTVOTE1; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + if (memEQ(name, "DB_TEST_ELECTVOTE2", 18)) { + /* ^ */ +#ifdef DB_TEST_ELECTVOTE2 + *iv_return = DB_TEST_ELECTVOTE2; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 'W': + if (memEQ(name, "DB_TEST_ELECTWAIT1", 18)) { + /* ^ */ +#ifdef DB_TEST_ELECTWAIT1 + *iv_return = DB_TEST_ELECTWAIT1; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + if (memEQ(name, "DB_TEST_ELECTWAIT2", 18)) { + /* ^ */ +#ifdef DB_TEST_ELECTWAIT2 + *iv_return = DB_TEST_ELECTWAIT2; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; case 'Y': if (memEQ(name, "DB_PR_RECOVERYTEST", 18)) { /* ^ */ @@ -3521,7 +3589,7 @@ constant_19 (pTHX_ const char *name, IV *iv_return) { #if (DB_VERSION_MAJOR > 4) || \ (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 1) || \ (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 1 && \ - DB_VERSION_PATCH >= 12) + DB_VERSION_PATCH >= 17) *iv_return = DB_PRIORITY_DEFAULT; return PERL_constant_ISIV; #else @@ -3637,7 +3705,7 @@ constant_20 (pTHX_ const char *name, IV *iv_return) { #if (DB_VERSION_MAJOR > 4) || \ (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 1) || \ (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 1 && \ - DB_VERSION_PATCH >= 12) + DB_VERSION_PATCH >= 17) *iv_return = DB_PRIORITY_VERY_LOW; return PERL_constant_ISIV; #else @@ -3676,9 +3744,23 @@ constant_21 (pTHX_ const char *name, IV *iv_return) { /* When generated this function returned values for the list of names given here. However, subsequent manual editing may have added or removed some. DB_LOCK_UPGRADE_WRITE DB_PRIORITY_VERY_HIGH DB_TEST_POSTEXTDELETE - DB_TEST_POSTEXTUNLINK */ + DB_TEST_POSTEXTUNLINK DB_TXN_BACKWARD_ALLOC */ /* Offset 16 gives the best switch position. */ switch (name[16]) { + case 'A': + if (memEQ(name, "DB_TXN_BACKWARD_ALLOC", 21)) { + /* ^ */ +#if (DB_VERSION_MAJOR > 4) || \ + (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 1) || \ + (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 1 && \ + DB_VERSION_PATCH >= 17) + *iv_return = DB_TXN_BACKWARD_ALLOC; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; case 'E': if (memEQ(name, "DB_TEST_POSTEXTDELETE", 21)) { /* ^ */ @@ -3721,7 +3803,7 @@ constant_21 (pTHX_ const char *name, IV *iv_return) { #if (DB_VERSION_MAJOR > 4) || \ (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 1) || \ (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 1 && \ - DB_VERSION_PATCH >= 12) + DB_VERSION_PATCH >= 17) *iv_return = DB_PRIORITY_VERY_HIGH; return PERL_constant_ISIV; #else @@ -3759,15 +3841,15 @@ my @names = (qw(DB_AFTER DB_AGGRESSIVE DB_ALREADY_ABORTED DB_APPEND DB_CXX_NO_EXCEPTIONS DB_DELETED DB_DELIMITER DB_DIRECT DB_DIRECT_DB DB_DIRECT_LOG DB_DIRTY_READ DB_DONOTINDEX DB_DUP DB_DUPCURSOR DB_DUPSORT DB_EID_BROADCAST DB_EID_INVALID - DB_ENCRYPT DB_ENCRYPT_AES DB_ENV_APPINIT DB_ENV_CDB - DB_ENV_CDB_ALLDB DB_ENV_CREATE DB_ENV_DBLOCAL DB_ENV_DIRECT_DB - DB_ENV_DIRECT_LOG DB_ENV_FATAL DB_ENV_LOCKDOWN DB_ENV_LOCKING - DB_ENV_LOGGING DB_ENV_NOLOCKING DB_ENV_NOMMAP DB_ENV_NOPANIC - DB_ENV_OPEN_CALLED DB_ENV_OVERWRITE DB_ENV_PANIC_OK - DB_ENV_PRIVATE DB_ENV_REGION_INIT DB_ENV_REP_CLIENT - DB_ENV_REP_LOGSONLY DB_ENV_REP_MASTER DB_ENV_RPCCLIENT - DB_ENV_RPCCLIENT_GIVEN DB_ENV_STANDALONE DB_ENV_SYSTEM_MEM - DB_ENV_THREAD DB_ENV_TXN DB_ENV_TXN_NOSYNC + DB_ENCRYPT DB_ENCRYPT_AES DB_ENV_APPINIT DB_ENV_AUTO_COMMIT + DB_ENV_CDB DB_ENV_CDB_ALLDB DB_ENV_CREATE DB_ENV_DBLOCAL + DB_ENV_DIRECT_DB DB_ENV_DIRECT_LOG DB_ENV_FATAL DB_ENV_LOCKDOWN + DB_ENV_LOCKING DB_ENV_LOGGING DB_ENV_NOLOCKING DB_ENV_NOMMAP + DB_ENV_NOPANIC DB_ENV_OPEN_CALLED DB_ENV_OVERWRITE + DB_ENV_PANIC_OK DB_ENV_PRIVATE DB_ENV_REGION_INIT + DB_ENV_REP_CLIENT DB_ENV_REP_LOGSONLY DB_ENV_REP_MASTER + DB_ENV_RPCCLIENT DB_ENV_RPCCLIENT_GIVEN DB_ENV_STANDALONE + DB_ENV_SYSTEM_MEM DB_ENV_THREAD DB_ENV_TXN DB_ENV_TXN_NOSYNC DB_ENV_TXN_WRITE_NOSYNC DB_ENV_USER_ALLOC DB_ENV_YIELDCPU DB_EXCL DB_EXTENT DB_FAST_STAT DB_FCNTL_LOCKING DB_FILE_ID_LEN DB_FIRST DB_FIXEDLEN DB_FLUSH DB_FORCE DB_GETREC DB_GET_BOTH @@ -3809,7 +3891,9 @@ my @names = (qw(DB_AFTER DB_AGGRESSIVE DB_ALREADY_ABORTED DB_APPEND DB_SALVAGE DB_SECONDARY_BAD DB_SEQUENTIAL DB_SET DB_SET_LOCK_TIMEOUT DB_SET_RANGE DB_SET_RECNO DB_SET_TXN_NOW DB_SET_TXN_TIMEOUT DB_SNAPSHOT DB_STAT_CLEAR DB_SURPRISE_KID - DB_SWAPBYTES DB_SYSTEM_MEM DB_TEMPORARY DB_TEST_POSTDESTROY + DB_SWAPBYTES DB_SYSTEM_MEM DB_TEMPORARY DB_TEST_ELECTINIT + DB_TEST_ELECTSEND DB_TEST_ELECTVOTE1 DB_TEST_ELECTVOTE2 + DB_TEST_ELECTWAIT1 DB_TEST_ELECTWAIT2 DB_TEST_POSTDESTROY DB_TEST_POSTEXTDELETE DB_TEST_POSTEXTOPEN DB_TEST_POSTEXTUNLINK DB_TEST_POSTLOG DB_TEST_POSTLOGMETA DB_TEST_POSTOPEN DB_TEST_POSTRENAME DB_TEST_POSTSYNC DB_TEST_PREDESTROY @@ -3838,23 +3922,24 @@ my @names = (qw(DB_AFTER DB_AGGRESSIVE DB_ALREADY_ABORTED DB_APPEND {name=>"DB_LOCK_PUT_OBJ", type=>"IV", macro=>["#if (DB_VERSION_MAJOR > 2) || \\\n (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR > 0) || \\\n (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && \\\n DB_VERSION_PATCH >= 0)\n", "#endif\n"]}, {name=>"DB_LOCK_PUT_READ", type=>"IV", macro=>["#if (DB_VERSION_MAJOR > 4) || \\\n (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 0) || \\\n (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 0 && \\\n DB_VERSION_PATCH >= 7)\n", "#endif\n"]}, {name=>"DB_LOCK_TIMEOUT", type=>"IV", macro=>["#if (DB_VERSION_MAJOR > 4) || \\\n (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 0) || \\\n (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 0 && \\\n DB_VERSION_PATCH >= 7)\n", "#endif\n"]}, - {name=>"DB_LOCK_TRADE", type=>"IV", macro=>["#if (DB_VERSION_MAJOR > 4) || \\\n (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 1) || \\\n (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 1 && \\\n DB_VERSION_PATCH >= 12)\n", "#endif\n"]}, + {name=>"DB_LOCK_TRADE", type=>"IV", macro=>["#if (DB_VERSION_MAJOR > 4) || \\\n (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 1) || \\\n (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 1 && \\\n DB_VERSION_PATCH >= 17)\n", "#endif\n"]}, {name=>"DB_LOCK_UPGRADE_WRITE", type=>"IV", macro=>["#if (DB_VERSION_MAJOR > 3) || \\\n (DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR > 3) || \\\n (DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR == 3 && \\\n DB_VERSION_PATCH >= 4)\n", "#endif\n"]}, - {name=>"DB_PRIORITY_DEFAULT", type=>"IV", macro=>["#if (DB_VERSION_MAJOR > 4) || \\\n (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 1) || \\\n (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 1 && \\\n DB_VERSION_PATCH >= 12)\n", "#endif\n"]}, - {name=>"DB_PRIORITY_HIGH", type=>"IV", macro=>["#if (DB_VERSION_MAJOR > 4) || \\\n (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 1) || \\\n (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 1 && \\\n DB_VERSION_PATCH >= 12)\n", "#endif\n"]}, - {name=>"DB_PRIORITY_LOW", type=>"IV", macro=>["#if (DB_VERSION_MAJOR > 4) || \\\n (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 1) || \\\n (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 1 && \\\n DB_VERSION_PATCH >= 12)\n", "#endif\n"]}, - {name=>"DB_PRIORITY_VERY_HIGH", type=>"IV", macro=>["#if (DB_VERSION_MAJOR > 4) || \\\n (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 1) || \\\n (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 1 && \\\n DB_VERSION_PATCH >= 12)\n", "#endif\n"]}, - {name=>"DB_PRIORITY_VERY_LOW", type=>"IV", macro=>["#if (DB_VERSION_MAJOR > 4) || \\\n (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 1) || \\\n (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 1 && \\\n DB_VERSION_PATCH >= 12)\n", "#endif\n"]}, + {name=>"DB_PRIORITY_DEFAULT", type=>"IV", macro=>["#if (DB_VERSION_MAJOR > 4) || \\\n (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 1) || \\\n (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 1 && \\\n DB_VERSION_PATCH >= 17)\n", "#endif\n"]}, + {name=>"DB_PRIORITY_HIGH", type=>"IV", macro=>["#if (DB_VERSION_MAJOR > 4) || \\\n (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 1) || \\\n (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 1 && \\\n DB_VERSION_PATCH >= 17)\n", "#endif\n"]}, + {name=>"DB_PRIORITY_LOW", type=>"IV", macro=>["#if (DB_VERSION_MAJOR > 4) || \\\n (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 1) || \\\n (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 1 && \\\n DB_VERSION_PATCH >= 17)\n", "#endif\n"]}, + {name=>"DB_PRIORITY_VERY_HIGH", type=>"IV", macro=>["#if (DB_VERSION_MAJOR > 4) || \\\n (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 1) || \\\n (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 1 && \\\n DB_VERSION_PATCH >= 17)\n", "#endif\n"]}, + {name=>"DB_PRIORITY_VERY_LOW", type=>"IV", macro=>["#if (DB_VERSION_MAJOR > 4) || \\\n (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 1) || \\\n (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 1 && \\\n DB_VERSION_PATCH >= 17)\n", "#endif\n"]}, {name=>"DB_QUEUE", type=>"IV", macro=>["#if (DB_VERSION_MAJOR > 3) || \\\n (DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR > 0) || \\\n (DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR == 0 && \\\n DB_VERSION_PATCH >= 55)\n", "#endif\n"]}, {name=>"DB_RECNO", type=>"IV", macro=>["#if (DB_VERSION_MAJOR > 2) || \\\n (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR > 0) || \\\n (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && \\\n DB_VERSION_PATCH >= 0)\n", "#endif\n"]}, {name=>"DB_TXN_ABORT", type=>"IV", macro=>["#if (DB_VERSION_MAJOR > 3) || \\\n (DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR > 1) || \\\n (DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR == 1 && \\\n DB_VERSION_PATCH >= 12)\n", "#endif\n"]}, {name=>"DB_TXN_APPLY", type=>"IV", macro=>["#if (DB_VERSION_MAJOR > 4) || \\\n (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 0) || \\\n (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 0 && \\\n DB_VERSION_PATCH >= 7)\n", "#endif\n"]}, + {name=>"DB_TXN_BACKWARD_ALLOC", type=>"IV", macro=>["#if (DB_VERSION_MAJOR > 4) || \\\n (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 1) || \\\n (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 1 && \\\n DB_VERSION_PATCH >= 17)\n", "#endif\n"]}, {name=>"DB_TXN_BACKWARD_ROLL", type=>"IV", macro=>["#if (DB_VERSION_MAJOR > 3) || \\\n (DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR > 1) || \\\n (DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR == 1 && \\\n DB_VERSION_PATCH >= 12)\n", "#endif\n"]}, {name=>"DB_TXN_FORWARD_ROLL", type=>"IV", macro=>["#if (DB_VERSION_MAJOR > 3) || \\\n (DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR > 1) || \\\n (DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR == 1 && \\\n DB_VERSION_PATCH >= 12)\n", "#endif\n"]}, - {name=>"DB_TXN_GETPGNOS", type=>"IV", macro=>["#if (DB_VERSION_MAJOR > 4) || \\\n (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 1) || \\\n (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 1 && \\\n DB_VERSION_PATCH >= 12)\n", "#endif\n"]}, + {name=>"DB_TXN_GETPGNOS", type=>"IV", macro=>["#if (DB_VERSION_MAJOR > 4) || \\\n (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 1) || \\\n (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 1 && \\\n DB_VERSION_PATCH >= 17)\n", "#endif\n"]}, {name=>"DB_TXN_OPENFILES", type=>"IV", macro=>["#if (DB_VERSION_MAJOR > 3) || \\\n (DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR > 1) || \\\n (DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR == 1 && \\\n DB_VERSION_PATCH >= 12)\n", "#endif\n"]}, {name=>"DB_TXN_POPENFILES", type=>"IV", macro=>["#if (DB_VERSION_MAJOR > 3) || \\\n (DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR > 3) || \\\n (DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR == 3 && \\\n DB_VERSION_PATCH >= 4)\n", "#endif\n"]}, - {name=>"DB_TXN_PRINT", type=>"IV", macro=>["#if (DB_VERSION_MAJOR > 4) || \\\n (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 1) || \\\n (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 1 && \\\n DB_VERSION_PATCH >= 12)\n", "#endif\n"]}, + {name=>"DB_TXN_PRINT", type=>"IV", macro=>["#if (DB_VERSION_MAJOR > 4) || \\\n (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 1) || \\\n (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 1 && \\\n DB_VERSION_PATCH >= 17)\n", "#endif\n"]}, {name=>"DB_UNKNOWN", type=>"IV", macro=>["#if (DB_VERSION_MAJOR > 2) || \\\n (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR > 0) || \\\n (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && \\\n DB_VERSION_PATCH >= 0)\n", "#endif\n"]}, {name=>"DB_VERSION_STRING", type=>"PV"}); diff --git a/db/perl/BerkeleyDB/mkconsts b/db/perl/BerkeleyDB/mkconsts index 8f194662c..7e0964333 100644 --- a/db/perl/BerkeleyDB/mkconsts +++ b/db/perl/BerkeleyDB/mkconsts @@ -606,7 +606,7 @@ use constant IGNORE => 'ignore' ; DB_VERB_REPLICATION => DEFINE, ######### - # 4.1.12 + # 4.1.17 ######### DBC_OWN_LID => IGNORE, @@ -633,6 +633,7 @@ use constant IGNORE => 'ignore' ; DB_DIRECT_LOG => DEFINE, DB_ENCRYPT => DEFINE, DB_ENCRYPT_AES => DEFINE, + DB_ENV_AUTO_COMMIT => DEFINE, DB_ENV_DIRECT_DB => DEFINE, DB_ENV_DIRECT_LOG => DEFINE, DB_ENV_FATAL => DEFINE, @@ -646,6 +647,12 @@ use constant IGNORE => 'ignore' ; DB_PERMANENT => DEFINE, DB_PRINTABLE => DEFINE, DB_RENAMEMAGIC => DEFINE, + DB_TEST_ELECTINIT => DEFINE, + DB_TEST_ELECTSEND => DEFINE, + DB_TEST_ELECTVOTE1 => DEFINE, + DB_TEST_ELECTVOTE2 => DEFINE, + DB_TEST_ELECTWAIT1 => DEFINE, + DB_TEST_ELECTWAIT2 => DEFINE, DB_TEST_SUBDB_LOCKS => DEFINE, DB_TXN_LOCK => DEFINE, DB_TXN_WRITE_NOSYNC => DEFINE, @@ -654,21 +661,23 @@ use constant IGNORE => 'ignore' ; _DB_EXT_PROT_IN_ => IGNORE, # enum db_lockop_t - DB_LOCK_TRADE => '4.1.12', + DB_LOCK_TRADE => '4.1.17', # enum db_status_t - DB_LSTAT_NOTEXIST => IGNORE, # 4.1.12 + DB_LSTAT_NOTEXIST => IGNORE, # 4.1.17 # enum DB_CACHE_PRIORITY - DB_PRIORITY_VERY_LOW => '4.1.12', - DB_PRIORITY_LOW => '4.1.12', - DB_PRIORITY_DEFAULT => '4.1.12', - DB_PRIORITY_HIGH => '4.1.12', - DB_PRIORITY_VERY_HIGH => '4.1.12', + DB_PRIORITY_VERY_LOW => '4.1.17', + DB_PRIORITY_LOW => '4.1.17', + DB_PRIORITY_DEFAULT => '4.1.17', + DB_PRIORITY_HIGH => '4.1.17', + DB_PRIORITY_VERY_HIGH => '4.1.17', # enum db_recops - DB_TXN_GETPGNOS => '4.1.12', - DB_TXN_PRINT => '4.1.12', + DB_TXN_BACKWARD_ALLOC => '4.1.17', + DB_TXN_GETPGNOS => '4.1.17', + DB_TXN_PRINT => '4.1.17', + ) ; sub enum_Macro diff --git a/db/perl/BerkeleyDB/typemap b/db/perl/BerkeleyDB/typemap index 9feefdc47..81ead2c36 100644 --- a/db/perl/BerkeleyDB/typemap +++ b/db/perl/BerkeleyDB/typemap @@ -173,7 +173,7 @@ T_PTROBJ_AV croak(\"$var is not of type ${ntype}\") T_dbtkeydatum - ckFilter($arg, filter_store_key, \"filter_store_key\"); + DBM_ckFilter($arg, filter_store_key, \"filter_store_key\"); DBT_clear($var) ; if (db->recno_or_queue) { Value = GetRecnoKey(db, SvIV($arg)) ; @@ -186,7 +186,7 @@ T_dbtkeydatum } T_dbtkeydatum_btree - ckFilter($arg, filter_store_key, \"filter_store_key\"); + DBM_ckFilter($arg, filter_store_key, \"filter_store_key\"); DBT_clear($var) ; if (db->recno_or_queue || (db->type == DB_BTREE && flagSet(DB_SET_RECNO))) { @@ -200,7 +200,7 @@ T_dbtkeydatum_btree } T_dbtdatum - ckFilter($arg, filter_store_value, \"filter_store_value\"); + DBM_ckFilter($arg, filter_store_value, \"filter_store_value\"); DBT_clear($var) ; $var.data = SvPV($arg, PL_na); $var.size = (int)PL_na; @@ -211,7 +211,7 @@ T_dbtdatum T_dbtdatum_opt DBT_clear($var) ; if (flagSet(DB_GET_BOTH)) { - ckFilter($arg, filter_store_value, \"filter_store_value\"); + DBM_ckFilter($arg, filter_store_value, \"filter_store_value\"); $var.data = SvPV($arg, PL_na); $var.size = (int)PL_na; $var.flags = db->partial ; @@ -222,7 +222,7 @@ T_dbtdatum_opt T_dbtdatum_btree DBT_clear($var) ; if (flagSet(DB_GET_BOTH)) { - ckFilter($arg, filter_store_value, \"filter_store_value\"); + DBM_ckFilter($arg, filter_store_value, \"filter_store_value\"); $var.data = SvPV($arg, PL_na); $var.size = (int)PL_na; $var.flags = db->partial ; diff --git a/db/perl/DB_File/Changes b/db/perl/DB_File/Changes index 0922227e4..7883cbdfe 100644 --- a/db/perl/DB_File/Changes +++ b/db/perl/DB_File/Changes @@ -1,208 +1,224 @@ -0.1 +1.805 1st September 2002 - First Release. + * Added support to allow DB_File to build with Berkeley DB 4.1.X -0.2 + * Tightened up the test harness to test that calls to untie don't generate + the "untie attempted while %d inner references still exist" warning. - When DB_File is opening a database file it no longer terminates the - process if dbopen returned an error. This allows file protection - errors to be caught at run time. Thanks to Judith Grass - <grass@cybercash.com> for spotting the bug. + * added code to guard against calling the callbacks (compare,hash & prefix) + recursively. -0.3 + * pasing undef for the flags and/or mode when opening a database could cause + a "Use of uninitialized value in subroutine entry" warning. Now silenced. - Added prototype support for multiple btree compare callbacks. + * DBM filter code beefed up to cope with read-only $_. -1.0 +1.804 2nd June 2002 - DB_File has been in use for over a year. To reflect that, the - version number has been incremented to 1.0. + * Perl core patch 14939 added a new warning to "splice". This broke the + db-recno test harness. Fixed. - Added complete support for multiple concurrent callbacks. + * merged core patches 16502 & 16540. - Using the push method on an empty list didn't work properly. This - has been fixed. +1.803 1st March 2002 -1.01 + * Fixed a problem with db-btree.t where it complained about an "our" + variable redeclaation. - Fixed a core dump problem with SunOS. + * FETCH, STORE & DELETE don't map the flags parameter into the + equivalent Berkeley DB function anymore. - The return value from TIEHASH wasn't set to NULL when dbopen - returned an error. +1.802 6th January 2002 -1.02 + * The message about some test failing in db-recno.t had the wrong test + numbers. Fixed. - Merged OS/2 specific code into DB_File.xs + * merged core patch 13942. - Removed some redundant code in DB_File.xs. +1.801 26th November 2001 - Documentation update. + * Fixed typo in Makefile.PL - Allow negative subscripts with RECNO interface. + * Added "clean" attribute to Makefile.PL + +1.800 23rd November 2001 - Changed the default flags from O_RDWR to O_CREAT|O_RDWR. + * use pport.h for perl backward compatability code. - The example code which showed how to lock a database needed a call - to sync added. Without it the resultant database file was empty. + * use new ExtUtils::Constant module to generate XS constants. - Added get_dup method. + * upgrade Makefile.PL upgrade/downgrade code to toggle "our" with + "use vars" -1.03 +1.79 22nd October 2001 - Documentation update. + * Added a "local $SIG{__DIE__}" inside the eval that checks for + the presence of XSLoader s suggested by Andrew Hryckowin. - DB_File now imports the constants (O_RDWR, O_CREAT etc.) from Fcntl - automatically. + * merged core patch 12277. - The standard hash function exists is now supported. + * Changed NEXTKEY to not initialise the input key. It isn't used anyway. - Modified the behavior of get_dup. When it returns an associative - array, the value is the count of the number of matching BTREE - values. +1.79 22nd October 2001 -1.04 + * Fixed test harness for cygwin - Minor documentation changes. +1.78 30th July 2001 - Fixed a bug in hash_cb. Patches supplied by Dave Hammen, - <hammen@gothamcity.jsc.nasa.govt>. + * the test in Makefile.PL for AIX used -plthreads. Should have been + -lpthreads - Fixed a bug with the constructors for DB_File::HASHINFO, - DB_File::BTREEINFO and DB_File::RECNOINFO. Also tidied up the - constructors to make them -w clean. + * merged Core patches + 10372, 10335, 10372, 10534, 10549, 10643, 11051, 11194, 11432 - Reworked part of the test harness to be more locale friendly. + * added documentation patch regarding duplicate keys from Andrew Johnson -1.05 - Made all scripts in the documentation strict and -w clean. +1.77 26th April 2001 - Added logic to DB_File.xs to allow the module to be built after - Perl is installed. + * AIX is reported to need -lpthreads, so Makefile.PL now checks for + AIX and adds it to the link options. -1.06 + * Minor documentation updates. - Minor namespace cleanup: Localized PrintBtree. + * Merged Core patch 9176 -1.07 + * Added a patch from Edward Avis that adds support for splice with + recno databases. - Fixed bug with RECNO, where bval wasn't defaulting to "\n". + * Modified Makefile.PL to only enable the warnings pragma if using perl + 5.6.1 or better. -1.08 +1.76 15th January 2001 - Documented operation of bval. + * Added instructions for using LD_PRELOAD to get Berkeley DB 2.x to work + with DB_File on Linux. Thanks to Norbert Bollow for sending details of + this approach. -1.09 - Minor bug fix in DB_File::HASHINFO, DB_File::RECNOINFO and - DB_File::BTREEINFO. +1.75 17th December 2000 - Changed default mode to 0666. + * Fixed perl core patch 7703 -1.10 + * Added suppport to allow DB_File to be built with Berkeley DB 3.2 -- + btree_compare, btree_prefix and hash_cb needed to be changed. - Fixed fd method so that it still returns -1 for in-memory files - when db 1.86 is used. + * Updated dbinfo to support Berkeley DB 3.2 file format changes. -1.11 - Documented the untie gotcha. +1.74 10th December 2000 -1.12 + * A "close" call in DB_File.xs needed parenthesised to stop win32 from + thinking it was one of its macros. - Documented the incompatibility with version 2 of Berkeley DB. + * Updated dbinfo to support Berkeley DB 3.1 file format changes. -1.13 + * DB_File.pm & the test hasness now use the warnings pragma (when + available). - Minor changes to DB_FIle.xs and DB_File.pm + * Included Perl core patch 7703 -- size argument for hash_cb is different + for Berkeley DB 3.x -1.14 + * Included Perl core patch 7801 -- Give __getBerkeleyDBInfo the ANSI C + treatment. - Made it illegal to tie an associative array to a RECNO database and - an ordinary array to a HASH or BTREE database. + * @a = () produced the warning 'Argument "" isn't numeric in entersub' + This has been fixed. Thanks to Edward Avis for spotting this bug. -1.15 + * Added note about building under Linux. Included patches. - Patch from Gisle Aas <gisle@aas.no> to suppress "use of undefined - value" warning with db_get and db_seq. + * Included Perl core patch 8068 -- fix for bug 20001013.009 + When run with warnings enabled "$hash{XX} = undef " produced an + "Uninitialized value" warning. This has been fixed. - Patch from Gisle Aas <gisle@aas.no> to make DB_File export only the - O_* constants from Fcntl. +1.73 31st May 2000 - Removed the DESTROY method from the DB_File::HASHINFO module. + * Added support in version.c for building with threaded Perl. - Previously DB_File hard-wired the class name of any object that it - created to "DB_File". This makes sub-classing difficult. Now - DB_File creats objects in the namespace of the package it has been - inherited into. + * Berkeley DB 3.1 has reenabled support for null keys. The test + harness has been updated to reflect this. +1.72 16th January 2000 -1.16 + * Added hints/sco.pl - A harmless looking tab was causing Makefile.PL to fail on AIX 3.2.5 + * The module will now use XSLoader when it is available. When it + isn't it will use DynaLoader. - Small fix for the AIX strict C compiler XLC which doesn't like - __attribute__ being defined via proto.h and redefined via db.h. Fix - courtesy of Jarkko Hietaniemi. + * The locking section in DB_File.pm has been discredited. Many thanks + to David Harris for spotting the underlying problem, contributing + the updates to the documentation and writing DB_File::Lock (available + on CPAN). -1.50 +1.71 7th September 1999 - DB_File can now build with either DB 1.x or 2.x, but not both at - the same time. + * Fixed a bug that prevented 1.70 from compiling under win32 -1.51 + * Updated to support Berkeley DB 3.x - Fixed the test harness so that it doesn't expect DB_File to have - been installed by the main Perl build. + * Updated dbinfo for Berkeley DB 3.x file formats. +1.70 4th August 1999 - Fixed a bug in mapping 1.x O_RDONLY flag to 2.x DB_RDONLY equivalent + * Initialise $DB_File::db_ver and $DB_File::db_version with + GV_ADD|GV_ADDMULT -- bug spotted by Nick Ing-Simmons. -1.52 + * Added a BOOT check to test for equivalent versions of db.h & + libdb.a/so. - Patch from Nick Ing-Simmons now allows DB_File to build on NT. - Merged 1.15 patch. +1.69 3rd August 1999 -1.53 + * fixed a bug in push -- DB_APPEND wasn't working properly. - Added DB_RENUMBER to flags for recno. + * Fixed the R_SETCURSOR bug introduced in 1.68 -1.54 + * Added a new Perl variable $DB_File::db_ver + +1.68 22nd July 1999 - Fixed a small bug in the test harness when run under win32 - The emulation of fd when useing DB 2.x was busted. + * Merged changes from 5.005_58 -1.55 - Merged 1.16 changes. + * Fixed a bug in R_IBEFORE & R_IAFTER procesing in Berkeley DB + 2 databases. -1.56 - Documented the Solaris 2.5 mutex bug + * Added some of the examples in the POD into the test harness. -1.57 - If Perl has been compiled with Threads support,the symbol op will be - defined. This clashes with a field name in db.h, so it needs to be - #undef'ed before db.h is included. +1.67 6th June 1999 -1.58 - Tied Array support was enhanced in Perl 5.004_57. DB_File now - supports PUSH,POP,SHIFT,UNSHIFT & STORESIZE. + * Added DBM Filter documentation to DB_File.pm - Fixed a problem with the use of sv_setpvn. When the size is - specified as 0, it does a strlen on the data. This was ok for DB - 1.x, but isn't for DB 2.x. + * Fixed DBM Filter code to work with 5.004 -1.59 - Updated the license section. + * A few instances of newSVpvn were used in 1.66. This isn't available in + Perl 5.004_04 or earlier. Replaced with newSVpv. - Berkeley DB 2.4.10 disallows zero length keys. Tests 32 & 42 in - db-btree.t and test 27 in db-hash.t failed because of this change. - Those tests have been zapped. +1.66 15th March 1999 - Added dbinfo to the distribution. + * Added DBM Filter code -1.60 - Changed the test to check for full tied array support +1.65 6th March 1999 + + * Fixed a bug in the recno PUSH logic. + * The BOOT version check now needs 2.3.4 when using Berkeley DB version 2 + +1.64 21st February 1999 + + * Tidied the 1.x to 2.x flag mapping code. + * Added a patch from Mark Kettenis <kettenis@wins.uva.nl> to fix a flag + mapping problem with O_RDONLY on the Hurd + * Updated the message that db-recno.t prints when tests 51, 53 or 55 fail. + +1.63 19th December 1998 + + * Fix to allow DB 2.6.x to build with DB_File + * Documentation updated to use push,pop etc in the RECNO example & + to include the find_dup & del_dup methods. + +1.62 30th November 1998 + + Added hints/dynixptx.pl. + Fixed typemap -- 1.61 used PL_na instead of na 1.61 19th November 1998 @@ -211,208 +227,208 @@ Minor modifications to get the module to build with DB 2.5.x Fixed a typo in the definition of O_RDONLY, courtesy of Mark Kettenis. -1.62 30th November 1998 +1.60 + Changed the test to check for full tied array support - Added hints/dynixptx.pl. - Fixed typemap -- 1.61 used PL_na instead of na +1.59 + Updated the license section. -1.63 19th December 1998 + Berkeley DB 2.4.10 disallows zero length keys. Tests 32 & 42 in + db-btree.t and test 27 in db-hash.t failed because of this change. + Those tests have been zapped. - * Fix to allow DB 2.6.x to build with DB_File - * Documentation updated to use push,pop etc in the RECNO example & - to include the find_dup & del_dup methods. + Added dbinfo to the distribution. -1.64 21st February 1999 +1.58 + Tied Array support was enhanced in Perl 5.004_57. DB_File now + supports PUSH,POP,SHIFT,UNSHIFT & STORESIZE. - * Tidied the 1.x to 2.x flag mapping code. - * Added a patch from Mark Kettenis <kettenis@wins.uva.nl> to fix a flag - mapping problem with O_RDONLY on the Hurd - * Updated the message that db-recno.t prints when tests 51, 53 or 55 fail. + Fixed a problem with the use of sv_setpvn. When the size is + specified as 0, it does a strlen on the data. This was ok for DB + 1.x, but isn't for DB 2.x. -1.65 6th March 1999 +1.57 + If Perl has been compiled with Threads support,the symbol op will be + defined. This clashes with a field name in db.h, so it needs to be + #undef'ed before db.h is included. - * Fixed a bug in the recno PUSH logic. - * The BOOT version check now needs 2.3.4 when using Berkeley DB version 2 +1.56 + Documented the Solaris 2.5 mutex bug -1.66 15th March 1999 +1.55 + Merged 1.16 changes. - * Added DBM Filter code +1.54 -1.67 6th June 1999 + Fixed a small bug in the test harness when run under win32 + The emulation of fd when useing DB 2.x was busted. - * Added DBM Filter documentation to DB_File.pm +1.53 - * Fixed DBM Filter code to work with 5.004 + Added DB_RENUMBER to flags for recno. - * A few instances of newSVpvn were used in 1.66. This isn't available in - Perl 5.004_04 or earlier. Replaced with newSVpv. +1.52 -1.68 22nd July 1999 + Patch from Nick Ing-Simmons now allows DB_File to build on NT. + Merged 1.15 patch. - * Merged changes from 5.005_58 +1.51 - * Fixed a bug in R_IBEFORE & R_IAFTER procesing in Berkeley DB - 2 databases. + Fixed the test harness so that it doesn't expect DB_File to have + been installed by the main Perl build. - * Added some of the examples in the POD into the test harness. -1.69 3rd August 1999 + Fixed a bug in mapping 1.x O_RDONLY flag to 2.x DB_RDONLY equivalent - * fixed a bug in push -- DB_APPEND wasn't working properly. +1.50 - * Fixed the R_SETCURSOR bug introduced in 1.68 + DB_File can now build with either DB 1.x or 2.x, but not both at + the same time. - * Added a new Perl variable $DB_File::db_ver - -1.70 4th August 1999 +1.16 - * Initialise $DB_File::db_ver and $DB_File::db_version with - GV_ADD|GV_ADDMULT -- bug spotted by Nick Ing-Simmons. + A harmless looking tab was causing Makefile.PL to fail on AIX 3.2.5 - * Added a BOOT check to test for equivalent versions of db.h & - libdb.a/so. + Small fix for the AIX strict C compiler XLC which doesn't like + __attribute__ being defined via proto.h and redefined via db.h. Fix + courtesy of Jarkko Hietaniemi. -1.71 7th September 1999 +1.15 - * Fixed a bug that prevented 1.70 from compiling under win32 + Patch from Gisle Aas <gisle@aas.no> to suppress "use of undefined + value" warning with db_get and db_seq. - * Updated to support Berkeley DB 3.x + Patch from Gisle Aas <gisle@aas.no> to make DB_File export only the + O_* constants from Fcntl. - * Updated dbinfo for Berkeley DB 3.x file formats. + Removed the DESTROY method from the DB_File::HASHINFO module. -1.72 16th January 2000 + Previously DB_File hard-wired the class name of any object that it + created to "DB_File". This makes sub-classing difficult. Now + DB_File creats objects in the namespace of the package it has been + inherited into. - * Added hints/sco.pl - * The module will now use XSLoader when it is available. When it - isn't it will use DynaLoader. +1.14 - * The locking section in DB_File.pm has been discredited. Many thanks - to David Harris for spotting the underlying problem, contributing - the updates to the documentation and writing DB_File::Lock (available - on CPAN). + Made it illegal to tie an associative array to a RECNO database and + an ordinary array to a HASH or BTREE database. -1.73 31st May 2000 +1.13 - * Added support in version.c for building with threaded Perl. + Minor changes to DB_FIle.xs and DB_File.pm - * Berkeley DB 3.1 has reenabled support for null keys. The test - harness has been updated to reflect this. +1.12 -1.74 10th December 2000 + Documented the incompatibility with version 2 of Berkeley DB. - * A "close" call in DB_File.xs needed parenthesised to stop win32 from - thinking it was one of its macros. +1.11 - * Updated dbinfo to support Berkeley DB 3.1 file format changes. + Documented the untie gotcha. - * DB_File.pm & the test hasness now use the warnings pragma (when - available). +1.10 - * Included Perl core patch 7703 -- size argument for hash_cb is different - for Berkeley DB 3.x + Fixed fd method so that it still returns -1 for in-memory files + when db 1.86 is used. - * Included Perl core patch 7801 -- Give __getBerkeleyDBInfo the ANSI C - treatment. +1.09 - * @a = () produced the warning 'Argument "" isn't numeric in entersub' - This has been fixed. Thanks to Edward Avis for spotting this bug. + Minor bug fix in DB_File::HASHINFO, DB_File::RECNOINFO and + DB_File::BTREEINFO. - * Added note about building under Linux. Included patches. + Changed default mode to 0666. - * Included Perl core patch 8068 -- fix for bug 20001013.009 - When run with warnings enabled "$hash{XX} = undef " produced an - "Uninitialized value" warning. This has been fixed. +1.08 -1.75 17th December 2000 + Documented operation of bval. - * Fixed perl core patch 7703 +1.07 - * Added suppport to allow DB_File to be built with Berkeley DB 3.2 -- - btree_compare, btree_prefix and hash_cb needed to be changed. + Fixed bug with RECNO, where bval wasn't defaulting to "\n". - * Updated dbinfo to support Berkeley DB 3.2 file format changes. +1.06 + Minor namespace cleanup: Localized PrintBtree. -1.76 15th January 2001 +1.05 - * Added instructions for using LD_PRELOAD to get Berkeley DB 2.x to work - with DB_File on Linux. Thanks to Norbert Bollow for sending details of - this approach. + Made all scripts in the documentation strict and -w clean. + Added logic to DB_File.xs to allow the module to be built after + Perl is installed. -1.77 26th April 2001 +1.04 - * AIX is reported to need -lpthreads, so Makefile.PL now checks for - AIX and adds it to the link options. + Minor documentation changes. - * Minor documentation updates. + Fixed a bug in hash_cb. Patches supplied by Dave Hammen, + <hammen@gothamcity.jsc.nasa.govt>. - * Merged Core patch 9176 + Fixed a bug with the constructors for DB_File::HASHINFO, + DB_File::BTREEINFO and DB_File::RECNOINFO. Also tidied up the + constructors to make them -w clean. - * Added a patch from Edward Avis that adds support for splice with - recno databases. + Reworked part of the test harness to be more locale friendly. - * Modified Makefile.PL to only enable the warnings pragma if using perl - 5.6.1 or better. +1.03 -1.78 30th July 2001 + Documentation update. - * the test in Makefile.PL for AIX used -plthreads. Should have been - -lpthreads + DB_File now imports the constants (O_RDWR, O_CREAT etc.) from Fcntl + automatically. - * merged Core patches - 10372, 10335, 10372, 10534, 10549, 10643, 11051, 11194, 11432 + The standard hash function exists is now supported. - * added documentation patch regarding duplicate keys from Andrew Johnson + Modified the behavior of get_dup. When it returns an associative + array, the value is the count of the number of matching BTREE + values. -1.79 22nd October 2001 +1.02 - * Added a "local $SIG{__DIE__}" inside the eval that checks for - the presence of XSLoader s suggested by Andrew Hryckowin. + Merged OS/2 specific code into DB_File.xs - * merged core patch 12277. + Removed some redundant code in DB_File.xs. - * Changed NEXTKEY to not initialise the input key. It isn't used anyway. + Documentation update. -1.79 22nd October 2001 + Allow negative subscripts with RECNO interface. - * Fixed test harness for cygwin + Changed the default flags from O_RDWR to O_CREAT|O_RDWR. + The example code which showed how to lock a database needed a call + to sync added. Without it the resultant database file was empty. -1.800 23rd November 2001 + Added get_dup method. - * use pport.h for perl backward compatability code. +1.01 - * use new ExtUtils::Constant module to generate XS constants. + Fixed a core dump problem with SunOS. - * upgrade Makefile.PL upgrade/downgrade code to toggle "our" with - "use vars" + The return value from TIEHASH wasn't set to NULL when dbopen + returned an error. -1.801 26th November 2001 +1.0 - * Fixed typo in Makefile.PL + DB_File has been in use for over a year. To reflect that, the + version number has been incremented to 1.0. - * Added "clean" attribute to Makefile.PL - -1.802 6th January 2002 + Added complete support for multiple concurrent callbacks. - * The message about some test failing in db-recno.t had the wrong test - numbers. Fixed. + Using the push method on an empty list didn't work properly. This + has been fixed. - * merged core patch 13942. +0.3 -1.803 1st March 2002 + Added prototype support for multiple btree compare callbacks. - * Fixed a problem with db-btree.t where it complained about an "our" - variable redeclaation. +0.2 - * FETCH, STORE & DELETE don't map the flags parameter into the - equivalent Berkeley DB function anymore. + When DB_File is opening a database file it no longer terminates the + process if dbopen returned an error. This allows file protection + errors to be caught at run time. Thanks to Judith Grass + <grass@cybercash.com> for spotting the bug. -1.804 2nd June 2002 +0.1 - * Perl core patch 14939 added a new warning to "splice". This broke the - db-recno test harness. Fixed. + First Release. - * merged core patches 16502 & 16540. diff --git a/db/perl/DB_File/DB_File.pm b/db/perl/DB_File/DB_File.pm index ff3c05947..49004ffa1 100644 --- a/db/perl/DB_File/DB_File.pm +++ b/db/perl/DB_File/DB_File.pm @@ -1,8 +1,8 @@ # DB_File.pm -- Perl 5 interface to Berkeley DB # # written by Paul Marquess (Paul.Marquess@btinternet.com) -# last modified 2nd June 2002 -# version 1.804 +# last modified 1st September 2002 +# version 1.805 # # Copyright (c) 1995-2002 Paul Marquess. All rights reserved. # This program is free software; you can redistribute it and/or @@ -32,8 +32,13 @@ sub TIEHASH { my $pkg = shift ; - bless { VALID => { map {$_, 1} - qw( bsize ffactor nelem cachesize hash lorder) + bless { VALID => { + bsize => 1, + ffactor => 1, + nelem => 1, + cachesize => 1, + hash => 2, + lorder => 1, }, GOT => {} }, $pkg ; @@ -58,8 +63,12 @@ sub STORE my $key = shift ; my $value = shift ; - if ( exists $self->{VALID}{$key} ) + my $type = $self->{VALID}{$key}; + + if ( $type ) { + croak "Key '$key' not associated with a code reference" + if $type == 2 && !ref $value && ref $value ne 'CODE'; $self->{GOT}{$key} = $value ; return ; } @@ -132,9 +141,15 @@ sub TIEHASH { my $pkg = shift ; - bless { VALID => { map {$_, 1} - qw( flags cachesize maxkeypage minkeypage psize - compare prefix lorder ) + bless { VALID => { + flags => 1, + cachesize => 1, + maxkeypage => 1, + minkeypage => 1, + psize => 1, + compare => 2, + prefix => 2, + lorder => 1, }, GOT => {}, }, $pkg ; @@ -150,7 +165,7 @@ our ($db_version, $use_XSLoader, $splice_end_array); use Carp; -$VERSION = "1.804" ; +$VERSION = "1.805" ; { local $SIG{__WARN__} = sub {$splice_end_array = "@_";}; @@ -248,6 +263,9 @@ sub tie_hash_or_array $arg[4] = tied %{ $arg[4] } if @arg >= 5 && ref $arg[4] && $arg[4] =~ /=HASH/ && tied %{ $arg[4] } ; + $arg[2] = O_CREAT()|O_RDWR() if @arg >=3 && ! defined $arg[2]; + $arg[3] = 0666 if @arg >=4 && ! defined $arg[3]; + # make recno in Berkeley DB version 2 work like recno in version 1. if ($db_version > 1 and defined $arg[4] and $arg[4] =~ /RECNO/ and $arg[1] and ! -e $arg[1]) { diff --git a/db/perl/DB_File/DB_File.xs b/db/perl/DB_File/DB_File.xs index 6882491e4..fba8dede7 100644 --- a/db/perl/DB_File/DB_File.xs +++ b/db/perl/DB_File/DB_File.xs @@ -3,8 +3,8 @@ DB_File.xs -- Perl 5 interface to Berkeley DB written by Paul Marquess <Paul.Marquess@btinternet.com> - last modified 2nd June 2002 - version 1.804 + last modified 1st September 2002 + version 1.805 All comments/suggestions/problems are welcome @@ -101,6 +101,11 @@ 1.802 - No change to DB_File.xs 1.803 - FETCH, STORE & DELETE don't map the flags parameter into the equivalent Berkeley DB function anymore. + 1.804 - no change. + 1.805 - recursion detection added to the callbacks + Support for 4.1.X added. + Filter code can now cope with read-only $_ + */ #define PERL_NO_GET_CONTEXT @@ -161,7 +166,6 @@ #include <fcntl.h> /* #define TRACE */ -#define DBM_FILTERING #ifdef TRACE # define Trace(x) printf x @@ -182,6 +186,10 @@ # define AT_LEAST_DB_3_2 #endif +#if DB_VERSION_MAJOR > 4 || (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1) +# define AT_LEAST_DB_4_1 +#endif + /* map version 2 features & constants onto their version 1 equivalent */ #ifdef DB_Prefix_t @@ -334,8 +342,8 @@ typedef union INFO { #define db_get(db, key, value, flags) ((db->dbp)->get)(db->dbp, TXN &key, &value, flags) #ifdef DB_VERSION_MAJOR -#define db_DESTROY(db) ( db->cursor->c_close(db->cursor),\ - (db->dbp->close)(db->dbp, 0) ) +#define db_DESTROY(db) (!db->aborted && ( db->cursor->c_close(db->cursor),\ + (db->dbp->close)(db->dbp, 0) )) #define db_close(db) ((db->dbp)->close)(db->dbp, 0) #define db_del(db, key, flags) (flagSet(flags, R_CURSOR) \ ? ((db->cursor)->c_del)(db->cursor, 0) \ @@ -343,7 +351,7 @@ typedef union INFO { #else /* ! DB_VERSION_MAJOR */ -#define db_DESTROY(db) ((db->dbp)->close)(db->dbp) +#define db_DESTROY(db) (!db->aborted && ((db->dbp)->close)(db->dbp)) #define db_close(db) ((db->dbp)->close)(db->dbp) #define db_del(db, key, flags) ((db->dbp)->del)(db->dbp, &key, flags) #define db_put(db, key, value, flags) ((db->dbp)->put)(db->dbp, &key, &value, flags) @@ -357,8 +365,12 @@ typedef struct { DBTYPE type ; DB * dbp ; SV * compare ; + bool in_compare ; SV * prefix ; + bool in_prefix ; SV * hash ; + bool in_hash ; + bool aborted ; int in_memory ; #ifdef BERKELEY_DB_1_OR_2 INFO info ; @@ -366,51 +378,25 @@ typedef struct { #ifdef DB_VERSION_MAJOR DBC * cursor ; #endif -#ifdef DBM_FILTERING SV * filter_fetch_key ; SV * filter_store_key ; SV * filter_fetch_value ; SV * filter_store_value ; int filtering ; -#endif /* DBM_FILTERING */ } DB_File_type; typedef DB_File_type * DB_File ; typedef DBT DBTKEY ; -#ifdef DBM_FILTERING - -#define ckFilter(arg,type,name) \ - if (db->type) { \ - SV * save_defsv ; \ - /* printf("filtering %s\n", name) ; */ \ - if (db->filtering) \ - croak("recursion detected in %s", name) ; \ - db->filtering = TRUE ; \ - save_defsv = newSVsv(DEFSV) ; \ - sv_setsv(DEFSV, arg) ; \ - PUSHMARK(sp) ; \ - (void) perl_call_sv(db->type, G_DISCARD|G_NOARGS); \ - sv_setsv(arg, DEFSV) ; \ - sv_setsv(DEFSV, save_defsv) ; \ - SvREFCNT_dec(save_defsv) ; \ - db->filtering = FALSE ; \ - /* printf("end of filtering %s\n", name) ; */ \ - } - -#else - -#define ckFilter(arg,type, name) - -#endif /* DBM_FILTERING */ - #define my_sv_setpvn(sv, d, s) sv_setpvn(sv, (s ? d : (void*)""), s) #define OutputValue(arg, name) \ { if (RETVAL == 0) { \ my_sv_setpvn(arg, name.data, name.size) ; \ - ckFilter(arg, filter_fetch_value,"filter_fetch_value") ; \ + TAINT; \ + SvTAINTED_on(arg); \ + DBM_ckFilter(arg, filter_fetch_value,"filter_fetch_value") ; \ } \ } @@ -422,7 +408,9 @@ typedef DBT DBTKEY ; } \ else \ sv_setiv(arg, (I32)*(I32*)name.data - 1); \ - ckFilter(arg, filter_fetch_key,"filter_fetch_key") ; \ + TAINT; \ + SvTAINTED_on(arg); \ + DBM_ckFilter(arg, filter_fetch_key,"filter_fetch_key") ; \ } \ } @@ -450,6 +438,8 @@ START_MY_CXT #define CurrentDB (MY_CXT.x_CurrentDB) #define empty (MY_CXT.x_empty) +#define ERR_BUFF "DB_File::Error" + #ifdef DB_VERSION_MAJOR static int @@ -512,6 +502,13 @@ u_int flags ; #endif /* DB_VERSION_MAJOR */ +static void +tidyUp(DB_File db) +{ + /* db_DESTROY(db); */ + db->aborted = TRUE ; +} + static int #ifdef AT_LEAST_DB_3_2 @@ -546,7 +543,14 @@ const DBT * key2 ; void * data1, * data2 ; int retval ; int count ; + DB_File keep_CurrentDB = CurrentDB; + + if (CurrentDB->in_compare) { + tidyUp(CurrentDB); + croak ("DB_File btree_compare: recursion detected\n") ; + } + data1 = (char *) key1->data ; data2 = (char *) key2->data ; @@ -570,18 +574,26 @@ const DBT * key2 ; PUSHs(sv_2mortal(newSVpvn(data2,key2->size))); PUTBACK ; + CurrentDB->in_compare = TRUE; + count = perl_call_sv(CurrentDB->compare, G_SCALAR); + CurrentDB = keep_CurrentDB; + CurrentDB->in_compare = FALSE; + SPAGAIN ; - if (count != 1) + if (count != 1){ + tidyUp(CurrentDB); croak ("DB_File btree_compare: expected 1 return value from compare sub, got %d\n", count) ; + } retval = POPi ; PUTBACK ; FREETMPS ; LEAVE ; + return (retval) ; } @@ -618,7 +630,13 @@ const DBT * key2 ; char * data1, * data2 ; int retval ; int count ; + DB_File keep_CurrentDB = CurrentDB; + if (CurrentDB->in_prefix){ + tidyUp(CurrentDB); + croak ("DB_File btree_prefix: recursion detected\n") ; + } + data1 = (char *) key1->data ; data2 = (char *) key2->data ; @@ -642,12 +660,19 @@ const DBT * key2 ; PUSHs(sv_2mortal(newSVpvn(data2,key2->size))); PUTBACK ; + CurrentDB->in_prefix = TRUE; + count = perl_call_sv(CurrentDB->prefix, G_SCALAR); + CurrentDB = keep_CurrentDB; + CurrentDB->in_prefix = FALSE; + SPAGAIN ; - if (count != 1) + if (count != 1){ + tidyUp(CurrentDB); croak ("DB_File btree_prefix: expected 1 return value from prefix sub, got %d\n", count) ; + } retval = POPi ; @@ -696,6 +721,12 @@ HASH_CB_SIZE_TYPE size ; dMY_CXT; int retval ; int count ; + DB_File keep_CurrentDB = CurrentDB; + + if (CurrentDB->in_hash){ + tidyUp(CurrentDB); + croak ("DB_File hash callback: recursion detected\n") ; + } #ifndef newSVpvn if (size == 0) @@ -711,12 +742,19 @@ HASH_CB_SIZE_TYPE size ; XPUSHs(sv_2mortal(newSVpvn((char*)data,size))); PUTBACK ; + keep_CurrentDB->in_hash = TRUE; + count = perl_call_sv(CurrentDB->hash, G_SCALAR); + CurrentDB = keep_CurrentDB; + CurrentDB->in_hash = FALSE; + SPAGAIN ; - if (count != 1) + if (count != 1){ + tidyUp(CurrentDB); croak ("DB_File hash_cb: expected 1 return value from hash sub, got %d\n", count) ; + } retval = POPi ; @@ -727,6 +765,23 @@ HASH_CB_SIZE_TYPE size ; return (retval) ; } +static void +#ifdef CAN_PROTOTYPE +db_errcall_cb(const char * db_errpfx, char * buffer) +#else +db_errcall_cb(db_errpfx, buffer) +const char * db_errpfx; +char * buffer; +#endif +{ + SV * sv = perl_get_sv(ERR_BUFF, FALSE) ; + if (sv) { + if (db_errpfx) + sv_setpvf(sv, "%s: %s", db_errpfx, buffer) ; + else + sv_setpv(sv, buffer) ; + } +} #if defined(TRACE) && defined(BERKELEY_DB_1_OR_2) @@ -836,8 +891,10 @@ I32 value ; I32 length = GetArrayLength(aTHX_ db) ; /* check for attempt to write before start of array */ - if (length + value + 1 <= 0) + if (length + value + 1 <= 0) { + tidyUp(db); croak("Modification of non-creatable array value attempted, subscript %ld", (long)value) ; + } value = length + value + 1 ; } @@ -875,11 +932,9 @@ SV * sv ; Zero(RETVAL, 1, DB_File_type) ; /* Default to HASH */ -#ifdef DBM_FILTERING RETVAL->filtering = 0 ; RETVAL->filter_fetch_key = RETVAL->filter_store_key = RETVAL->filter_fetch_value = RETVAL->filter_store_value = -#endif /* DBM_FILTERING */ RETVAL->hash = RETVAL->compare = RETVAL->prefix = NULL ; RETVAL->type = DB_HASH ; @@ -1149,11 +1204,9 @@ SV * sv ; Zero(RETVAL, 1, DB_File_type) ; /* Default to HASH */ -#ifdef DBM_FILTERING RETVAL->filtering = 0 ; RETVAL->filter_fetch_key = RETVAL->filter_store_key = RETVAL->filter_fetch_value = RETVAL->filter_store_value = -#endif /* DBM_FILTERING */ RETVAL->hash = RETVAL->compare = RETVAL->prefix = NULL ; RETVAL->type = DB_HASH ; @@ -1365,14 +1418,22 @@ SV * sv ; Flags |= DB_TRUNCATE ; #endif +#ifdef AT_LEAST_DB_4_1 + status = (RETVAL->dbp->open)(RETVAL->dbp, NULL, name, NULL, RETVAL->type, + Flags, mode) ; +#else status = (RETVAL->dbp->open)(RETVAL->dbp, name, NULL, RETVAL->type, Flags, mode) ; +#endif /* printf("open returned %d %s\n", status, db_strerror(status)) ; */ - if (status == 0) + if (status == 0) { + RETVAL->dbp->set_errcall(RETVAL->dbp, db_errcall_cb) ; + status = (RETVAL->dbp->cursor)(RETVAL->dbp, NULL, &RETVAL->cursor, 0) ; - /* printf("cursor returned %d %s\n", status, db_strerror(status)) ; */ + /* printf("cursor returned %d %s\n", status, db_strerror(status)) ; */ + } if (status) RETVAL->dbp = NULL ; @@ -1394,6 +1455,7 @@ INCLUDE: constants.xs BOOT: { + SV * sv_err = perl_get_sv(ERR_BUFF, GV_ADD|GV_ADDMULTI) ; MY_CXT_INIT; __getBerkeleyDBInfo() ; @@ -1436,14 +1498,15 @@ db_DESTROY(db) dMY_CXT; INIT: CurrentDB = db ; + Trace(("DESTROY %p\n", db)); CLEANUP: + Trace(("DESTROY %p done\n", db)); if (db->hash) SvREFCNT_dec(db->hash) ; if (db->compare) SvREFCNT_dec(db->compare) ; if (db->prefix) SvREFCNT_dec(db->prefix) ; -#ifdef DBM_FILTERING if (db->filter_fetch_key) SvREFCNT_dec(db->filter_fetch_key) ; if (db->filter_store_key) @@ -1452,7 +1515,6 @@ db_DESTROY(db) SvREFCNT_dec(db->filter_fetch_value) ; if (db->filter_store_value) SvREFCNT_dec(db->filter_store_value) ; -#endif /* DBM_FILTERING */ safefree(db) ; #ifdef DB_VERSION_MAJOR if (RETVAL > 0) @@ -1502,7 +1564,6 @@ db_FETCH(db, key, flags=0) DBT_clear(value) ; CurrentDB = db ; - /* RETVAL = ((db->dbp)->get)(db->dbp, TXN &key, &value, flags) ; */ RETVAL = db_get(db, key, value, flags) ; ST(0) = sv_newmortal(); OutputValue(ST(0), value) @@ -1856,33 +1917,13 @@ db_seq(db, key, value, flags) key value -#ifdef DBM_FILTERING - -#define setFilter(type) \ - { \ - if (db->type) \ - RETVAL = sv_mortalcopy(db->type) ; \ - ST(0) = RETVAL ; \ - if (db->type && (code == &PL_sv_undef)) { \ - SvREFCNT_dec(db->type) ; \ - db->type = NULL ; \ - } \ - else if (code) { \ - if (db->type) \ - sv_setsv(db->type, code) ; \ - else \ - db->type = newSVsv(code) ; \ - } \ - } - - SV * filter_fetch_key(db, code) DB_File db SV * code SV * RETVAL = &PL_sv_undef ; CODE: - setFilter(filter_fetch_key) ; + DBM_setFilter(db->filter_fetch_key, code) ; SV * filter_store_key(db, code) @@ -1890,7 +1931,7 @@ filter_store_key(db, code) SV * code SV * RETVAL = &PL_sv_undef ; CODE: - setFilter(filter_store_key) ; + DBM_setFilter(db->filter_store_key, code) ; SV * filter_fetch_value(db, code) @@ -1898,7 +1939,7 @@ filter_fetch_value(db, code) SV * code SV * RETVAL = &PL_sv_undef ; CODE: - setFilter(filter_fetch_value) ; + DBM_setFilter(db->filter_fetch_value, code) ; SV * filter_store_value(db, code) @@ -1906,6 +1947,5 @@ filter_store_value(db, code) SV * code SV * RETVAL = &PL_sv_undef ; CODE: - setFilter(filter_store_value) ; + DBM_setFilter(db->filter_store_value, code) ; -#endif /* DBM_FILTERING */ diff --git a/db/perl/DB_File/Makefile.PL b/db/perl/DB_File/Makefile.PL index d38a42edd..4c1565d8d 100644 --- a/db/perl/DB_File/Makefile.PL +++ b/db/perl/DB_File/Makefile.PL @@ -41,7 +41,7 @@ $OS2 = "-DOS2" if $Config{'osname'} eq 'os2' ; WriteMakefile( NAME => 'DB_File', LIBS => ["-L${LIB_DIR} $LIBS"], - MAN3PODS => {}, # Pods will be built by installman. + #MAN3PODS => {}, # Pods will be built by installman. INC => "-I$INC_DIR", VERSION_FROM => 'DB_File.pm', XSPROTOARG => '-noprototypes', diff --git a/db/perl/DB_File/README b/db/perl/DB_File/README index 1505f7385..b09aa9d8a 100644 --- a/db/perl/DB_File/README +++ b/db/perl/DB_File/README @@ -1,8 +1,8 @@ DB_File - Version 1.804 + Version 1.805 - 2nd June 2002 + 1st Sep 2002 Copyright (c) 1995-2002 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify @@ -162,6 +162,35 @@ Solution: Setting the LIB & INCLUDE variables in config.in to point to the problem is to either delete or temporarily rename the copies of db.h and libdb.a that you don't want DB_File to use. + +Undefined symbol dbopen +----------------------- + +DB_File seems to have built correctly, but you get an error like this +when you run the test harness: + + ... + t/db-btree..........Can't load 'blib/arch/auto/DB_File/DB_File.so' for + module DB_File: blib/arch/auto/DB_File/DB_File.so: undefined symbol: + dbopen at /usr/local/lib/perl5/5.6.1/i586-linux/DynaLoader.pm line 206. + at t/db-btree.t line 23 + Compilation failed in require at t/db-btree.t line 23. + ... + +This error usually happens when you have both version 1 and a more recent +version of Berkeley DB installed on your system and DB_File attempts +to build using the db.h for Berkeley DB version 1 and the newer version +library. Unfortunately the two versions aren't compatible with each +other. The undefined symbol error is actually caused because versions +of Berkeley DB newer than version 1 doesn't have the symbol dbopen. + +Solution: Setting the LIB & INCLUDE variables in config.in to point to the + correct directories can sometimes be enough to fix this + problem. If that doesn't work the easiest way to fix the + problem is to either delete or temporarily rename the copies + of db.h and libdb.a that you don't want DB_File to use. + + Incompatible versions of db.h and libdb --------------------------------------- diff --git a/db/perl/DB_File/config.in b/db/perl/DB_File/config.in index 127b810d5..292b09a5f 100644 --- a/db/perl/DB_File/config.in +++ b/db/perl/DB_File/config.in @@ -12,8 +12,6 @@ INCLUDE = /usr/local/BerkeleyDB/include #INCLUDE = /usr/local/include #INCLUDE = /usr/include -#INCLUDE = ./libraries/4.0.14/include -#INCLUDE = ./libraries/2.7.7/include # 2. Where is libdb? # @@ -23,8 +21,6 @@ INCLUDE = /usr/local/BerkeleyDB/include LIB = /usr/local/BerkeleyDB/lib #LIB = /usr/local/lib #LIB = /usr/lib -#LIB = ./libraries/4.0.14/lib -#LIB = ./libraries/2.7.7/lib # 3. What version of Berkely DB have you got? # diff --git a/db/perl/DB_File/dbinfo b/db/perl/DB_File/dbinfo index d349d07ee..af2c45fac 100644 --- a/db/perl/DB_File/dbinfo +++ b/db/perl/DB_File/dbinfo @@ -29,7 +29,8 @@ my %Data = 5 => "2.0.0 -> 2.3.0", 6 => "2.3.1 -> 2.7.7", 7 => "3.0.x", - 8 => "3.1.x or greater", + 8 => "3.1.x -> 4.0.x", + 9 => "4.1.x or greater", } }, 0x061561 => { @@ -42,7 +43,8 @@ my %Data = 4 => "2.0.0 -> 2.1.0", 5 => "2.2.6 -> 2.7.7", 6 => "3.0.x", - 7 => "3.1.x or greater", + 7 => "3.1.x -> 4.0.x", + 8 => "4.1.x or greater", } }, 0x042253 => { @@ -51,7 +53,8 @@ my %Data = { 1 => "3.0.x", 2 => "3.1.x", - 3 => "3.2.x or greater", + 3 => "3.2.x -> 4.0.x", + 4 => "4.1.x or greater", } }, ) ; diff --git a/db/perl/DB_File/ppport.h b/db/perl/DB_File/ppport.h index b4fbc7bff..0887c2159 100644 --- a/db/perl/DB_File/ppport.h +++ b/db/perl/DB_File/ppport.h @@ -279,4 +279,51 @@ SV *sv; #endif /* START_MY_CXT */ +#ifndef DBM_setFilter + +/* + The DBM_setFilter & DBM_ckFilter macros are only used by + the *DB*_File modules +*/ + +#define DBM_setFilter(db_type,code) \ + { \ + if (db_type) \ + RETVAL = sv_mortalcopy(db_type) ; \ + ST(0) = RETVAL ; \ + if (db_type && (code == &PL_sv_undef)) { \ + SvREFCNT_dec(db_type) ; \ + db_type = NULL ; \ + } \ + else if (code) { \ + if (db_type) \ + sv_setsv(db_type, code) ; \ + else \ + db_type = newSVsv(code) ; \ + } \ + } + +#define DBM_ckFilter(arg,type,name) \ + if (db->type) { \ + if (db->filtering) { \ + croak("recursion detected in %s", name) ; \ + } \ + ENTER ; \ + SAVETMPS ; \ + SAVEINT(db->filtering) ; \ + db->filtering = TRUE ; \ + SAVESPTR(DEFSV) ; \ + DEFSV = arg ; \ + SvTEMP_off(arg) ; \ + PUSHMARK(SP) ; \ + PUTBACK ; \ + (void) perl_call_sv(db->type, G_DISCARD); \ + SPAGAIN ; \ + PUTBACK ; \ + FREETMPS ; \ + LEAVE ; \ + } + +#endif /* DBM_setFilter */ + #endif /* _P_P_PORTABILITY_H_ */ diff --git a/db/perl/DB_File/t/db-btree.t b/db/perl/DB_File/t/db-btree.t index 16ee276c8..a990a5c4b 100644 --- a/db/perl/DB_File/t/db-btree.t +++ b/db/perl/DB_File/t/db-btree.t @@ -34,7 +34,7 @@ EOM use DB_File; use Fcntl; -print "1..163\n"; +print "1..177\n"; sub ok { @@ -110,6 +110,15 @@ sub normalise return $data ; } +sub safeUntie +{ + my $hashref = shift ; + my $no_inner = 1; + local $SIG{__WARN__} = sub {-- $no_inner } ; + untie %$hashref; + return $no_inner; +} + my $db185mode = ($DB_File::db_version == 1 && ! $DB_File::db_185_compat) ; @@ -151,22 +160,16 @@ ok(13, $dbh->{minkeypage} == 123) ; $dbh->{maxkeypage} = 1234 ; ok(14, $dbh->{maxkeypage} == 1234 ); -$dbh->{compare} = 1234 ; -ok(15, $dbh->{compare} == 1234) ; - -$dbh->{prefix} = 1234 ; -ok(16, $dbh->{prefix} == 1234 ); - # Check that an invalid entry is caught both for store & fetch eval '$dbh->{fred} = 1234' ; -ok(17, $@ =~ /^DB_File::BTREEINFO::STORE - Unknown element 'fred' at/ ) ; +ok(15, $@ =~ /^DB_File::BTREEINFO::STORE - Unknown element 'fred' at/ ) ; eval 'my $q = $dbh->{fred}' ; -ok(18, $@ =~ /^DB_File::BTREEINFO::FETCH - Unknown element 'fred' at/ ) ; +ok(16, $@ =~ /^DB_File::BTREEINFO::FETCH - Unknown element 'fred' at/ ) ; # Now check the interface to BTREE my ($X, %h) ; -ok(19, $X = tie(%h, 'DB_File',$Dfile, O_RDWR|O_CREAT, 0640, $DB_BTREE )) ; +ok(17, $X = tie(%h, 'DB_File',$Dfile, O_RDWR|O_CREAT, 0640, $DB_BTREE )) ; die "Could not tie: $!" unless $X; my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime, @@ -174,22 +177,22 @@ my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime, my %noMode = map { $_, 1} qw( amigaos MSWin32 NetWare cygwin ) ; -ok(20, ($mode & 0777) == (($^O eq 'os2' || $^O eq 'MacOS') ? 0666 : 0640) +ok(18, ($mode & 0777) == (($^O eq 'os2' || $^O eq 'MacOS') ? 0666 : 0640) || $noMode{$^O} ); my ($key, $value, $i); while (($key,$value) = each(%h)) { $i++; } -ok(21, !$i ) ; +ok(19, !$i ) ; $h{'goner1'} = 'snork'; $h{'abc'} = 'ABC'; -ok(22, $h{'abc'} eq 'ABC' ); -ok(23, ! defined $h{'jimmy'} ) ; -ok(24, ! exists $h{'jimmy'} ) ; -ok(25, defined $h{'abc'} ) ; +ok(20, $h{'abc'} eq 'ABC' ); +ok(21, ! defined $h{'jimmy'} ) ; +ok(22, ! exists $h{'jimmy'} ) ; +ok(23, defined $h{'abc'} ) ; $h{'def'} = 'DEF'; $h{'jkl','mno'} = "JKL\034MNO"; @@ -220,7 +223,7 @@ undef $X ; untie(%h); # tie to the same file again -ok(26, $X = tie(%h,'DB_File',$Dfile, O_RDWR, 0640, $DB_BTREE)) ; +ok(24, $X = tie(%h,'DB_File',$Dfile, O_RDWR, 0640, $DB_BTREE)) ; # Modify an entry from the previous tie $h{'g'} = 'G'; @@ -251,7 +254,7 @@ $X->DELETE('goner3'); my @keys = keys(%h); my @values = values(%h); -ok(27, $#keys == 29 && $#values == 29) ; +ok(25, $#keys == 29 && $#values == 29) ; $i = 0 ; while (($key,$value) = each(%h)) { @@ -261,18 +264,18 @@ while (($key,$value) = each(%h)) { } } -ok(28, $i == 30) ; +ok(26, $i == 30) ; @keys = ('blurfl', keys(%h), 'dyick'); -ok(29, $#keys == 31) ; +ok(27, $#keys == 31) ; #Check that the keys can be retrieved in order my @b = keys %h ; my @c = sort lexical @b ; -ok(30, ArrayCompare(\@b, \@c)) ; +ok(28, ArrayCompare(\@b, \@c)) ; $h{'foo'} = ''; -ok(31, $h{'foo'} eq '' ) ; +ok(29, $h{'foo'} eq '' ) ; # Berkeley DB from version 2.4.10 to 3.0 does not allow null keys. # This feature was reenabled in version 3.1 of Berkeley DB. @@ -283,21 +286,21 @@ if ($null_keys_allowed) { } else { $result = 1 } -ok(32, $result) ; +ok(30, $result) ; # check cache overflow and numeric keys and contents my $ok = 1; for ($i = 1; $i < 200; $i++) { $h{$i + 0} = $i + 0; } for ($i = 1; $i < 200; $i++) { $ok = 0 unless $h{$i} == $i; } -ok(33, $ok); +ok(31, $ok); ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime, $blksize,$blocks) = stat($Dfile); -ok(34, $size > 0 ); +ok(32, $size > 0 ); @h{0..200} = 200..400; my @foo = @h{0..200}; -ok(35, join(':',200..400) eq join(':',@foo) ); +ok(33, join(':',200..400) eq join(':',@foo) ); # Now check all the non-tie specific stuff @@ -306,57 +309,57 @@ ok(35, join(':',200..400) eq join(':',@foo) ); # an existing record. my $status = $X->put( 'x', 'newvalue', R_NOOVERWRITE) ; -ok(36, $status == 1 ); +ok(34, $status == 1 ); # check that the value of the key 'x' has not been changed by the # previous test -ok(37, $h{'x'} eq 'X' ); +ok(35, $h{'x'} eq 'X' ); # standard put $status = $X->put('key', 'value') ; -ok(38, $status == 0 ); +ok(36, $status == 0 ); #check that previous put can be retrieved $value = 0 ; $status = $X->get('key', $value) ; -ok(39, $status == 0 ); -ok(40, $value eq 'value' ); +ok(37, $status == 0 ); +ok(38, $value eq 'value' ); # Attempting to delete an existing key should work $status = $X->del('q') ; -ok(41, $status == 0 ); +ok(39, $status == 0 ); if ($null_keys_allowed) { $status = $X->del('') ; } else { $status = 0 ; } -ok(42, $status == 0 ); +ok(40, $status == 0 ); # Make sure that the key deleted, cannot be retrieved -ok(43, ! defined $h{'q'}) ; -ok(44, ! defined $h{''}) ; +ok(41, ! defined $h{'q'}) ; +ok(42, ! defined $h{''}) ; undef $X ; untie %h ; -ok(45, $X = tie(%h, 'DB_File',$Dfile, O_RDWR, 0640, $DB_BTREE )); +ok(43, $X = tie(%h, 'DB_File',$Dfile, O_RDWR, 0640, $DB_BTREE )); # Attempting to delete a non-existant key should fail $status = $X->del('joe') ; -ok(46, $status == 1 ); +ok(44, $status == 1 ); # Check the get interface # First a non-existing key $status = $X->get('aaaa', $value) ; -ok(47, $status == 1 ); +ok(45, $status == 1 ); # Next an existing key $status = $X->get('a', $value) ; -ok(48, $status == 0 ); -ok(49, $value eq 'A' ); +ok(46, $status == 0 ); +ok(47, $value eq 'A' ); # seq # ### @@ -365,15 +368,15 @@ ok(49, $value eq 'A' ); $key = 'ke' ; $value = '' ; $status = $X->seq($key, $value, R_CURSOR) ; -ok(50, $status == 0 ); -ok(51, $key eq 'key' ); -ok(52, $value eq 'value' ); +ok(48, $status == 0 ); +ok(49, $key eq 'key' ); +ok(50, $value eq 'value' ); # seq when the key does not match $key = 'zzz' ; $value = '' ; $status = $X->seq($key, $value, R_CURSOR) ; -ok(53, $status == 1 ); +ok(51, $status == 1 ); # use seq to set the cursor, then delete the record @ the cursor. @@ -381,36 +384,36 @@ ok(53, $status == 1 ); $key = 'x' ; $value = '' ; $status = $X->seq($key, $value, R_CURSOR) ; -ok(54, $status == 0 ); -ok(55, $key eq 'x' ); -ok(56, $value eq 'X' ); +ok(52, $status == 0 ); +ok(53, $key eq 'x' ); +ok(54, $value eq 'X' ); $status = $X->del(0, R_CURSOR) ; -ok(57, $status == 0 ); +ok(55, $status == 0 ); $status = $X->get('x', $value) ; -ok(58, $status == 1 ); +ok(56, $status == 1 ); # ditto, but use put to replace the key/value pair. $key = 'y' ; $value = '' ; $status = $X->seq($key, $value, R_CURSOR) ; -ok(59, $status == 0 ); -ok(60, $key eq 'y' ); -ok(61, $value eq 'Y' ); +ok(57, $status == 0 ); +ok(58, $key eq 'y' ); +ok(59, $value eq 'Y' ); $key = "replace key" ; $value = "replace value" ; $status = $X->put($key, $value, R_CURSOR) ; -ok(62, $status == 0 ); -ok(63, $key eq 'replace key' ); -ok(64, $value eq 'replace value' ); +ok(60, $status == 0 ); +ok(61, $key eq 'replace key' ); +ok(62, $value eq 'replace value' ); $status = $X->get('y', $value) ; -ok(65, 1) ; # hard-wire to always pass. the previous test ($status == 1) +ok(63, 1) ; # hard-wire to always pass. the previous test ($status == 1) # only worked because of a bug in 1.85/6 # use seq to walk forwards through a file $status = $X->seq($key, $value, R_FIRST) ; -ok(66, $status == 0 ); +ok(64, $status == 0 ); my $previous = $key ; $ok = 1 ; @@ -419,12 +422,12 @@ while (($status = $X->seq($key, $value, R_NEXT)) == 0) ($ok = 0), last if ($previous cmp $key) == 1 ; } -ok(67, $status == 1 ); -ok(68, $ok == 1 ); +ok(65, $status == 1 ); +ok(66, $ok == 1 ); # use seq to walk backwards through a file $status = $X->seq($key, $value, R_LAST) ; -ok(69, $status == 0 ); +ok(67, $status == 0 ); $previous = $key ; $ok = 1 ; @@ -434,8 +437,8 @@ while (($status = $X->seq($key, $value, R_PREV)) == 0) #print "key = [$key] value = [$value]\n" ; } -ok(70, $status == 1 ); -ok(71, $ok == 1 ); +ok(68, $status == 1 ); +ok(69, $ok == 1 ); # check seq FIRST/LAST @@ -444,14 +447,14 @@ ok(71, $ok == 1 ); # #### $status = $X->sync ; -ok(72, $status == 0 ); +ok(70, $status == 0 ); # fd # ## $status = $X->fd ; -ok(73, $status != 0 ); +ok(71, $status != 0 ); undef $X ; @@ -461,11 +464,11 @@ unlink $Dfile; # Now try an in memory file my $Y; -ok(74, $Y = tie(%h, 'DB_File',undef, O_RDWR|O_CREAT, 0640, $DB_BTREE )); +ok(72, $Y = tie(%h, 'DB_File',undef, O_RDWR|O_CREAT, 0640, $DB_BTREE )); # fd with an in memory file should return failure $status = $Y->fd ; -ok(75, $status == -1 ); +ok(73, $status == -1 ); undef $Y ; @@ -475,7 +478,7 @@ untie %h ; my $bt = new DB_File::BTREEINFO ; $bt->{flags} = R_DUP ; my ($YY, %hh); -ok(76, $YY = tie(%hh, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $bt )) ; +ok(74, $YY = tie(%hh, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $bt )) ; $hh{'Wall'} = 'Larry' ; $hh{'Wall'} = 'Stone' ; # Note the duplicate key @@ -485,33 +488,33 @@ $hh{'Smith'} = 'John' ; $hh{'mouse'} = 'mickey' ; # first work in scalar context -ok(77, scalar $YY->get_dup('Unknown') == 0 ); -ok(78, scalar $YY->get_dup('Smith') == 1 ); -ok(79, scalar $YY->get_dup('Wall') == 4 ); +ok(75, scalar $YY->get_dup('Unknown') == 0 ); +ok(76, scalar $YY->get_dup('Smith') == 1 ); +ok(77, scalar $YY->get_dup('Wall') == 4 ); # now in list context my @unknown = $YY->get_dup('Unknown') ; -ok(80, "@unknown" eq "" ); +ok(78, "@unknown" eq "" ); my @smith = $YY->get_dup('Smith') ; -ok(81, "@smith" eq "John" ); +ok(79, "@smith" eq "John" ); { my @wall = $YY->get_dup('Wall') ; my %wall ; @wall{@wall} = @wall ; -ok(82, (@wall == 4 && $wall{'Larry'} && $wall{'Stone'} && $wall{'Brick'}) ); +ok(80, (@wall == 4 && $wall{'Larry'} && $wall{'Stone'} && $wall{'Brick'}) ); } # hash my %unknown = $YY->get_dup('Unknown', 1) ; -ok(83, keys %unknown == 0 ); +ok(81, keys %unknown == 0 ); my %smith = $YY->get_dup('Smith', 1) ; -ok(84, keys %smith == 1 && $smith{'John'}) ; +ok(82, keys %smith == 1 && $smith{'John'}) ; my %wall = $YY->get_dup('Wall', 1) ; -ok(85, keys %wall == 3 && $wall{'Larry'} == 1 && $wall{'Stone'} == 1 +ok(83, keys %wall == 3 && $wall{'Larry'} == 1 && $wall{'Stone'} == 1 && $wall{'Brick'} == 2); undef $YY ; @@ -570,9 +573,9 @@ sub ArrayCompare 1 ; } -ok(86, ArrayCompare (\@srt_1, [keys %h]) ); -ok(87, ArrayCompare (\@srt_2, [keys %g]) ); -ok(88, ArrayCompare (\@srt_3, [keys %k]) ); +ok(84, ArrayCompare (\@srt_1, [keys %h]) ); +ok(85, ArrayCompare (\@srt_2, [keys %g]) ); +ok(86, ArrayCompare (\@srt_3, [keys %k]) ); untie %h ; untie %g ; @@ -582,7 +585,7 @@ unlink $Dfile1, $Dfile2, $Dfile3 ; # clear # ##### -ok(89, tie(%h, 'DB_File', $Dfile1, O_RDWR|O_CREAT, 0640, $DB_BTREE ) ); +ok(87, tie(%h, 'DB_File', $Dfile1, O_RDWR|O_CREAT, 0640, $DB_BTREE ) ); foreach (1 .. 10) { $h{$_} = $_ * 100 } @@ -591,7 +594,7 @@ $i = 0 ; while (($key,$value) = each(%h)) { $i++; } -ok(90, $i == 10); +ok(88, $i == 10); # now clear the hash %h = () ; @@ -601,7 +604,7 @@ $i = 0 ; while (($key,$value) = each(%h)) { $i++; } -ok(91, $i == 0); +ok(89, $i == 0); untie %h ; unlink $Dfile1 ; @@ -612,7 +615,7 @@ unlink $Dfile1 ; my $filename = "xyz" ; my @x ; eval { tie @x, 'DB_File', $filename, O_RDWR|O_CREAT, 0640, $DB_BTREE ; } ; - ok(92, $@ =~ /^DB_File can only tie an associative array to a DB_BTREE database/) ; + ok(90, $@ =~ /^DB_File can only tie an associative array to a DB_BTREE database/) ; unlink $filename ; } @@ -679,31 +682,31 @@ EOM BEGIN { push @INC, '.'; } eval 'use SubDB ; '; - main::ok(93, $@ eq "") ; + main::ok(91, $@ eq "") ; my %h ; my $X ; eval ' $X = tie(%h, "SubDB","dbbtree.tmp", O_RDWR|O_CREAT, 0640, $DB_BTREE ); ' ; - main::ok(94, $@ eq "") ; + main::ok(92, $@ eq "") ; my $ret = eval '$h{"fred"} = 3 ; return $h{"fred"} ' ; - main::ok(95, $@ eq "") ; - main::ok(96, $ret == 5) ; + main::ok(93, $@ eq "") ; + main::ok(94, $ret == 5) ; my $value = 0; $ret = eval '$X->put("joe", 4) ; $X->get("joe", $value) ; return $value' ; - main::ok(97, $@ eq "") ; - main::ok(98, $ret == 10) ; + main::ok(95, $@ eq "") ; + main::ok(96, $ret == 10) ; $ret = eval ' R_NEXT eq main::R_NEXT ' ; - main::ok(99, $@ eq "" ) ; - main::ok(100, $ret == 1) ; + main::ok(97, $@ eq "" ) ; + main::ok(98, $ret == 1) ; $ret = eval '$X->A_new_method("joe") ' ; - main::ok(101, $@ eq "") ; - main::ok(102, $ret eq "[[11]]") ; + main::ok(99, $@ eq "") ; + main::ok(100, $ret eq "[[11]]") ; undef $X; untie(%h); @@ -728,7 +731,7 @@ EOM $_ eq 'original' ; } - ok(103, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_BTREE ) ); + ok(101, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_BTREE ) ); $db->filter_fetch_key (sub { $fetch_key = $_ }) ; $db->filter_store_key (sub { $store_key = $_ }) ; @@ -739,17 +742,17 @@ EOM $h{"fred"} = "joe" ; # fk sk fv sv - ok(104, checkOutput( "", "fred", "", "joe")) ; + ok(102, checkOutput( "", "fred", "", "joe")) ; ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; - ok(105, $h{"fred"} eq "joe"); + ok(103, $h{"fred"} eq "joe"); # fk sk fv sv - ok(106, checkOutput( "", "fred", "joe", "")) ; + ok(104, checkOutput( "", "fred", "joe", "")) ; ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; - ok(107, $db->FIRSTKEY() eq "fred") ; + ok(105, $db->FIRSTKEY() eq "fred") ; # fk sk fv sv - ok(108, checkOutput( "fred", "", "", "")) ; + ok(106, checkOutput( "fred", "", "", "")) ; # replace the filters, but remember the previous set my ($old_fk) = $db->filter_fetch_key @@ -764,17 +767,17 @@ EOM ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; $h{"Fred"} = "Joe" ; # fk sk fv sv - ok(109, checkOutput( "", "fred", "", "Jxe")) ; + ok(107, checkOutput( "", "fred", "", "Jxe")) ; ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; - ok(110, $h{"Fred"} eq "[Jxe]"); + ok(108, $h{"Fred"} eq "[Jxe]"); # fk sk fv sv - ok(111, checkOutput( "", "fred", "[Jxe]", "")) ; + ok(109, checkOutput( "", "fred", "[Jxe]", "")) ; ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; - ok(112, $db->FIRSTKEY() eq "FRED") ; + ok(110, $db->FIRSTKEY() eq "FRED") ; # fk sk fv sv - ok(113, checkOutput( "FRED", "", "", "")) ; + ok(111, checkOutput( "FRED", "", "", "")) ; # put the original filters back $db->filter_fetch_key ($old_fk); @@ -784,15 +787,15 @@ EOM ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; $h{"fred"} = "joe" ; - ok(114, checkOutput( "", "fred", "", "joe")) ; + ok(112, checkOutput( "", "fred", "", "joe")) ; ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; - ok(115, $h{"fred"} eq "joe"); - ok(116, checkOutput( "", "fred", "joe", "")) ; + ok(113, $h{"fred"} eq "joe"); + ok(114, checkOutput( "", "fred", "joe", "")) ; ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; - ok(117, $db->FIRSTKEY() eq "fred") ; - ok(118, checkOutput( "fred", "", "", "")) ; + ok(115, $db->FIRSTKEY() eq "fred") ; + ok(116, checkOutput( "fred", "", "", "")) ; # delete the filters $db->filter_fetch_key (undef); @@ -802,15 +805,15 @@ EOM ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; $h{"fred"} = "joe" ; - ok(119, checkOutput( "", "", "", "")) ; + ok(117, checkOutput( "", "", "", "")) ; ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; - ok(120, $h{"fred"} eq "joe"); - ok(121, checkOutput( "", "", "", "")) ; + ok(118, $h{"fred"} eq "joe"); + ok(119, checkOutput( "", "", "", "")) ; ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; - ok(122, $db->FIRSTKEY() eq "fred") ; - ok(123, checkOutput( "", "", "", "")) ; + ok(120, $db->FIRSTKEY() eq "fred") ; + ok(121, checkOutput( "", "", "", "")) ; undef $db ; untie %h; @@ -825,7 +828,7 @@ EOM my (%h, $db) ; unlink $Dfile; - ok(124, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_BTREE ) ); + ok(122, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_BTREE ) ); my %result = () ; @@ -849,32 +852,32 @@ EOM $_ = "original" ; $h{"fred"} = "joe" ; - ok(125, $result{"store key"} eq "store key - 1: [fred]"); - ok(126, $result{"store value"} eq "store value - 1: [joe]"); - ok(127, ! defined $result{"fetch key"} ); - ok(128, ! defined $result{"fetch value"} ); - ok(129, $_ eq "original") ; - - ok(130, $db->FIRSTKEY() eq "fred") ; - ok(131, $result{"store key"} eq "store key - 1: [fred]"); - ok(132, $result{"store value"} eq "store value - 1: [joe]"); - ok(133, $result{"fetch key"} eq "fetch key - 1: [fred]"); - ok(134, ! defined $result{"fetch value"} ); - ok(135, $_ eq "original") ; + ok(123, $result{"store key"} eq "store key - 1: [fred]"); + ok(124, $result{"store value"} eq "store value - 1: [joe]"); + ok(125, ! defined $result{"fetch key"} ); + ok(126, ! defined $result{"fetch value"} ); + ok(127, $_ eq "original") ; + + ok(128, $db->FIRSTKEY() eq "fred") ; + ok(129, $result{"store key"} eq "store key - 1: [fred]"); + ok(130, $result{"store value"} eq "store value - 1: [joe]"); + ok(131, $result{"fetch key"} eq "fetch key - 1: [fred]"); + ok(132, ! defined $result{"fetch value"} ); + ok(133, $_ eq "original") ; $h{"jim"} = "john" ; - ok(136, $result{"store key"} eq "store key - 2: [fred jim]"); - ok(137, $result{"store value"} eq "store value - 2: [joe john]"); - ok(138, $result{"fetch key"} eq "fetch key - 1: [fred]"); - ok(139, ! defined $result{"fetch value"} ); - ok(140, $_ eq "original") ; - - ok(141, $h{"fred"} eq "joe"); - ok(142, $result{"store key"} eq "store key - 3: [fred jim fred]"); - ok(143, $result{"store value"} eq "store value - 2: [joe john]"); - ok(144, $result{"fetch key"} eq "fetch key - 1: [fred]"); - ok(145, $result{"fetch value"} eq "fetch value - 1: [joe]"); - ok(146, $_ eq "original") ; + ok(134, $result{"store key"} eq "store key - 2: [fred jim]"); + ok(135, $result{"store value"} eq "store value - 2: [joe john]"); + ok(136, $result{"fetch key"} eq "fetch key - 1: [fred]"); + ok(137, ! defined $result{"fetch value"} ); + ok(138, $_ eq "original") ; + + ok(139, $h{"fred"} eq "joe"); + ok(140, $result{"store key"} eq "store key - 3: [fred jim fred]"); + ok(141, $result{"store value"} eq "store value - 2: [joe john]"); + ok(142, $result{"fetch key"} eq "fetch key - 1: [fred]"); + ok(143, $result{"fetch value"} eq "fetch value - 1: [joe]"); + ok(144, $_ eq "original") ; undef $db ; untie %h; @@ -888,12 +891,12 @@ EOM my (%h, $db) ; unlink $Dfile; - ok(147, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_BTREE ) ); + ok(145, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_BTREE ) ); $db->filter_store_key (sub { $_ = $h{$_} }) ; eval '$h{1} = 1234' ; - ok(148, $@ =~ /^recursion detected in filter_store_key at/ ); + ok(146, $@ =~ /^recursion detected in filter_store_key at/ ); undef $db ; untie %h; @@ -953,7 +956,7 @@ EOM delete $DB_BTREE->{'compare'} ; - ok(149, docat_del($file) eq <<'EOM') ; + ok(147, docat_del($file) eq <<'EOM') ; mouse Smith Wall @@ -997,7 +1000,7 @@ EOM unlink $filename ; } - ok(150, docat_del($file) eq ($db185mode ? <<'EOM' : <<'EOM') ) ; + ok(148, docat_del($file) eq ($db185mode ? <<'EOM' : <<'EOM') ) ; Smith -> John Wall -> Brick Wall -> Brick @@ -1052,7 +1055,7 @@ EOM untie %h ; } - ok(151, docat_del($file) eq ($db185mode == 1 ? <<'EOM' : <<'EOM') ) ; + ok(149, docat_del($file) eq ($db185mode == 1 ? <<'EOM' : <<'EOM') ) ; Smith -> John Wall -> Brick Wall -> Brick @@ -1107,7 +1110,7 @@ EOM untie %h ; } - ok(152, docat_del($file) eq <<'EOM') ; + ok(150, docat_del($file) eq <<'EOM') ; Wall occurred 3 times Larry is there There are 2 Brick Walls @@ -1146,7 +1149,7 @@ EOM untie %h ; } - ok(153, docat_del($file) eq <<'EOM') ; + ok(151, docat_del($file) eq <<'EOM') ; Larry Wall is there Harry Wall is not there EOM @@ -1182,7 +1185,7 @@ EOM unlink $filename ; } - ok(154, docat_del($file) eq <<'EOM') ; + ok(152, docat_del($file) eq <<'EOM') ; Larry Wall is not there EOM @@ -1242,7 +1245,7 @@ EOM } - ok(155, docat_del($file) eq <<'EOM') ; + ok(153, docat_del($file) eq <<'EOM') ; IN ORDER Smith -> John Wall -> Larry @@ -1301,7 +1304,7 @@ EOM tie %h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0664, $DB_BTREE or die "Can't open file: $!\n" ; $h{ABC} = undef; - ok(156, $a eq "") ; + ok(154, $a eq "") ; untie %h ; unlink $Dfile; } @@ -1321,7 +1324,7 @@ EOM tie %h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0664, $DB_BTREE or die "Can't open file: $!\n" ; %h = (); ; - ok(157, $a eq "") ; + ok(155, $a eq "") ; untie %h ; unlink $Dfile; } @@ -1341,31 +1344,146 @@ EOM my $bad_key = 0 ; my %h = () ; my $db ; - ok(158, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_BTREE ) ); + ok(156, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_BTREE ) ); $db->filter_fetch_key (sub { $_ =~ s/^Beta_/Alpha_/ if defined $_}) ; $db->filter_store_key (sub { $bad_key = 1 if /^Beta_/ ; $_ =~ s/^Alpha_/Beta_/}) ; $h{'Alpha_ABC'} = 2 ; $h{'Alpha_DEF'} = 5 ; - ok(159, $h{'Alpha_ABC'} == 2); - ok(160, $h{'Alpha_DEF'} == 5); + ok(157, $h{'Alpha_ABC'} == 2); + ok(158, $h{'Alpha_DEF'} == 5); my ($k, $v) = ("",""); while (($k, $v) = each %h) {} - ok(161, $bad_key == 0); + ok(159, $bad_key == 0); $bad_key = 0 ; foreach $k (keys %h) {} - ok(162, $bad_key == 0); + ok(160, $bad_key == 0); $bad_key = 0 ; foreach $v (values %h) {} - ok(163, $bad_key == 0); + ok(161, $bad_key == 0); undef $db ; untie %h ; unlink $Dfile; } +{ + # now an error to pass 'compare' a non-code reference + my $dbh = new DB_File::BTREEINFO ; + + eval { $dbh->{compare} = 2 }; + ok(162, $@ =~ /^Key 'compare' not associated with a code reference at/); + + eval { $dbh->{prefix} = 2 }; + ok(163, $@ =~ /^Key 'prefix' not associated with a code reference at/); + +} + + +{ + # recursion detection in btree + my %hash ; + unlink $Dfile; + my $dbh = new DB_File::BTREEINFO ; + $dbh->{compare} = sub { $hash{3} = 4 ; length $_[0] } ; + + + my (%h); + ok(164, tie(%hash, 'DB_File',$Dfile, O_RDWR|O_CREAT, 0640, $dbh ) ); + + eval { $hash{1} = 2; + $hash{4} = 5; + }; + + ok(165, $@ =~ /^DB_File btree_compare: recursion detected/); + { + no warnings; + untie %hash; + } + unlink $Dfile; +} + +{ + # Check that two callbacks don't interact + my %hash1 ; + my %hash2 ; + my $h1_count = 0; + my $h2_count = 0; + unlink $Dfile, $Dfile2; + my $dbh1 = new DB_File::BTREEINFO ; + $dbh1->{compare} = sub { ++ $h1_count ; $_[0] cmp $_[1] } ; + + my $dbh2 = new DB_File::BTREEINFO ; + $dbh2->{compare} = sub { ;++ $h2_count ; $_[0] cmp $_[1] } ; + + + + my (%h); + ok(166, tie(%hash1, 'DB_File',$Dfile, O_RDWR|O_CREAT, 0640, $dbh1 ) ); + ok(167, tie(%hash2, 'DB_File',$Dfile2, O_RDWR|O_CREAT, 0640, $dbh2 ) ); + + $hash1{DEFG} = 5; + $hash1{XYZ} = 2; + $hash1{ABCDE} = 5; + + $hash2{defg} = 5; + $hash2{xyz} = 2; + $hash2{abcde} = 5; + + ok(168, $h1_count > 0); + ok(169, $h1_count == $h2_count); + + ok(170, safeUntie \%hash1); + ok(171, safeUntie \%hash2); + unlink $Dfile, $Dfile2; +} + +{ + # Check that DBM Filter can cope with read-only $_ + + use warnings ; + use strict ; + my (%h, $db) ; + unlink $Dfile; + + ok(172, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_BTREE ) ); + + $db->filter_fetch_key (sub { }) ; + $db->filter_store_key (sub { }) ; + $db->filter_fetch_value (sub { }) ; + $db->filter_store_value (sub { }) ; + + $_ = "original" ; + + $h{"fred"} = "joe" ; + ok(173, $h{"fred"} eq "joe"); + + eval { grep { $h{$_} } (1, 2, 3) }; + ok (174, ! $@); + + + # delete the filters + $db->filter_fetch_key (undef); + $db->filter_store_key (undef); + $db->filter_fetch_value (undef); + $db->filter_store_value (undef); + + $h{"fred"} = "joe" ; + + ok(175, $h{"fred"} eq "joe"); + + ok(176, $db->FIRSTKEY() eq "fred") ; + + eval { grep { $h{$_} } (1, 2, 3) }; + ok (177, ! $@); + + undef $db ; + untie %h; + unlink $Dfile; +} + exit ; diff --git a/db/perl/DB_File/t/db-hash.t b/db/perl/DB_File/t/db-hash.t index 931b03c96..10623cc82 100644 --- a/db/perl/DB_File/t/db-hash.t +++ b/db/perl/DB_File/t/db-hash.t @@ -23,7 +23,7 @@ BEGIN { use DB_File; use Fcntl; -print "1..117\n"; +print "1..143\n"; sub ok { @@ -76,9 +76,18 @@ sub normalise return $data ; } +sub safeUntie +{ + my $hashref = shift ; + my $no_inner = 1; + local $SIG{__WARN__} = sub {-- $no_inner } ; + untie %$hashref; + return $no_inner; +} my $Dfile = "dbhash.tmp"; +my $Dfile2 = "dbhash2.tmp"; my $null_keys_allowed = ($DB_File::db_ver < 2.004010 || $DB_File::db_ver >= 3.1 ); @@ -109,8 +118,9 @@ ok(9, $dbh->{nelem} == 400 ); $dbh->{cachesize} = 65 ; ok(10, $dbh->{cachesize} == 65 ); -$dbh->{hash} = "abc" ; -ok(11, $dbh->{hash} eq "abc" ); +my $some_sub = sub {} ; +$dbh->{hash} = $some_sub; +ok(11, $dbh->{hash} eq $some_sub ); $dbh->{lorder} = 1234 ; ok(12, $dbh->{lorder} == 1234 ); @@ -498,9 +508,22 @@ EOM sub checkOutput { + no warnings 'uninitialized'; my($fk, $sk, $fv, $sv) = @_ ; + + print "# Fetch Key : expected '$fk' got '$fetch_key'\n" + if $fetch_key ne $fk ; + print "# Fetch Value : expected '$fv' got '$fetch_value'\n" + if $fetch_value ne $fv ; + print "# Store Key : expected '$sk' got '$store_key'\n" + if $store_key ne $sk ; + print "# Store Value : expected '$sv' got '$store_value'\n" + if $store_value ne $sv ; + print "# \$_ : expected 'original' got '$_'\n" + if $_ ne 'original' ; + return - $fetch_key eq $fk && $store_key eq $sk && + $fetch_key eq $fk && $store_key eq $sk && $fetch_value eq $fv && $store_value eq $sv && $_ eq 'original' ; } @@ -524,9 +547,13 @@ EOM ok(66, checkOutput( "", "fred", "joe", "")) ; ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; - ok(67, $db->FIRSTKEY() eq "fred") ; + my ($k, $v) ; + $k = 'fred'; + ok(67, ! $db->seq($k, $v, R_FIRST) ) ; + ok(68, $k eq "fred") ; + ok(69, $v eq "joe") ; # fk sk fv sv - ok(68, checkOutput( "fred", "", "", "")) ; + ok(70, checkOutput( "fred", "fred", "joe", "")) ; # replace the filters, but remember the previous set my ($old_fk) = $db->filter_fetch_key @@ -541,17 +568,20 @@ EOM ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; $h{"Fred"} = "Joe" ; # fk sk fv sv - ok(69, checkOutput( "", "fred", "", "Jxe")) ; + ok(71, checkOutput( "", "fred", "", "Jxe")) ; ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; - ok(70, $h{"Fred"} eq "[Jxe]"); + ok(72, $h{"Fred"} eq "[Jxe]"); # fk sk fv sv - ok(71, checkOutput( "", "fred", "[Jxe]", "")) ; + ok(73, checkOutput( "", "fred", "[Jxe]", "")) ; ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; - ok(72, $db->FIRSTKEY() eq "FRED") ; + $k = 'Fred'; $v =''; + ok(74, ! $db->seq($k, $v, R_FIRST) ) ; + ok(75, $k eq "FRED") ; + ok(76, $v eq "[Jxe]") ; # fk sk fv sv - ok(73, checkOutput( "FRED", "", "", "")) ; + ok(77, checkOutput( "FRED", "fred", "[Jxe]", "")) ; # put the original filters back $db->filter_fetch_key ($old_fk); @@ -561,15 +591,20 @@ EOM ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; $h{"fred"} = "joe" ; - ok(74, checkOutput( "", "fred", "", "joe")) ; + ok(78, checkOutput( "", "fred", "", "joe")) ; ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; - ok(75, $h{"fred"} eq "joe"); - ok(76, checkOutput( "", "fred", "joe", "")) ; + ok(79, $h{"fred"} eq "joe"); + ok(80, checkOutput( "", "fred", "joe", "")) ; ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; - ok(77, $db->FIRSTKEY() eq "fred") ; - ok(78, checkOutput( "fred", "", "", "")) ; + #ok(77, $db->FIRSTKEY() eq "fred") ; + $k = 'fred'; + ok(81, ! $db->seq($k, $v, R_FIRST) ) ; + ok(82, $k eq "fred") ; + ok(83, $v eq "joe") ; + # fk sk fv sv + ok(84, checkOutput( "fred", "fred", "joe", "")) ; # delete the filters $db->filter_fetch_key (undef); @@ -579,15 +614,18 @@ EOM ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; $h{"fred"} = "joe" ; - ok(79, checkOutput( "", "", "", "")) ; + ok(85, checkOutput( "", "", "", "")) ; ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; - ok(80, $h{"fred"} eq "joe"); - ok(81, checkOutput( "", "", "", "")) ; + ok(86, $h{"fred"} eq "joe"); + ok(87, checkOutput( "", "", "", "")) ; ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; - ok(82, $db->FIRSTKEY() eq "fred") ; - ok(83, checkOutput( "", "", "", "")) ; + $k = 'fred'; + ok(88, ! $db->seq($k, $v, R_FIRST) ) ; + ok(89, $k eq "fred") ; + ok(90, $v eq "joe") ; + ok(91, checkOutput( "", "", "", "")) ; undef $db ; untie %h; @@ -602,7 +640,7 @@ EOM my (%h, $db) ; unlink $Dfile; - ok(84, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_HASH ) ); + ok(92, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_HASH ) ); my %result = () ; @@ -626,32 +664,32 @@ EOM $_ = "original" ; $h{"fred"} = "joe" ; - ok(85, $result{"store key"} eq "store key - 1: [fred]"); - ok(86, $result{"store value"} eq "store value - 1: [joe]"); - ok(87, ! defined $result{"fetch key"} ); - ok(88, ! defined $result{"fetch value"} ); - ok(89, $_ eq "original") ; - - ok(90, $db->FIRSTKEY() eq "fred") ; - ok(91, $result{"store key"} eq "store key - 1: [fred]"); - ok(92, $result{"store value"} eq "store value - 1: [joe]"); - ok(93, $result{"fetch key"} eq "fetch key - 1: [fred]"); - ok(94, ! defined $result{"fetch value"} ); - ok(95, $_ eq "original") ; + ok(93, $result{"store key"} eq "store key - 1: [fred]"); + ok(94, $result{"store value"} eq "store value - 1: [joe]"); + ok(95, ! defined $result{"fetch key"} ); + ok(96, ! defined $result{"fetch value"} ); + ok(97, $_ eq "original") ; + + ok(98, $db->FIRSTKEY() eq "fred") ; + ok(99, $result{"store key"} eq "store key - 1: [fred]"); + ok(100, $result{"store value"} eq "store value - 1: [joe]"); + ok(101, $result{"fetch key"} eq "fetch key - 1: [fred]"); + ok(102, ! defined $result{"fetch value"} ); + ok(103, $_ eq "original") ; $h{"jim"} = "john" ; - ok(96, $result{"store key"} eq "store key - 2: [fred jim]"); - ok(97, $result{"store value"} eq "store value - 2: [joe john]"); - ok(98, $result{"fetch key"} eq "fetch key - 1: [fred]"); - ok(99, ! defined $result{"fetch value"} ); - ok(100, $_ eq "original") ; - - ok(101, $h{"fred"} eq "joe"); - ok(102, $result{"store key"} eq "store key - 3: [fred jim fred]"); - ok(103, $result{"store value"} eq "store value - 2: [joe john]"); - ok(104, $result{"fetch key"} eq "fetch key - 1: [fred]"); - ok(105, $result{"fetch value"} eq "fetch value - 1: [joe]"); - ok(106, $_ eq "original") ; + ok(104, $result{"store key"} eq "store key - 2: [fred jim]"); + ok(105, $result{"store value"} eq "store value - 2: [joe john]"); + ok(106, $result{"fetch key"} eq "fetch key - 1: [fred]"); + ok(107, ! defined $result{"fetch value"} ); + ok(108, $_ eq "original") ; + + ok(109, $h{"fred"} eq "joe"); + ok(110, $result{"store key"} eq "store key - 3: [fred jim fred]"); + ok(111, $result{"store value"} eq "store value - 2: [joe john]"); + ok(112, $result{"fetch key"} eq "fetch key - 1: [fred]"); + ok(113, $result{"fetch value"} eq "fetch value - 1: [joe]"); + ok(114, $_ eq "original") ; undef $db ; untie %h; @@ -665,12 +703,12 @@ EOM my (%h, $db) ; unlink $Dfile; - ok(107, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_HASH ) ); + ok(115, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_HASH ) ); $db->filter_store_key (sub { $_ = $h{$_} }) ; eval '$h{1} = 1234' ; - ok(108, $@ =~ /^recursion detected in filter_store_key at/ ); + ok(116, $@ =~ /^recursion detected in filter_store_key at/ ); undef $db ; untie %h; @@ -715,7 +753,7 @@ EOM unlink "fruit" ; } - ok(109, docat_del($file) eq <<'EOM') ; + ok(117, docat_del($file) eq <<'EOM') ; Banana Exists orange -> orange @@ -741,7 +779,7 @@ EOM tie %h, 'DB_File', $Dfile or die "Can't open file: $!\n" ; $h{ABC} = undef; - ok(110, $a eq "") ; + ok(118, $a eq "") ; untie %h ; unlink $Dfile; } @@ -760,7 +798,7 @@ EOM tie %h, 'DB_File', $Dfile or die "Can't open file: $!\n" ; %h = (); ; - ok(111, $a eq "") ; + ok(119, $a eq "") ; untie %h ; unlink $Dfile; } @@ -780,31 +818,164 @@ EOM my $bad_key = 0 ; my %h = () ; my $db ; - ok(112, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_HASH ) ); + ok(120, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_HASH ) ); $db->filter_fetch_key (sub { $_ =~ s/^Beta_/Alpha_/ if defined $_}) ; $db->filter_store_key (sub { $bad_key = 1 if /^Beta_/ ; $_ =~ s/^Alpha_/Beta_/}) ; $h{'Alpha_ABC'} = 2 ; $h{'Alpha_DEF'} = 5 ; - ok(113, $h{'Alpha_ABC'} == 2); - ok(114, $h{'Alpha_DEF'} == 5); + ok(121, $h{'Alpha_ABC'} == 2); + ok(122, $h{'Alpha_DEF'} == 5); my ($k, $v) = ("",""); while (($k, $v) = each %h) {} - ok(115, $bad_key == 0); + ok(123, $bad_key == 0); $bad_key = 0 ; foreach $k (keys %h) {} - ok(116, $bad_key == 0); + ok(124, $bad_key == 0); $bad_key = 0 ; foreach $v (values %h) {} - ok(117, $bad_key == 0); + ok(125, $bad_key == 0); undef $db ; untie %h ; unlink $Dfile; } +{ + # now an error to pass 'hash' a non-code reference + my $dbh = new DB_File::HASHINFO ; + + eval { $dbh->{hash} = 2 }; + ok(126, $@ =~ /^Key 'hash' not associated with a code reference at/); + +} + +{ + # recursion detection in hash + my %hash ; + unlink $Dfile; + my $dbh = new DB_File::HASHINFO ; + $dbh->{hash} = sub { $hash{3} = 4 ; length $_[0] } ; + + + my (%h); + ok(127, tie(%hash, 'DB_File',$Dfile, O_RDWR|O_CREAT, 0640, $dbh ) ); + + eval { $hash{1} = 2; + $hash{4} = 5; + }; + + ok(128, $@ =~ /^DB_File hash callback: recursion detected/); + { + no warnings; + untie %hash; + } + unlink $Dfile; +} + +{ + # Check that two hash's don't interact + my %hash1 ; + my %hash2 ; + my $h1_count = 0; + my $h2_count = 0; + unlink $Dfile, $Dfile2; + my $dbh1 = new DB_File::HASHINFO ; + $dbh1->{hash} = sub { ++ $h1_count ; length $_[0] } ; + + my $dbh2 = new DB_File::HASHINFO ; + $dbh2->{hash} = sub { ++ $h2_count ; length $_[0] } ; + + + + my (%h); + ok(129, tie(%hash1, 'DB_File',$Dfile, O_RDWR|O_CREAT, 0640, $dbh1 ) ); + ok(130, tie(%hash2, 'DB_File',$Dfile2, O_RDWR|O_CREAT, 0640, $dbh2 ) ); + + $hash1{DEFG} = 5; + $hash1{XYZ} = 2; + $hash1{ABCDE} = 5; + + $hash2{defg} = 5; + $hash2{xyz} = 2; + $hash2{abcde} = 5; + + ok(131, $h1_count > 0); + ok(132, $h1_count == $h2_count); + + ok(133, safeUntie \%hash1); + ok(134, safeUntie \%hash2); + unlink $Dfile, $Dfile2; +} + +{ + # Passing undef for flags and/or mode when calling tie could cause + # Use of uninitialized value in subroutine entry + + + my $warn_count = 0 ; + #local $SIG{__WARN__} = sub { ++ $warn_count }; + my %hash1; + unlink $Dfile; + + tie %hash1, 'DB_File',$Dfile, undef; + ok(135, $warn_count == 0); + $warn_count = 0; + tie %hash1, 'DB_File',$Dfile, O_RDWR|O_CREAT, undef; + ok(136, $warn_count == 0); + tie %hash1, 'DB_File',$Dfile, undef, undef; + ok(137, $warn_count == 0); + $warn_count = 0; + + unlink $Dfile; +} + +{ + # Check that DBM Filter can cope with read-only $_ + + use warnings ; + use strict ; + my (%h, $db) ; + unlink $Dfile; + + ok(138, $db = tie(%h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_HASH ) ); + + $db->filter_fetch_key (sub { }) ; + $db->filter_store_key (sub { }) ; + $db->filter_fetch_value (sub { }) ; + $db->filter_store_value (sub { }) ; + + $_ = "original" ; + + $h{"fred"} = "joe" ; + ok(139, $h{"fred"} eq "joe"); + + eval { grep { $h{$_} } (1, 2, 3) }; + ok (140, ! $@); + + + # delete the filters + $db->filter_fetch_key (undef); + $db->filter_store_key (undef); + $db->filter_fetch_value (undef); + $db->filter_store_value (undef); + + $h{"fred"} = "joe" ; + + ok(141, $h{"fred"} eq "joe"); + + ok(142, $db->FIRSTKEY() eq "fred") ; + + eval { grep { $h{$_} } (1, 2, 3) }; + ok (143, ! $@); + + undef $db ; + untie %h; + unlink $Dfile; +} + exit ; diff --git a/db/perl/DB_File/t/db-recno.t b/db/perl/DB_File/t/db-recno.t index 8576b3010..5390b5493 100644 --- a/db/perl/DB_File/t/db-recno.t +++ b/db/perl/DB_File/t/db-recno.t @@ -89,6 +89,15 @@ sub docat_del return $result; } +sub safeUntie +{ + my $hashref = shift ; + my $no_inner = 1; + local $SIG{__WARN__} = sub {-- $no_inner } ; + untie @$hashref; + return $no_inner; +} + sub bad_one { unless ($bad_ones++) { @@ -141,8 +150,8 @@ BEGIN } } -my $splice_tests = 10 + 11 + 1; # ten regressions, 11 warnings, plus the randoms -my $total_tests = 138 ; +my $splice_tests = 10 + 12 + 1; # ten regressions, plus the randoms +my $total_tests = 158 ; $total_tests += $splice_tests if $FA ; print "1..$total_tests\n"; @@ -313,7 +322,7 @@ ok(57, $@ =~ '^Modification of non-creatable array value attempted' ); # IMPORTANT - $X must be undefined before the untie otherwise the # underlying DB close routine will not get called. undef $X ; -untie(@h); +ok(58, safeUntie \@h); unlink $Dfile; @@ -323,14 +332,14 @@ unlink $Dfile; my @h = () ; my $dbh = new DB_File::RECNOINFO ; - ok(58, tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $dbh ) ; + ok(59, tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $dbh ) ; $h[0] = "abc" ; $h[1] = "def" ; $h[3] = "ghi" ; - untie @h ; + ok(60, safeUntie \@h); my $x = docat($Dfile) ; unlink $Dfile; - ok(59, $x eq "abc\ndef\n\nghi\n") ; + ok(61, $x eq "abc\ndef\n\nghi\n") ; } { @@ -339,16 +348,16 @@ unlink $Dfile; my @h = () ; my $dbh = new DB_File::RECNOINFO ; $dbh->{bval} = "-" ; - ok(60, tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $dbh ) ; + ok(62, tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $dbh ) ; $h[0] = "abc" ; $h[1] = "def" ; $h[3] = "ghi" ; - untie @h ; + ok(63, safeUntie \@h); my $x = docat($Dfile) ; unlink $Dfile; my $ok = ($x eq "abc-def--ghi-") ; bad_one() unless $ok ; - ok(61, $ok) ; + ok(64, $ok) ; } { @@ -358,16 +367,16 @@ unlink $Dfile; my $dbh = new DB_File::RECNOINFO ; $dbh->{flags} = R_FIXEDLEN ; $dbh->{reclen} = 5 ; - ok(62, tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $dbh ) ; + ok(65, tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $dbh ) ; $h[0] = "abc" ; $h[1] = "def" ; $h[3] = "ghi" ; - untie @h ; + ok(66, safeUntie \@h); my $x = docat($Dfile) ; unlink $Dfile; my $ok = ($x eq "abc def ghi ") ; bad_one() unless $ok ; - ok(63, $ok) ; + ok(67, $ok) ; } { @@ -378,16 +387,16 @@ unlink $Dfile; $dbh->{flags} = R_FIXEDLEN ; $dbh->{bval} = "-" ; $dbh->{reclen} = 5 ; - ok(64, tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $dbh ) ; + ok(68, tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $dbh ) ; $h[0] = "abc" ; $h[1] = "def" ; $h[3] = "ghi" ; - untie @h ; + ok(69, safeUntie \@h); my $x = docat($Dfile) ; unlink $Dfile; my $ok = ($x eq "abc--def-------ghi--") ; bad_one() unless $ok ; - ok(65, $ok) ; + ok(70, $ok) ; } { @@ -396,7 +405,7 @@ unlink $Dfile; my $filename = "xyz" ; my %x ; eval { tie %x, 'DB_File', $filename, O_RDWR|O_CREAT, 0640, $DB_RECNO ; } ; - ok(66, $@ =~ /^DB_File can only tie an array to a DB_RECNO database/) ; + ok(71, $@ =~ /^DB_File can only tie an array to a DB_RECNO database/) ; unlink $filename ; } @@ -463,7 +472,7 @@ EOM BEGIN { push @INC, '.'; } eval 'use SubDB ; '; - main::ok(67, $@ eq "") ; + main::ok(72, $@ eq "") ; my @h ; my $X ; eval ' @@ -471,27 +480,27 @@ EOM ' ; die "Could not tie: $!" unless $X; - main::ok(68, $@ eq "") ; + main::ok(73, $@ eq "") ; my $ret = eval '$h[3] = 3 ; return $h[3] ' ; - main::ok(69, $@ eq "") ; - main::ok(70, $ret == 5) ; + main::ok(74, $@ eq "") ; + main::ok(75, $ret == 5) ; my $value = 0; $ret = eval '$X->put(1, 4) ; $X->get(1, $value) ; return $value' ; - main::ok(71, $@ eq "") ; - main::ok(72, $ret == 10) ; + main::ok(76, $@ eq "") ; + main::ok(77, $ret == 10) ; $ret = eval ' R_NEXT eq main::R_NEXT ' ; - main::ok(73, $@ eq "" ) ; - main::ok(74, $ret == 1) ; + main::ok(78, $@ eq "" ) ; + main::ok(79, $ret == 1) ; $ret = eval '$X->A_new_method(1) ' ; - main::ok(75, $@ eq "") ; - main::ok(76, $ret eq "[[11]]") ; + main::ok(80, $@ eq "") ; + main::ok(81, $ret eq "[[11]]") ; undef $X; - untie(@h); + main::ok(82, main::safeUntie \@h); unlink "SubDB.pm", "recno.tmp" ; } @@ -501,52 +510,52 @@ EOM # test $# my $self ; unlink $Dfile; - ok(77, $self = tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_RECNO ) ; + ok(83, $self = tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_RECNO ) ; $h[0] = "abc" ; $h[1] = "def" ; $h[2] = "ghi" ; $h[3] = "jkl" ; - ok(78, $FA ? $#h == 3 : $self->length() == 4) ; + ok(84, $FA ? $#h == 3 : $self->length() == 4) ; undef $self ; - untie @h ; + ok(85, safeUntie \@h); my $x = docat($Dfile) ; - ok(79, $x eq "abc\ndef\nghi\njkl\n") ; + ok(86, $x eq "abc\ndef\nghi\njkl\n") ; # $# sets array to same length - ok(80, $self = tie @h, 'DB_File', $Dfile, O_RDWR, 0640, $DB_RECNO ) ; + ok(87, $self = tie @h, 'DB_File', $Dfile, O_RDWR, 0640, $DB_RECNO ) ; if ($FA) { $#h = 3 } else { $self->STORESIZE(4) } - ok(81, $FA ? $#h == 3 : $self->length() == 4) ; + ok(88, $FA ? $#h == 3 : $self->length() == 4) ; undef $self ; - untie @h ; + ok(89, safeUntie \@h); $x = docat($Dfile) ; - ok(82, $x eq "abc\ndef\nghi\njkl\n") ; + ok(90, $x eq "abc\ndef\nghi\njkl\n") ; # $# sets array to bigger - ok(83, $self = tie @h, 'DB_File', $Dfile, O_RDWR, 0640, $DB_RECNO ) ; + ok(91, $self = tie @h, 'DB_File', $Dfile, O_RDWR, 0640, $DB_RECNO ) ; if ($FA) { $#h = 6 } else { $self->STORESIZE(7) } - ok(84, $FA ? $#h == 6 : $self->length() == 7) ; + ok(92, $FA ? $#h == 6 : $self->length() == 7) ; undef $self ; - untie @h ; + ok(93, safeUntie \@h); $x = docat($Dfile) ; - ok(85, $x eq "abc\ndef\nghi\njkl\n\n\n\n") ; + ok(94, $x eq "abc\ndef\nghi\njkl\n\n\n\n") ; # $# sets array smaller - ok(86, $self = tie @h, 'DB_File', $Dfile, O_RDWR, 0640, $DB_RECNO ) ; + ok(95, $self = tie @h, 'DB_File', $Dfile, O_RDWR, 0640, $DB_RECNO ) ; if ($FA) { $#h = 2 } else { $self->STORESIZE(3) } - ok(87, $FA ? $#h == 2 : $self->length() == 3) ; + ok(96, $FA ? $#h == 2 : $self->length() == 3) ; undef $self ; - untie @h ; + ok(97, safeUntie \@h); $x = docat($Dfile) ; - ok(88, $x eq "abc\ndef\nghi\n") ; + ok(98, $x eq "abc\ndef\nghi\n") ; unlink $Dfile; @@ -564,13 +573,25 @@ EOM sub checkOutput { my($fk, $sk, $fv, $sv) = @_ ; + + print "# Fetch Key : expected '$fk' got '$fetch_key'\n" + if $fetch_key ne $fk ; + print "# Fetch Value : expected '$fv' got '$fetch_value'\n" + if $fetch_value ne $fv ; + print "# Store Key : expected '$sk' got '$store_key'\n" + if $store_key ne $sk ; + print "# Store Value : expected '$sv' got '$store_value'\n" + if $store_value ne $sv ; + print "# \$_ : expected 'original' got '$_'\n" + if $_ ne 'original' ; + return - $fetch_key eq $fk && $store_key eq $sk && + $fetch_key eq $fk && $store_key eq $sk && $fetch_value eq $fv && $store_value eq $sv && $_ eq 'original' ; } - ok(89, $db = tie(@h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_RECNO ) ); + ok(99, $db = tie(@h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_RECNO ) ); $db->filter_fetch_key (sub { $fetch_key = $_ }) ; $db->filter_store_key (sub { $store_key = $_ }) ; @@ -581,17 +602,17 @@ EOM $h[0] = "joe" ; # fk sk fv sv - ok(90, checkOutput( "", 0, "", "joe")) ; + ok(100, checkOutput( "", 0, "", "joe")) ; ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; - ok(91, $h[0] eq "joe"); + ok(101, $h[0] eq "joe"); # fk sk fv sv - ok(92, checkOutput( "", 0, "joe", "")) ; + ok(102, checkOutput( "", 0, "joe", "")) ; ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; - ok(93, $db->FIRSTKEY() == 0) ; + ok(103, $db->FIRSTKEY() == 0) ; # fk sk fv sv - ok(94, checkOutput( 0, "", "", "")) ; + ok(104, checkOutput( 0, "", "", "")) ; # replace the filters, but remember the previous set my ($old_fk) = $db->filter_fetch_key @@ -606,17 +627,17 @@ EOM ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; $h[1] = "Joe" ; # fk sk fv sv - ok(95, checkOutput( "", 2, "", "Jxe")) ; + ok(105, checkOutput( "", 2, "", "Jxe")) ; ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; - ok(96, $h[1] eq "[Jxe]"); + ok(106, $h[1] eq "[Jxe]"); # fk sk fv sv - ok(97, checkOutput( "", 2, "[Jxe]", "")) ; + ok(107, checkOutput( "", 2, "[Jxe]", "")) ; ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; - ok(98, $db->FIRSTKEY() == 1) ; + ok(108, $db->FIRSTKEY() == 1) ; # fk sk fv sv - ok(99, checkOutput( 1, "", "", "")) ; + ok(109, checkOutput( 1, "", "", "")) ; # put the original filters back $db->filter_fetch_key ($old_fk); @@ -626,15 +647,15 @@ EOM ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; $h[0] = "joe" ; - ok(100, checkOutput( "", 0, "", "joe")) ; + ok(110, checkOutput( "", 0, "", "joe")) ; ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; - ok(101, $h[0] eq "joe"); - ok(102, checkOutput( "", 0, "joe", "")) ; + ok(111, $h[0] eq "joe"); + ok(112, checkOutput( "", 0, "joe", "")) ; ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; - ok(103, $db->FIRSTKEY() == 0) ; - ok(104, checkOutput( 0, "", "", "")) ; + ok(113, $db->FIRSTKEY() == 0) ; + ok(114, checkOutput( 0, "", "", "")) ; # delete the filters $db->filter_fetch_key (undef); @@ -644,18 +665,18 @@ EOM ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; $h[0] = "joe" ; - ok(105, checkOutput( "", "", "", "")) ; + ok(115, checkOutput( "", "", "", "")) ; ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; - ok(106, $h[0] eq "joe"); - ok(107, checkOutput( "", "", "", "")) ; + ok(116, $h[0] eq "joe"); + ok(117, checkOutput( "", "", "", "")) ; ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ; - ok(108, $db->FIRSTKEY() == 0) ; - ok(109, checkOutput( "", "", "", "")) ; + ok(118, $db->FIRSTKEY() == 0) ; + ok(119, checkOutput( "", "", "", "")) ; undef $db ; - untie @h; + ok(120, safeUntie \@h); unlink $Dfile; } @@ -667,7 +688,7 @@ EOM my (@h, $db) ; unlink $Dfile; - ok(110, $db = tie(@h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_RECNO ) ); + ok(121, $db = tie(@h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_RECNO ) ); my %result = () ; @@ -691,35 +712,35 @@ EOM $_ = "original" ; $h[0] = "joe" ; - ok(111, $result{"store key"} eq "store key - 1: [0]"); - ok(112, $result{"store value"} eq "store value - 1: [joe]"); - ok(113, ! defined $result{"fetch key"} ); - ok(114, ! defined $result{"fetch value"} ); - ok(115, $_ eq "original") ; - - ok(116, $db->FIRSTKEY() == 0 ) ; - ok(117, $result{"store key"} eq "store key - 1: [0]"); - ok(118, $result{"store value"} eq "store value - 1: [joe]"); - ok(119, $result{"fetch key"} eq "fetch key - 1: [0]"); - ok(120, ! defined $result{"fetch value"} ); - ok(121, $_ eq "original") ; - - $h[7] = "john" ; - ok(122, $result{"store key"} eq "store key - 2: [0 7]"); - ok(123, $result{"store value"} eq "store value - 2: [joe john]"); - ok(124, $result{"fetch key"} eq "fetch key - 1: [0]"); + ok(122, $result{"store key"} eq "store key - 1: [0]"); + ok(123, $result{"store value"} eq "store value - 1: [joe]"); + ok(124, ! defined $result{"fetch key"} ); ok(125, ! defined $result{"fetch value"} ); ok(126, $_ eq "original") ; - ok(127, $h[0] eq "joe"); - ok(128, $result{"store key"} eq "store key - 3: [0 7 0]"); - ok(129, $result{"store value"} eq "store value - 2: [joe john]"); + ok(127, $db->FIRSTKEY() == 0 ) ; + ok(128, $result{"store key"} eq "store key - 1: [0]"); + ok(129, $result{"store value"} eq "store value - 1: [joe]"); ok(130, $result{"fetch key"} eq "fetch key - 1: [0]"); - ok(131, $result{"fetch value"} eq "fetch value - 1: [joe]"); + ok(131, ! defined $result{"fetch value"} ); ok(132, $_ eq "original") ; + $h[7] = "john" ; + ok(133, $result{"store key"} eq "store key - 2: [0 7]"); + ok(134, $result{"store value"} eq "store value - 2: [joe john]"); + ok(135, $result{"fetch key"} eq "fetch key - 1: [0]"); + ok(136, ! defined $result{"fetch value"} ); + ok(137, $_ eq "original") ; + + ok(138, $h[0] eq "joe"); + ok(139, $result{"store key"} eq "store key - 3: [0 7 0]"); + ok(140, $result{"store value"} eq "store value - 2: [joe john]"); + ok(141, $result{"fetch key"} eq "fetch key - 1: [0]"); + ok(142, $result{"fetch value"} eq "fetch value - 1: [joe]"); + ok(143, $_ eq "original") ; + undef $db ; - untie @h; + ok(144, safeUntie \@h); unlink $Dfile; } @@ -730,15 +751,15 @@ EOM my (@h, $db) ; unlink $Dfile; - ok(133, $db = tie(@h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_RECNO ) ); + ok(145, $db = tie(@h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_RECNO ) ); $db->filter_store_key (sub { $_ = $h[0] }) ; eval '$h[1] = 1234' ; - ok(134, $@ =~ /^recursion detected in filter_store_key at/ ); + ok(146, $@ =~ /^recursion detected in filter_store_key at/ ); undef $db ; - untie @h; + ok(147, safeUntie \@h); unlink $Dfile; } @@ -793,7 +814,7 @@ EOM unlink $filename ; } - ok(135, docat_del($file) eq <<'EOM') ; + ok(148, docat_del($file) eq <<'EOM') ; The array contains 5 entries popped black shifted white @@ -878,7 +899,7 @@ EOM unlink $file ; } - ok(136, docat_del($save_output) eq <<'EOM') ; + ok(149, docat_del($save_output) eq <<'EOM') ; ORIGINAL 0: zero @@ -926,8 +947,8 @@ EOM tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0664, $DB_RECNO or die "Can't open file: $!\n" ; $h[0] = undef; - ok(137, $a eq "") ; - untie @h ; + ok(150, $a eq "") ; + ok(151, safeUntie \@h); unlink $Dfile; } @@ -946,11 +967,53 @@ EOM tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0664, $DB_RECNO or die "Can't open file: $!\n" ; @h = (); ; - ok(138, $a eq "") ; - untie @h ; + ok(152, $a eq "") ; + ok(153, safeUntie \@h); unlink $Dfile; } +{ + # Check that DBM Filter can cope with read-only $_ + + use warnings ; + use strict ; + my (@h, $db) ; + unlink $Dfile; + + ok(154, $db = tie(@h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_RECNO ) ); + + $db->filter_fetch_key (sub { }) ; + $db->filter_store_key (sub { }) ; + $db->filter_fetch_value (sub { }) ; + $db->filter_store_value (sub { }) ; + + $_ = "original" ; + + $h[0] = "joe" ; + ok(155, $h[0] eq "joe"); + + eval { grep { $h[$_] } (1, 2, 3) }; + ok (156, ! $@); + + + # delete the filters + $db->filter_fetch_key (undef); + $db->filter_store_key (undef); + $db->filter_fetch_value (undef); + $db->filter_store_value (undef); + + $h[1] = "joe" ; + + ok(157, $h[1] eq "joe"); + + eval { grep { $h[$_] } (1, 2, 3) }; + ok (158, ! $@); + + undef $db ; + untie @h; + unlink $Dfile; +} + # Only test splice if this is a newish version of Perl exit unless $FA ; @@ -978,36 +1041,36 @@ exit unless $FA ; my $offset ; $a = ''; splice(@a, $offset); - ok(139, $a =~ /^Use of uninitialized value /); + ok(159, $a =~ /^Use of uninitialized value /); $a = ''; splice(@tied, $offset); - ok(140, $a =~ /^Use of uninitialized value in splice/); + ok(160, $a =~ /^Use of uninitialized value in splice/); no warnings 'uninitialized'; $a = ''; splice(@a, $offset); - ok(141, $a eq ''); + ok(161, $a eq ''); $a = ''; splice(@tied, $offset); - ok(142, $a eq ''); + ok(162, $a eq ''); # uninitialized length use warnings; my $length ; $a = ''; splice(@a, 0, $length); - ok(143, $a =~ /^Use of uninitialized value /); + ok(163, $a =~ /^Use of uninitialized value /); $a = ''; splice(@tied, 0, $length); - ok(144, $a =~ /^Use of uninitialized value in splice/); + ok(164, $a =~ /^Use of uninitialized value in splice/); no warnings 'uninitialized'; $a = ''; splice(@a, 0, $length); - ok(145, $a eq ''); + ok(165, $a eq ''); $a = ''; splice(@tied, 0, $length); - ok(146, $a eq ''); + ok(166, $a eq ''); # offset past end of array use warnings; @@ -1016,17 +1079,17 @@ exit unless $FA ; my $splice_end_array = ($a =~ /^splice\(\) offset past end of array/); $a = ''; splice(@tied, 3); - ok(147, !$splice_end_array || $a =~ /^splice\(\) offset past end of array/); + ok(167, !$splice_end_array || $a =~ /^splice\(\) offset past end of array/); no warnings 'misc'; $a = ''; splice(@a, 3); - ok(148, $a eq ''); + ok(168, $a eq ''); $a = ''; splice(@tied, 3); - ok(149, $a eq ''); + ok(169, $a eq ''); - untie @tied; + ok(170, safeUntie \@tied); unlink $Dfile; } @@ -1087,7 +1150,7 @@ my @tests = ([ [ 'falsely', 'dinosaur', 'remedy', 'commotion', 'void' ], ); -my $testnum = 150; +my $testnum = 171; my $failed = 0; require POSIX; my $tmp = POSIX::tmpnam(); foreach my $test (@tests) { @@ -1124,7 +1187,8 @@ else { ok($testnum++, not $failed); } -die if $testnum != $total_tests + 1; +die "testnum ($testnum) != total_tests ($total_tests) + 1" + if $testnum != $total_tests + 1; exit ; @@ -1360,3 +1424,5 @@ sub rand_word { } return $r; } + + diff --git a/db/perl/DB_File/typemap b/db/perl/DB_File/typemap index 55439ee76..8ad7b1282 100644 --- a/db/perl/DB_File/typemap +++ b/db/perl/DB_File/typemap @@ -15,19 +15,21 @@ DBTKEY T_dbtkeydatum INPUT T_dbtkeydatum - ckFilter($arg, filter_store_key, \"filter_store_key\"); + DBM_ckFilter($arg, filter_store_key, \"filter_store_key\"); DBT_clear($var) ; - if (db->type != DB_RECNO) { - $var.data = SvPV($arg, PL_na); - $var.size = (int)PL_na; - } - else { - Value = GetRecnoKey(aTHX_ db, SvIV($arg)) ; - $var.data = & Value; - $var.size = (int)sizeof(recno_t); + if (SvOK($arg)){ + if (db->type != DB_RECNO) { + $var.data = SvPV($arg, PL_na); + $var.size = (int)PL_na; + } + else { + Value = GetRecnoKey(aTHX_ db, SvIV($arg)) ; + $var.data = & Value; + $var.size = (int)sizeof(recno_t); + } } T_dbtdatum - ckFilter($arg, filter_store_value, \"filter_store_value\"); + DBM_ckFilter($arg, filter_store_value, \"filter_store_value\"); DBT_clear($var) ; if (SvOK($arg)) { $var.data = SvPV($arg, PL_na); diff --git a/db/rep/rep_method.c b/db/rep/rep_method.c index f605ccde2..f7a205fe6 100644 --- a/db/rep/rep_method.c +++ b/db/rep/rep_method.c @@ -7,7 +7,7 @@ #include "db_config.h" #ifndef lint -static const char revid[] = "Id: rep_method.c,v 1.69 2002/08/06 04:50:36 bostic Exp "; +static const char revid[] = "Id: rep_method.c,v 1.78 2002/09/10 12:58:07 bostic Exp "; #endif /* not lint */ #ifndef NO_SYSTEM_INCLUDES @@ -154,13 +154,19 @@ __rep_start(dbenv, dbt, flags) "DB_ENV->set_rep_transport must be called before DB_ENV->rep_start"); return (EINVAL); } + + /* We'd better not have any logged files open if we are a client. */ + if (LF_ISSET(DB_REP_CLIENT) && (ret = __dbreg_nofiles(dbenv)) != 0) { + __db_err(dbenv, "DB_ENV->rep_start called with open files"); + return (ret); + } MUTEX_LOCK(dbenv, db_rep->mutexp); if (rep->eid == DB_EID_INVALID) rep->eid = dbenv->rep_eid; if (LF_ISSET(DB_REP_MASTER)) { - if (F_ISSET(dbenv, DB_ENV_REP_CLIENT)) + if (F_ISSET(dbenv, DB_ENV_REP_CLIENT)) { /* * If we're upgrading from having been a client, * preclose, so that we close our temporary database. @@ -176,7 +182,16 @@ __rep_start(dbenv, dbt, flags) if ((ret = __rep_preclose(dbenv, 0)) != 0) return (ret); - F_CLR(dbenv, DB_ENV_REP_CLIENT); + /* + * Now write a __txn_recycle record so that + * clients don't get confused with our txnids + * and txnids of previous masters. + */ + F_CLR(dbenv, DB_ENV_REP_CLIENT); + if ((ret = __txn_reset(dbenv)) != 0) + return (ret); + } + redo_prepared = 0; if (!F_ISSET(rep, REP_F_MASTER)) { /* Master is not yet set. */ @@ -276,13 +291,13 @@ __rep_client_dbinit(dbenv, startup) int startup; { DB_REP *db_rep; - DB *rep_db; + DB *dbp; int ret, t_ret; u_int32_t flags; PANIC_CHECK(dbenv); db_rep = dbenv->rep_handle; - rep_db = NULL; + dbp = NULL; #define REPDBNAME "__db.rep.db" @@ -293,34 +308,34 @@ __rep_client_dbinit(dbenv, startup) MUTEX_LOCK(dbenv, db_rep->db_mutexp); if (startup) { - if ((ret = db_create(&rep_db, dbenv, 0)) != 0) + if ((ret = db_create(&dbp, dbenv, 0)) != 0) goto err; /* * Ignore errors, because if the file doesn't exist, this * is perfectly OK. */ - (void)rep_db->remove(rep_db, REPDBNAME, NULL, 0); + (void)dbp->remove(dbp, REPDBNAME, NULL, 0); } - if ((ret = db_create(&rep_db, dbenv, 0)) != 0) + if ((ret = db_create(&dbp, dbenv, 0)) != 0) goto err; - if ((ret = rep_db->set_bt_compare(rep_db, __rep_bt_cmp)) != 0) + if ((ret = dbp->set_bt_compare(dbp, __rep_bt_cmp)) != 0) goto err; /* Allow writes to this database on a client. */ - F_SET(rep_db, DB_AM_CL_WRITER); + F_SET(dbp, DB_AM_CL_WRITER); flags = (F_ISSET(dbenv, DB_ENV_THREAD) ? DB_THREAD : 0) | (startup ? DB_CREATE : 0); - if ((ret = rep_db->open(rep_db, NULL, + if ((ret = dbp->open(dbp, NULL, "__db.rep.db", NULL, DB_BTREE, flags, 0)) != 0) goto err; - db_rep->rep_db = rep_db; + db_rep->rep_db = dbp; if (0) { -err: if (rep_db != NULL && - (t_ret = rep_db->close(rep_db, DB_NOSYNC)) != 0 && ret == 0) +err: if (dbp != NULL && + (t_ret = dbp->close(dbp, DB_NOSYNC)) != 0 && ret == 0) ret = t_ret; db_rep->rep_db = NULL; } @@ -465,23 +480,24 @@ __rep_restore_prepared(dbenv) if ((ret = __txn_getckp(dbenv, &lsn)) == 0) { if ((ret = logc->get(logc, &lsn, &rec, DB_SET)) != 0) { __db_err(dbenv, - "Checkpoint record at LSN [%ld][%ld] not found", + "Checkpoint record at LSN [%lu][%lu] not found", (u_long)lsn.file, (u_long)lsn.offset); goto err; } if ((ret = __txn_ckp_read(dbenv, rec.data, &ckp_args)) != 0) { __db_err(dbenv, - "Invalid checkpoint record at [%ld][%ld]", + "Invalid checkpoint record at [%lu][%lu]", (u_long)lsn.file, (u_long)lsn.offset); goto err; } ckp_lsn = ckp_args->ckp_lsn; + __os_free(dbenv, ckp_args); if ((ret = logc->get(logc, &ckp_lsn, &rec, DB_SET)) != 0) { __db_err(dbenv, - "Checkpoint LSN record [%ld][%ld] not found", + "Checkpoint LSN record [%lu][%lu] not found", (u_long)ckp_lsn.file, (u_long)ckp_lsn.offset); goto err; } @@ -575,6 +591,7 @@ __rep_restore_prepared(dbenv) ret = __db_txnlist_add(dbenv, txninfo, regop_args->txnid->txnid, regop_args->opcode, &lsn); + __os_free(dbenv, regop_args); break; case DB___txn_xa_regop: /* @@ -591,6 +608,7 @@ __rep_restore_prepared(dbenv) if ((ret = __rep_process_txn(dbenv, &rec)) == 0) ret = __txn_restore_txn(dbenv, &lsn, prep_args); + __os_free(dbenv, prep_args); break; default: continue; @@ -606,12 +624,6 @@ err: t_ret = logc->close(logc, 0); if (txninfo != NULL) __db_txnlist_end(dbenv, txninfo); - if (ckp_args != NULL) - __os_free(dbenv, ckp_args); - if (prep_args != NULL) - __os_free(dbenv, prep_args); - if (regop_args != NULL) - __os_free(dbenv, regop_args); return (ret == 0 ? t_ret : ret); } @@ -774,7 +786,7 @@ __rep_elect(dbenv, nsites, priority, timeout, eidp) __os_id(&pid); if ((ret = __os_clock(dbenv, &sec, &usec)) != 0) return (ret); - tiebreaker = (int)pid ^ (int)sec ^ (int)usec ^ rand() ^ (int)&pid; + tiebreaker = pid ^ sec ^ usec ^ (u_int)rand() ^ P_TO_UINT32(&pid); if ((ret = __rep_elect_init(dbenv, &lsn, nsites, priority, tiebreaker, &in_progress)) != 0) { @@ -913,8 +925,12 @@ __rep_elect_init(dbenv, lsnp, nsites, priority, tiebreaker, beginp) MUTEX_LOCK(dbenv, db_rep->mutexp); *beginp = IN_ELECTION(rep); if (!*beginp) { - F_SET(rep, REP_F_EPHASE1); - rep->master_id = DB_EID_INVALID; + /* + * Make sure that we always initialize all the election fields + * before putting ourselves in an election state. That means + * issuing calls that can fail (allocation) before setting all + * the variables. + */ if (nsites > rep->asites && (ret = __rep_grow_sites(dbenv, nsites)) != 0) goto err; @@ -922,6 +938,8 @@ __rep_elect_init(dbenv, lsnp, nsites, priority, tiebreaker, beginp) rep->nsites = nsites; rep->priority = priority; rep->votes = 0; + rep->master_id = DB_EID_INVALID; + F_SET(rep, REP_F_EPHASE1); /* We have always heard from ourselves. */ rep->sites = 1; diff --git a/db/rep/rep_record.c b/db/rep/rep_record.c index f2b6b7ed8..436dca130 100644 --- a/db/rep/rep_record.c +++ b/db/rep/rep_record.c @@ -8,7 +8,7 @@ #include "db_config.h" #ifndef lint -static const char revid[] = "Id: rep_record.c,v 1.108 2002/08/09 02:17:41 margo Exp "; +static const char revid[] = "Id: rep_record.c,v 1.111 2002/09/11 19:39:11 bostic Exp "; #endif /* not lint */ #ifndef NO_SYSTEM_INCLUDES @@ -89,7 +89,7 @@ __rep_process_message(dbenv, control, rec, eidp) rp = (REP_CONTROL *)control->data; #if 0 - __rep_print_message(rep->eid, rp, "rep_process_message"); + __rep_print_message(dbenv, *eidp, rp, "rep_process_message"); #endif /* Complain if we see an improper version number. */ @@ -285,6 +285,9 @@ send: ret = __rep_send_message(dbenv, *eidp, R_LOCK(dbenv, &dblp->reginfo); lsn = lp->lsn; R_UNLOCK(dbenv, &dblp->reginfo); + MUTEX_LOCK(dbenv, db_rep->mutexp); + rep->gen++; + MUTEX_UNLOCK(dbenv, db_rep->mutexp); return (__rep_send_message(dbenv, *eidp, REP_NEWMASTER, &lsn, NULL, 0)); } @@ -606,9 +609,10 @@ rep_verify_err: if ((t_ret = logc->close(logc, 0)) != 0 && ret == 0) #ifdef DIAGNOSTIC if (FLD_ISSET(dbenv->verbose, DB_VERB_REPLICATION)) { __db_err(dbenv, - "Existing vote: (eid)%d (pri)%d (gen)%d [%d,%d]", + "%s(eid)%d (pri)%d (gen)%d (sites)%d [%d,%d]", + "Existing vote: ", rep->winner, rep->w_priority, rep->w_gen, - rep->w_lsn.file, rep->w_lsn.offset); + rep->sites, rep->w_lsn.file, rep->w_lsn.offset); __db_err(dbenv, "Incoming vote: (eid)%d (pri)%d (gen)%d [%d,%d]", *eidp, vi->priority, rp->gen, rp->lsn.file, @@ -679,7 +683,7 @@ rep_verify_err: if ((t_ret = logc->close(logc, 0)) != 0 && ret == 0) /* If we have priority 0, we should never get a vote. */ DB_ASSERT(rep->priority != 0); - if (!IN_ELECTION(rep) && rep->master_id != DB_EID_INVALID) { + if (!IN_ELECTION(rep)) { #ifdef DIAGNOSTIC if (FLD_ISSET(dbenv->verbose, DB_VERB_REPLICATION)) __db_err(dbenv, "Not in election, got vote"); @@ -761,13 +765,13 @@ __rep_apply(dbenv, rp, rec) REP *rep; REP_CONTROL lsn_rc; u_int32_t rectype, txnid; - int cmp, do_req, eid, have_mutex, newfile, ret, t_ret; + int cmp, do_req, eid, have_mutex, ret, t_ret; db_rep = dbenv->rep_handle; rep = db_rep->region; dbp = db_rep->rep_db; dbc = NULL; - have_mutex = newfile = ret = 0; + have_mutex = ret = 0; memset(&control_dbt, 0, sizeof(control_dbt)); memset(&rec_dbt, 0, sizeof(rec_dbt)); diff --git a/db/rep/rep_util.c b/db/rep/rep_util.c index e561f58d2..880b13c09 100644 --- a/db/rep/rep_util.c +++ b/db/rep/rep_util.c @@ -8,7 +8,7 @@ #include "db_config.h" #ifndef lint -static const char revid[] = "Id: rep_util.c,v 1.50 2002/08/06 04:50:36 bostic Exp "; +static const char revid[] = "Id: rep_util.c,v 1.51 2002/09/05 02:30:00 margo Exp "; #endif /* not lint */ #ifndef NO_SYSTEM_INCLUDES @@ -121,7 +121,7 @@ __rep_send_message(dbenv, eid, rtype, lsnp, dbtp, flags) send_flags = (LF_ISSET(DB_PERMANENT) ? DB_REP_PERMANENT : 0); #if 0 - __rep_print_message(eid, &cntrl, "rep_send_message"); + __rep_print_message(dbenv, eid, &cntrl, "rep_send_message"); #endif #ifdef REP_DIAGNOSTIC if (rtype == REP_LOG) @@ -776,10 +776,11 @@ err: if (LOCK_ISSET(lk) && (t_ret = __LPUT(dbc, lk)) != 0 && ret == 0) #if 0 /* - * PUBLIC: void __rep_print_message __P((int, REP_CONTROL *, char *)); + * PUBLIC: void __rep_print_message __P((DB_ENV *, int, REP_CONTROL *, char *)); */ void -__rep_print_message(eid, rp, str) +__rep_print_message(dbenv, eid, rp, str) + DB_ENV *dbenv; int eid; REP_CONTROL *rp; char *str; @@ -859,7 +860,8 @@ __rep_print_message(eid, rp, str) type = "NOTYPE"; break; } - printf("%s: eid %d, type %s, LSN [%u][%u]\n", str, eid, - type, rp->lsn.file, rp->lsn.offset); + printf("%s %s: gen = %d eid %d, type %s, LSN [%u][%u]\n", + dbenv->db_home, str, rp->gen, eid, type, rp->lsn.file, + rp->lsn.offset); } #endif diff --git a/db/test/parallel.tcl b/db/test/parallel.tcl index 9080b2b0d..919dcaae9 100644 --- a/db/test/parallel.tcl +++ b/db/test/parallel.tcl @@ -1,5 +1,5 @@ # Code to load up the tests in to the Queue database -# Id: parallel.tcl,v 11.23 2002/08/08 19:25:39 sue Exp +# Id: parallel.tcl,v 11.28 2002/09/05 17:23:06 sandstro Exp proc load_queue { file {dbdir RUNQUEUE} nitems } { puts -nonewline "Loading run queue with $nitems items..." @@ -78,7 +78,7 @@ proc run_parallel { nprocs {list run_all} {nitems ALL} } { set basedir [pwd] set pidlist {} - set queuedir ../../[string range $basedir \ + set queuedir ../../[string range $basedir \ [string last "/" $basedir] end]/$queuedir for { set i 1 } { $i <= $nprocs } { incr i } { @@ -87,11 +87,12 @@ proc run_parallel { nprocs {list run_all} {nitems ALL} } { set p [exec $tclsh_path << \ "source $test_path/test.tcl;\ run_queue $i $basename.$i $queuedir $nitems" &] + lappend pidlist $p set f [open $testdir/begin.$p w] close $f } res] } - watch_procs 300 360000 + watch_procs $pidlist 300 360000 set failed 0 for { set i 1 } { $i <= $nprocs } { incr i } { @@ -155,6 +156,9 @@ proc run_queue { i rundir queuedir nitems } { close $o } env_cleanup $testdir + set o [open $builddir/ALL.OUT.$i a] + puts $o "\nEnding record $num ([timestamp])\n" + close $o incr count } else { incr waitcnt @@ -168,6 +172,15 @@ proc run_queue { i rundir queuedir nitems } { $db close $dbenv close + # + # We need to put the pid file in the builddir's idea + # of testdir, not this child process' local testdir. + # Therefore source builddir's include.tcl to get its + # testdir. + # !!! This resets testdir, so don't do anything else + # local to the child after this. + source $builddir/include.tcl + set f [open $builddir/$testdir/end.[pid] w] close $f } @@ -208,8 +221,8 @@ proc mkparalleldirs { nprocs basename queuedir } { regsub {test_path } $d {test_path ../} d regsub {src_root } $d {src_root ../} d - set tdir "testdir ./TESTDIR.$i" - regsub {testdir \./TESTDIR} $d $tdir d + set tdir "TESTDIR.$i" + regsub -all {TESTDIR} $d $tdir d regsub {KILL \.} $d {KILL ..} d set outfile [open $destdir/include.tcl w] puts $outfile $d @@ -223,3 +236,60 @@ proc mkparalleldirs { nprocs basename queuedir } { } } } + +proc run_ptest { nprocs test args } { + global parms + set basename ./PARALLEL_TESTDIR + set queuedir NULL + source ./include.tcl + + mkparalleldirs $nprocs $basename $queuedir + + if { [info exists parms($test)] } { + foreach method \ + "hash queue queueext recno rbtree frecno rrecno btree" { + if { [eval exec_ptest $nprocs $basename \ + $test $method $args] != 0 } { + break + } + } + } else { + eval exec_ptest $nprocs $basename $test $args + } +} + +proc exec_ptest { nprocs basename test args } { + source ./include.tcl + + set basedir [pwd] + set pidlist {} + puts "Running $nprocs parallel runs of $test" + for { set i 1 } { $i <= $nprocs } { incr i } { + set outf ALL.OUT.$i + fileremove -f $outf + set ret [catch { + set p [exec $tclsh_path << \ + "cd $basename.$i;\ + source ../$test_path/test.tcl;\ + $test $args" >& $outf &] + lappend pidlist $p + set f [open $testdir/begin.$p w] + close $f + } res] + } + watch_procs $pidlist 30 36000 + set failed 0 + for { set i 1 } { $i <= $nprocs } { incr i } { + if { [check_failed_run ALL.OUT.$i] != 0 } { + set failed 1 + puts "Test $test failed in process $i." + } + } + if { $failed == 0 } { + puts "Test $test succeeded all processes" + return 0 + } else { + puts "Test failed: stopping" + return 1 + } +} diff --git a/db/test/recd016.tcl b/db/test/recd016.tcl index 1b50f2169..e76cba059 100644 --- a/db/test/recd016.tcl +++ b/db/test/recd016.tcl @@ -3,7 +3,7 @@ # Copyright (c) 1999-2002 # Sleepycat Software. All rights reserved. # -# Id: recd016.tcl,v 11.6 2002/05/24 16:14:15 sue Exp +# Id: recd016.tcl,v 11.8 2002/09/05 17:23:07 sandstro Exp # # TEST recd016 # TEST This is a recovery test for testing running recovery while @@ -16,6 +16,8 @@ proc recd016 { method args } { set omethod [convert_method $method] puts "Recd016: $method ($args) simultaneous recovery test" + puts "Recd016: Skipping; waiting on SR #6277" + return # Create the database and environment. set testfile recd016.db @@ -115,7 +117,7 @@ proc recd016 { method args } { set p [exec $util_path/db_recover -h $testdir -c &] lappend pidlist $p } - watch_procs 5 + watch_procs $pidlist 5 # # Now that they are all done run recovery correctly puts "\tRecd016.d: Run recovery process" diff --git a/db/test/rep001.tcl b/db/test/rep001.tcl index b89cef418..ea552d118 100644 --- a/db/test/rep001.tcl +++ b/db/test/rep001.tcl @@ -3,7 +3,7 @@ # Copyright (c) 2001-2002 # Sleepycat Software. All rights reserved. # -# Id: rep001.tcl,v 1.14 2002/08/08 18:13:12 sue Exp +# Id: rep001.tcl,v 1.16 2002/08/26 17:52:19 margo Exp # # TEST rep001 # TEST Replication rename and forced-upgrade test. diff --git a/db/test/scr010/spell.ok b/db/test/scr010/spell.ok index 2211d46b8..18af8d130 100644 --- a/db/test/scr010/spell.ok +++ b/db/test/scr010/spell.ok @@ -35,6 +35,7 @@ ClassNotFoundException Config DBC DBENV +DBP DBS DBSDIR DBT @@ -175,6 +176,7 @@ OutputStream PGNO PID PREV +Pgno RECNO RECNOSYNC RECNUM @@ -211,6 +213,7 @@ TestLogc TpcbExample Tt Txn +Txnid Txns UID UNAVAIL diff --git a/db/test/scr013/chk.stats b/db/test/scr013/chk.stats index db87ec3c5..2f752e1c2 100644 --- a/db/test/scr013/chk.stats +++ b/db/test/scr013/chk.stats @@ -1,6 +1,6 @@ #!/bin/sh - # -# Id: chk.stats,v 1.5 2002/03/27 04:33:04 bostic Exp +# Id: chk.stats,v 1.6 2002/08/19 18:35:18 bostic Exp # # Check to make sure all of the stat structure members are included in # all of the possible formats. @@ -58,19 +58,19 @@ inc() } inc "__db_bt_stat" \ - "tcl/tcl_db.c db_stat/db_stat.c docs_src/api_c/db_stat.so" + "tcl/tcl_db.c db_stat/db_stat.c docs_src/db/db_stat.so" inc "__db_h_stat" \ - "tcl/tcl_db.c db_stat/db_stat.c docs_src/api_c/db_stat.so" + "tcl/tcl_db.c db_stat/db_stat.c docs_src/db/db_stat.so" inc "__db_qam_stat" \ - "tcl/tcl_db.c db_stat/db_stat.c docs_src/api_c/db_stat.so" + "tcl/tcl_db.c db_stat/db_stat.c docs_src/db/db_stat.so" inc __db_lock_stat \ - "tcl/tcl_lock.c db_stat/db_stat.c docs_src/api_c/lock_stat.so" + "tcl/tcl_lock.c db_stat/db_stat.c docs_src/lock/lock_stat.so" inc __db_log_stat \ - "tcl/tcl_log.c db_stat/db_stat.c docs_src/api_c/log_stat.so" + "tcl/tcl_log.c db_stat/db_stat.c docs_src/log/log_stat.so" inc __db_mpool_stat \ - "tcl/tcl_mp.c db_stat/db_stat.c docs_src/api_c/memp_stat.so" + "tcl/tcl_mp.c db_stat/db_stat.c docs_src/memp/memp_stat.so" inc __db_txn_stat \ - "tcl/tcl_txn.c db_stat/db_stat.c docs_src/api_c/txn_stat.so" + "tcl/tcl_txn.c db_stat/db_stat.c docs_src/txn/txn_stat.so" # Check to make sure the elements from a man page appears in db.in. man() @@ -90,25 +90,25 @@ man() } sed -e '/m4_stat(/!d' \ - -e 's/.*m4_stat(\([^)]*\)).*/\1/' < $d/docs_src/api_c/db_stat.so > $t + -e 's/.*m4_stat(\([^)]*\)).*/\1/' < $d/docs_src/db/db_stat.so > $t man "checking db_stat.so against db.h" sed -e '/m4_stat(/!d' \ -e 's/.*m4_stat(\([^)]*\)).*/\1/' \ - -e 's/.* //' < $d/docs_src/api_c/lock_stat.so > $t + -e 's/.* //' < $d/docs_src/lock/lock_stat.so > $t man "checking lock_stat.so against db.h" sed -e '/m4_stat[12](/!d' \ - -e 's/.*m4_stat[12](\([^)]*\)).*/\1/' < $d/docs_src/api_c/log_stat.so > $t + -e 's/.*m4_stat[12](\([^)]*\)).*/\1/' < $d/docs_src/log/log_stat.so > $t man "checking log_stat.so against db.h" sed -e '/m4_stat[123](/!d' \ - -e 's/.*m4_stat[123](\([^)]*\)).*/\1/' < $d/docs_src/api_c/memp_stat.so > $t + -e 's/.*m4_stat[123](\([^)]*\)).*/\1/' < $d/docs_src/memp/memp_stat.so > $t man "checking memp_stat.so against db.h" sed -e '/m4_stat(/!d' \ -e 's/.*m4_stat(.*, \([^)]*\)).*/\1/' \ - -e 's/__[LR]B__//g' < $d/docs_src/api_c/txn_stat.so > $t + -e 's/__[LR]B__//g' < $d/docs_src/txn/txn_stat.so > $t man "checking txn_stat.so against db.h" exit $exitv diff --git a/db/test/scr016/CallbackTest.testout b/db/test/scr016/CallbackTest.testout index 23cd113a7..68797d4a2 100644 --- a/db/test/scr016/CallbackTest.testout +++ b/db/test/scr016/CallbackTest.testout @@ -35,6 +35,10 @@ compare function called key8, key6 put 1 compare function called + key1, key9 +compare function called + key1, key0 +compare function called key1, key5 compare function called key1, key2 diff --git a/db/test/scr016/TestAppendRecno.java b/db/test/scr016/TestAppendRecno.java index 56cfe6465..6caf576f9 100644 --- a/db/test/scr016/TestAppendRecno.java +++ b/db/test/scr016/TestAppendRecno.java @@ -4,7 +4,7 @@ * Copyright (c) 1997-2002 * Sleepycat Software. All rights reserved. * - * Id: TestAppendRecno.java,v 1.3 2002/01/11 15:54:01 bostic Exp + * Id: TestAppendRecno.java,v 1.4 2002/08/16 19:35:53 dda Exp */ package com.sleepycat.test; @@ -64,10 +64,9 @@ public class TestAppendRecno table = new Db(null, 0); table.set_error_stream(System.err); table.set_errpfx("TestAppendRecno"); - //table.open(FileName, null, Db.DB_BTREE, Db.DB_CREATE, 0644); table.set_append_recno(this); - table.open(FileName, null, Db.DB_RECNO, Db.DB_CREATE, 0644); + table.open(null, FileName, null, Db.DB_RECNO, Db.DB_CREATE, 0644); for (int i=0; i<10; i++) { System.out.println("\n*** Iteration " + i ); try { diff --git a/db/test/scr016/TestAssociate.java b/db/test/scr016/TestAssociate.java index 83b5438d9..9c2ec891b 100644 --- a/db/test/scr016/TestAssociate.java +++ b/db/test/scr016/TestAssociate.java @@ -4,7 +4,7 @@ * Copyright (c) 1997-2002 * Sleepycat Software. All rights reserved. * - * Id: TestAssociate.java,v 1.3 2002/01/11 15:54:01 bostic Exp + * Id: TestAssociate.java,v 1.4 2002/08/16 19:35:54 dda Exp */ package com.sleepycat.test; @@ -122,9 +122,8 @@ public class TestAssociate (new java.io.File(FileName)).delete(); Db table = new Db(dbenv, 0); Db table2 = new Db(dbenv, 0); - table.set_dup_compare(this); table2.set_dup_compare(this); - table2.set_flags(Db.DB_DUP | Db.DB_DUPSORT); + table2.set_flags(Db.DB_DUPSORT); table.set_error_stream(System.err); table2.set_error_stream(System.err); table.set_errpfx("TestAssociate"); @@ -133,9 +132,10 @@ public class TestAssociate System.out.println("Secondary database is " + shownull(table2)); saveddb1 = table; saveddb2 = table2; - table.open(FileName, null, Db.DB_BTREE, Db.DB_CREATE, 0644); - table2.open(FileName + "2", null, Db.DB_BTREE, Db.DB_CREATE, 0644); - table.associate(table2, new Capitalize(), 0); + table.open(null, FileName, null, Db.DB_BTREE, Db.DB_CREATE, 0644); + table2.open(null, FileName + "2", null, + Db.DB_BTREE, Db.DB_CREATE, 0644); + table.associate(null, table2, new Capitalize(), 0); // // Insert records into the database, where the key is the user diff --git a/db/test/scr016/TestConstruct02.java b/db/test/scr016/TestConstruct02.java index 91c47a3ca..fa4b28aef 100644 --- a/db/test/scr016/TestConstruct02.java +++ b/db/test/scr016/TestConstruct02.java @@ -4,7 +4,7 @@ * Copyright (c) 2000-2002 * Sleepycat Software. All rights reserved. * - * Id: TestConstruct02.java,v 1.5 2002/01/23 14:29:51 bostic Exp + * Id: TestConstruct02.java,v 1.6 2002/08/16 19:35:54 dda Exp */ /* @@ -95,6 +95,8 @@ public class TestConstruct02 void rundb(Db db, int count) throws DbException, FileNotFoundException { + if (count >= 64) + throw new IllegalArgumentException("rundb count arg >= 64"); // The bit map of keys we've seen long bitmap = 0; @@ -106,20 +108,12 @@ public class TestConstruct02 int i; for (i=0; i<count; i++) { outbuf[i] = (byte)('0' + i); - //outbuf[i] = System.out.println((byte)('0' + i); } outbuf[i++] = (byte)'x'; - /* - System.out.println("byte: " + ('0' + 0) + ", after: " + - (int)'0' + "=" + (int)('0' + 0) + - "," + (byte)outbuf[0]); - */ - Dbt key = new Dbt(outbuf, 0, i); Dbt data = new Dbt(outbuf, 0, i); - //DEBUGOUT("Put: " + (char)outbuf[0] + ": " + new String(outbuf)); db.put(null, key, data, Db.DB_NOOVERWRITE); // Acquire a cursor for the table. @@ -133,23 +127,31 @@ public class TestConstruct02 readkey.set_flags(Db.DB_DBT_MALLOC); readdata.set_flags(Db.DB_DBT_MALLOC); - //DEBUGOUT("Dbc.get"); while (dbcp.get(readkey, readdata, Db.DB_NEXT) == 0) { - String key_string = new String(readkey.get_data()); - String data_string = new String(readdata.get_data()); + byte[] key_bytes = readkey.get_data(); + byte[] data_bytes = readdata.get_data(); - //DEBUGOUT("Got: " + key_string + ": " + data_string); - int len = key_string.length(); - if (len <= 0 || key_string.charAt(len-1) != 'x') { + int len = key_bytes.length; + if (len != data_bytes.length) { + ERR("key and data are different"); + } + for (i=0; i<len-1; i++) { + byte want = (byte)('0' + i); + if (key_bytes[i] != want || data_bytes[i] != want) { + System.out.println(" got " + new String(key_bytes) + + "/" + new String(data_bytes)); + ERR("key or data is corrupt"); + } + } + if (len <= 0 || + key_bytes[len-1] != (byte)'x' || + data_bytes[len-1] != (byte)'x') { ERR("reread terminator is bad"); } len--; long bit = (1 << len); if (len > count) { - ERR("reread length is bad: expect " + count + " got "+ len + " (" + key_string + ")" ); - } - else if (!data_string.equals(key_string)) { - ERR("key/data don't match"); + ERR("reread length is bad: expect " + count + " got "+ len); } else if ((bitmap & bit) != 0) { ERR("key already seen"); @@ -157,23 +159,12 @@ public class TestConstruct02 else if ((expected & bit) == 0) { ERR("key was not expected"); } - else { - bitmap |= bit; - expected &= ~(bit); - for (i=0; i<len; i++) { - if (key_string.charAt(i) != ('0' + i)) { - System.out.print(" got " + key_string - + " (" + (int)key_string.charAt(i) - + "), wanted " + i - + " (" + (int)('0' + i) - + ") at position " + i + "\n"); - ERR("key is corrupt"); - } - } - } + bitmap |= bit; + expected &= ~(bit); } if (expected != 0) { - System.out.print(" expected more keys, bitmap is: " + expected + "\n"); + System.out.print(" expected more keys, bitmap is: " + + expected + "\n"); ERR("missing keys in database"); } dbcp.close(); @@ -242,25 +233,14 @@ public class TestConstruct02 } } - boolean doall(int mask) + boolean doall() { itemcount = 0; try { - for (int item=1; item<32; item++) { - if ((mask & (1 << item)) != 0) { - VERBOSEOUT(" Running test " + item + ":\n"); - switch (item) { - case 1: - t1(); - break; - default: - ERR("unknown test case: " + item); - break; - } - VERBOSEOUT(" finished.\n"); - } - } - removeall((mask & 1) != 0, false); + VERBOSEOUT(" Running test 1:\n"); + t1(); + VERBOSEOUT(" finished.\n"); + removeall(true, false); return true; } catch (DbException dbe) { @@ -275,38 +255,17 @@ public class TestConstruct02 public static void main(String args[]) { int iterations = 200; - int mask = 0x3; for (int argcnt=0; argcnt<args.length; argcnt++) { String arg = args[argcnt]; - if (arg.charAt(0) == '-') { - // keep on lower bit, which means to remove db between tests. - mask = 1; - for (int pos=1; pos<arg.length(); pos++) { - char ch = arg.charAt(pos); - if (ch >= '0' && ch <= '9') { - mask |= (1 << (ch - '0')); - } - else if (ch == 'v') { - verbose_flag = true; - } - else { - ERR("Usage: construct02 [-testdigits] count"); - } + try { + iterations = Integer.parseInt(arg); + if (iterations < 0) { + ERR("Usage: construct02 [-testdigits] count"); } - System.out.println("mask = " + mask); - } - else { - try { - iterations = Integer.parseInt(arg); - if (iterations < 0) { - ERR("Usage: construct02 [-testdigits] count"); - } - } - catch (NumberFormatException nfe) { - ERR("EXCEPTION RECEIVED: " + nfe); - } + catch (NumberFormatException nfe) { + ERR("EXCEPTION RECEIVED: " + nfe); } } @@ -334,7 +293,7 @@ public class TestConstruct02 VERBOSEOUT("(" + i + "/" + iterations + ") "); } VERBOSEOUT("construct02 running:\n"); - if (!con.doall(mask)) { + if (!con.doall()) { ERR("SOME TEST FAILED"); } System.gc(); diff --git a/db/test/scr016/TestDbtFlags.java b/db/test/scr016/TestDbtFlags.java index 0c30d8c07..469b8f0ff 100644 --- a/db/test/scr016/TestDbtFlags.java +++ b/db/test/scr016/TestDbtFlags.java @@ -4,7 +4,7 @@ * Copyright (c) 1997-2002 * Sleepycat Software. All rights reserved. * - * Id: TestDbtFlags.java,v 1.3 2002/01/11 15:54:02 bostic Exp + * Id: TestDbtFlags.java,v 1.4 2002/08/16 19:35:54 dda Exp */ package com.sleepycat.test; @@ -25,14 +25,18 @@ public class TestDbtFlags /*zippy quotes for test input*/ static final String[] input_lines = { - "I'm having a RELIGIOUS EXPERIENCE.. and I don't take any DRUGS", - "I pretend I'm living in a styrofoam packing crate, high in th'" + - "SWISS ALPS, still unable to accept th' idea of TOUCH-TONE DIALING!!", - "FUN is never having to say you're SUSHI!!", - "Hold the MAYO & pass the COSMIC AWARENESS...", - "What GOOD is a CARDBOARD suitcase ANYWAY?", - "My nose feels like a bad Ronald Reagan movie...", - "The LOGARITHM of an ISOCELES TRIANGLE is TUESDAY WELD!!", + "If we shadows have offended", + "Think but this, and all is mended", + "That you have but slumber'd here", + "While these visions did appear", + "And this weak and idle theme", + "No more yielding but a dream", + "Gentles, do not reprehend", + "if you pardon, we will mend", + "And, as I am an honest Puck, if we have unearned luck", + "Now to 'scape the serpent's tongue, we will make amends ere long;", + "Else the Puck a liar call; so, good night unto you all.", + "Give me your hands, if we be friends, and Robin shall restore amends." }; public TestDbtFlags(int flag_value, int buf_size) @@ -95,7 +99,7 @@ public class TestDbtFlags Db table = new Db(null, 0); table.set_error_stream(System.err); table.set_errpfx("TestDbtFlags"); - table.open(FileName, null, Db.DB_BTREE, Db.DB_CREATE, 0644); + table.open(null, FileName, null, Db.DB_BTREE, Db.DB_CREATE, 0644); // // Insert records into the database, where the key is the user diff --git a/db/test/scr016/TestDbtFlags.testerr b/db/test/scr016/TestDbtFlags.testerr index 1f8cb2a55..7666868eb 100644 --- a/db/test/scr016/TestDbtFlags.testerr +++ b/db/test/scr016/TestDbtFlags.testerr @@ -2,35 +2,53 @@ =-=-=-= Test with DBT flags 16 bufsize -1 =-=-=-= Test with DBT flags 32 bufsize 20 exception, iteration 0: Dbt not large enough for available data - key size: 41 ulen: 20 - data size: 41 ulen: 20 + key size: 28 ulen: 20 + data size: 28 ulen: 20 exception, iteration 1: Dbt not large enough for available data - key size: 44 ulen: 20 - data size: 44 ulen: 20 + key size: 53 ulen: 20 + data size: 53 ulen: 20 exception, iteration 2: Dbt not large enough for available data - key size: 129 ulen: 20 - data size: 129 ulen: 20 + key size: 55 ulen: 20 + data size: 55 ulen: 20 exception, iteration 3: Dbt not large enough for available data - key size: 63 ulen: 20 - data size: 63 ulen: 20 + key size: 25 ulen: 20 + data size: 25 ulen: 20 exception, iteration 4: Dbt not large enough for available data - key size: 47 ulen: 20 - data size: 47 ulen: 20 + key size: 69 ulen: 20 + data size: 69 ulen: 20 exception, iteration 5: Dbt not large enough for available data - key size: 55 ulen: 20 - data size: 55 ulen: 20 + key size: 27 ulen: 20 + data size: 27 ulen: 20 exception, iteration 6: Dbt not large enough for available data - key size: 41 ulen: 20 - data size: 41 ulen: 20 + key size: 28 ulen: 20 + data size: 28 ulen: 20 +exception, iteration 7: Dbt not large enough for available data + key size: 65 ulen: 20 + data size: 65 ulen: 20 +exception, iteration 8: Dbt not large enough for available data + key size: 32 ulen: 20 + data size: 32 ulen: 20 +exception, iteration 9: Dbt not large enough for available data + key size: 33 ulen: 20 + data size: 33 ulen: 20 +exception, iteration 10: Dbt not large enough for available data + key size: 30 ulen: 20 + data size: 30 ulen: 20 +exception, iteration 11: Dbt not large enough for available data + key size: 27 ulen: 20 + data size: 27 ulen: 20 =-=-=-= Test with DBT flags 32 bufsize 50 +exception, iteration 1: Dbt not large enough for available data + key size: 53 ulen: 50 + data size: 53 ulen: 50 exception, iteration 2: Dbt not large enough for available data - key size: 129 ulen: 50 - data size: 129 ulen: 50 -exception, iteration 3: Dbt not large enough for available data - key size: 63 ulen: 50 - data size: 63 ulen: 50 -exception, iteration 5: Dbt not large enough for available data key size: 55 ulen: 50 data size: 55 ulen: 50 +exception, iteration 4: Dbt not large enough for available data + key size: 69 ulen: 50 + data size: 69 ulen: 50 +exception, iteration 7: Dbt not large enough for available data + key size: 65 ulen: 50 + data size: 65 ulen: 50 =-=-=-= Test with DBT flags 32 bufsize 200 =-=-=-= Test with DBT flags 0 bufsize -1 diff --git a/db/test/scr016/TestDbtFlags.testout b/db/test/scr016/TestDbtFlags.testout index 800eebe86..b8deb1bcc 100644 --- a/db/test/scr016/TestDbtFlags.testout +++ b/db/test/scr016/TestDbtFlags.testout @@ -1,48 +1,78 @@ =-=-=-= Test with DBT flags 4 bufsize -1 -FUN is never having to say you're SUSHI!! : !!IHSUS er'uoy yas ot gnivah reven si NUF -Hold the MAYO & pass the COSMIC AWARENESS... : ...SSENERAWA CIMSOC eht ssap & OYAM eht dloH -I pretend I'm living in a styrofoam packing crate, high in th'SWISS ALPS, still unable to accept th' idea of TOUCH-TONE DIALING!! : !!GNILAID ENOT-HCUOT fo aedi 'ht tpecca ot elbanu llits ,SPLA SSIWS'ht ni hgih ,etarc gnikcap maoforyts a ni gnivil m'I dneterp I -I'm having a RELIGIOUS EXPERIENCE.. and I don't take any DRUGS : SGURD yna ekat t'nod I dna ..ECNEIREPXE SUOIGILER a gnivah m'I -My nose feels like a bad Ronald Reagan movie... : ...eivom nagaeR dlanoR dab a ekil sleef eson yM -The LOGARITHM of an ISOCELES TRIANGLE is TUESDAY WELD!! : !!DLEW YADSEUT si ELGNAIRT SELECOSI na fo MHTIRAGOL ehT -What GOOD is a CARDBOARD suitcase ANYWAY? : ?YAWYNA esactius DRAOBDRAC a si DOOG tahW +And this weak and idle theme : emeht eldi dna kaew siht dnA +And, as I am an honest Puck, if we have unearned luck : kcul denraenu evah ew fi ,kcuP tsenoh na ma I sa ,dnA +Else the Puck a liar call; so, good night unto you all. : .lla uoy otnu thgin doog ,os ;llac rail a kcuP eht eslE +Gentles, do not reprehend : dneherper ton od ,seltneG +Give me your hands, if we be friends, and Robin shall restore amends. : .sdnema erotser llahs niboR dna ,sdneirf eb ew fi ,sdnah ruoy em eviG +If we shadows have offended : dedneffo evah swodahs ew fI +No more yielding but a dream : maerd a tub gnidleiy erom oN +Now to 'scape the serpent's tongue, we will make amends ere long; : ;gnol ere sdnema ekam lliw ew ,eugnot s'tnepres eht epacs' ot woN +That you have but slumber'd here : ereh d'rebmuls tub evah uoy tahT +Think but this, and all is mended : dednem si lla dna ,siht tub knihT +While these visions did appear : raeppa did snoisiv eseht elihW +if you pardon, we will mend : dnem lliw ew ,nodrap uoy fi =-=-=-= Test with DBT flags 16 bufsize -1 -FUN is never having to say you're SUSHI!! : !!IHSUS er'uoy yas ot gnivah reven si NUF -Hold the MAYO & pass the COSMIC AWARENESS... : ...SSENERAWA CIMSOC eht ssap & OYAM eht dloH -I pretend I'm living in a styrofoam packing crate, high in th'SWISS ALPS, still unable to accept th' idea of TOUCH-TONE DIALING!! : !!GNILAID ENOT-HCUOT fo aedi 'ht tpecca ot elbanu llits ,SPLA SSIWS'ht ni hgih ,etarc gnikcap maoforyts a ni gnivil m'I dneterp I -I'm having a RELIGIOUS EXPERIENCE.. and I don't take any DRUGS : SGURD yna ekat t'nod I dna ..ECNEIREPXE SUOIGILER a gnivah m'I -My nose feels like a bad Ronald Reagan movie... : ...eivom nagaeR dlanoR dab a ekil sleef eson yM -The LOGARITHM of an ISOCELES TRIANGLE is TUESDAY WELD!! : !!DLEW YADSEUT si ELGNAIRT SELECOSI na fo MHTIRAGOL ehT -What GOOD is a CARDBOARD suitcase ANYWAY? : ?YAWYNA esactius DRAOBDRAC a si DOOG tahW +And this weak and idle theme : emeht eldi dna kaew siht dnA +And, as I am an honest Puck, if we have unearned luck : kcul denraenu evah ew fi ,kcuP tsenoh na ma I sa ,dnA +Else the Puck a liar call; so, good night unto you all. : .lla uoy otnu thgin doog ,os ;llac rail a kcuP eht eslE +Gentles, do not reprehend : dneherper ton od ,seltneG +Give me your hands, if we be friends, and Robin shall restore amends. : .sdnema erotser llahs niboR dna ,sdneirf eb ew fi ,sdnah ruoy em eviG +If we shadows have offended : dedneffo evah swodahs ew fI +No more yielding but a dream : maerd a tub gnidleiy erom oN +Now to 'scape the serpent's tongue, we will make amends ere long; : ;gnol ere sdnema ekam lliw ew ,eugnot s'tnepres eht epacs' ot woN +That you have but slumber'd here : ereh d'rebmuls tub evah uoy tahT +Think but this, and all is mended : dednem si lla dna ,siht tub knihT +While these visions did appear : raeppa did snoisiv eseht elihW +if you pardon, we will mend : dnem lliw ew ,nodrap uoy fi =-=-=-= Test with DBT flags 32 bufsize 20 -FUN is never having to say you're SUSHI!! : !!IHSUS er'uoy yas ot gnivah reven si NUF -Hold the MAYO & pass the COSMIC AWARENESS... : ...SSENERAWA CIMSOC eht ssap & OYAM eht dloH -I pretend I'm living in a styrofoam packing crate, high in th'SWISS ALPS, still unable to accept th' idea of TOUCH-TONE DIALING!! : !!GNILAID ENOT-HCUOT fo aedi 'ht tpecca ot elbanu llits ,SPLA SSIWS'ht ni hgih ,etarc gnikcap maoforyts a ni gnivil m'I dneterp I -I'm having a RELIGIOUS EXPERIENCE.. and I don't take any DRUGS : SGURD yna ekat t'nod I dna ..ECNEIREPXE SUOIGILER a gnivah m'I -My nose feels like a bad Ronald Reagan movie... : ...eivom nagaeR dlanoR dab a ekil sleef eson yM -The LOGARITHM of an ISOCELES TRIANGLE is TUESDAY WELD!! : !!DLEW YADSEUT si ELGNAIRT SELECOSI na fo MHTIRAGOL ehT -What GOOD is a CARDBOARD suitcase ANYWAY? : ?YAWYNA esactius DRAOBDRAC a si DOOG tahW +And this weak and idle theme : emeht eldi dna kaew siht dnA +And, as I am an honest Puck, if we have unearned luck : kcul denraenu evah ew fi ,kcuP tsenoh na ma I sa ,dnA +Else the Puck a liar call; so, good night unto you all. : .lla uoy otnu thgin doog ,os ;llac rail a kcuP eht eslE +Gentles, do not reprehend : dneherper ton od ,seltneG +Give me your hands, if we be friends, and Robin shall restore amends. : .sdnema erotser llahs niboR dna ,sdneirf eb ew fi ,sdnah ruoy em eviG +If we shadows have offended : dedneffo evah swodahs ew fI +No more yielding but a dream : maerd a tub gnidleiy erom oN +Now to 'scape the serpent's tongue, we will make amends ere long; : ;gnol ere sdnema ekam lliw ew ,eugnot s'tnepres eht epacs' ot woN +That you have but slumber'd here : ereh d'rebmuls tub evah uoy tahT +Think but this, and all is mended : dednem si lla dna ,siht tub knihT +While these visions did appear : raeppa did snoisiv eseht elihW +if you pardon, we will mend : dnem lliw ew ,nodrap uoy fi =-=-=-= Test with DBT flags 32 bufsize 50 -FUN is never having to say you're SUSHI!! : !!IHSUS er'uoy yas ot gnivah reven si NUF -Hold the MAYO & pass the COSMIC AWARENESS... : ...SSENERAWA CIMSOC eht ssap & OYAM eht dloH -I pretend I'm living in a styrofoam packing crate, high in th'SWISS ALPS, still unable to accept th' idea of TOUCH-TONE DIALING!! : !!GNILAID ENOT-HCUOT fo aedi 'ht tpecca ot elbanu llits ,SPLA SSIWS'ht ni hgih ,etarc gnikcap maoforyts a ni gnivil m'I dneterp I -I'm having a RELIGIOUS EXPERIENCE.. and I don't take any DRUGS : SGURD yna ekat t'nod I dna ..ECNEIREPXE SUOIGILER a gnivah m'I -My nose feels like a bad Ronald Reagan movie... : ...eivom nagaeR dlanoR dab a ekil sleef eson yM -The LOGARITHM of an ISOCELES TRIANGLE is TUESDAY WELD!! : !!DLEW YADSEUT si ELGNAIRT SELECOSI na fo MHTIRAGOL ehT -What GOOD is a CARDBOARD suitcase ANYWAY? : ?YAWYNA esactius DRAOBDRAC a si DOOG tahW +And this weak and idle theme : emeht eldi dna kaew siht dnA +And, as I am an honest Puck, if we have unearned luck : kcul denraenu evah ew fi ,kcuP tsenoh na ma I sa ,dnA +Else the Puck a liar call; so, good night unto you all. : .lla uoy otnu thgin doog ,os ;llac rail a kcuP eht eslE +Gentles, do not reprehend : dneherper ton od ,seltneG +Give me your hands, if we be friends, and Robin shall restore amends. : .sdnema erotser llahs niboR dna ,sdneirf eb ew fi ,sdnah ruoy em eviG +If we shadows have offended : dedneffo evah swodahs ew fI +No more yielding but a dream : maerd a tub gnidleiy erom oN +Now to 'scape the serpent's tongue, we will make amends ere long; : ;gnol ere sdnema ekam lliw ew ,eugnot s'tnepres eht epacs' ot woN +That you have but slumber'd here : ereh d'rebmuls tub evah uoy tahT +Think but this, and all is mended : dednem si lla dna ,siht tub knihT +While these visions did appear : raeppa did snoisiv eseht elihW +if you pardon, we will mend : dnem lliw ew ,nodrap uoy fi =-=-=-= Test with DBT flags 32 bufsize 200 -FUN is never having to say you're SUSHI!! : !!IHSUS er'uoy yas ot gnivah reven si NUF -Hold the MAYO & pass the COSMIC AWARENESS... : ...SSENERAWA CIMSOC eht ssap & OYAM eht dloH -I pretend I'm living in a styrofoam packing crate, high in th'SWISS ALPS, still unable to accept th' idea of TOUCH-TONE DIALING!! : !!GNILAID ENOT-HCUOT fo aedi 'ht tpecca ot elbanu llits ,SPLA SSIWS'ht ni hgih ,etarc gnikcap maoforyts a ni gnivil m'I dneterp I -I'm having a RELIGIOUS EXPERIENCE.. and I don't take any DRUGS : SGURD yna ekat t'nod I dna ..ECNEIREPXE SUOIGILER a gnivah m'I -My nose feels like a bad Ronald Reagan movie... : ...eivom nagaeR dlanoR dab a ekil sleef eson yM -The LOGARITHM of an ISOCELES TRIANGLE is TUESDAY WELD!! : !!DLEW YADSEUT si ELGNAIRT SELECOSI na fo MHTIRAGOL ehT -What GOOD is a CARDBOARD suitcase ANYWAY? : ?YAWYNA esactius DRAOBDRAC a si DOOG tahW +And this weak and idle theme : emeht eldi dna kaew siht dnA +And, as I am an honest Puck, if we have unearned luck : kcul denraenu evah ew fi ,kcuP tsenoh na ma I sa ,dnA +Else the Puck a liar call; so, good night unto you all. : .lla uoy otnu thgin doog ,os ;llac rail a kcuP eht eslE +Gentles, do not reprehend : dneherper ton od ,seltneG +Give me your hands, if we be friends, and Robin shall restore amends. : .sdnema erotser llahs niboR dna ,sdneirf eb ew fi ,sdnah ruoy em eviG +If we shadows have offended : dedneffo evah swodahs ew fI +No more yielding but a dream : maerd a tub gnidleiy erom oN +Now to 'scape the serpent's tongue, we will make amends ere long; : ;gnol ere sdnema ekam lliw ew ,eugnot s'tnepres eht epacs' ot woN +That you have but slumber'd here : ereh d'rebmuls tub evah uoy tahT +Think but this, and all is mended : dednem si lla dna ,siht tub knihT +While these visions did appear : raeppa did snoisiv eseht elihW +if you pardon, we will mend : dnem lliw ew ,nodrap uoy fi =-=-=-= Test with DBT flags 0 bufsize -1 -FUN is never having to say you're SUSHI!! : !!IHSUS er'uoy yas ot gnivah reven si NUF -Hold the MAYO & pass the COSMIC AWARENESS... : ...SSENERAWA CIMSOC eht ssap & OYAM eht dloH -I pretend I'm living in a styrofoam packing crate, high in th'SWISS ALPS, still unable to accept th' idea of TOUCH-TONE DIALING!! : !!GNILAID ENOT-HCUOT fo aedi 'ht tpecca ot elbanu llits ,SPLA SSIWS'ht ni hgih ,etarc gnikcap maoforyts a ni gnivil m'I dneterp I -I'm having a RELIGIOUS EXPERIENCE.. and I don't take any DRUGS : SGURD yna ekat t'nod I dna ..ECNEIREPXE SUOIGILER a gnivah m'I -My nose feels like a bad Ronald Reagan movie... : ...eivom nagaeR dlanoR dab a ekil sleef eson yM -The LOGARITHM of an ISOCELES TRIANGLE is TUESDAY WELD!! : !!DLEW YADSEUT si ELGNAIRT SELECOSI na fo MHTIRAGOL ehT -What GOOD is a CARDBOARD suitcase ANYWAY? : ?YAWYNA esactius DRAOBDRAC a si DOOG tahW +And this weak and idle theme : emeht eldi dna kaew siht dnA +And, as I am an honest Puck, if we have unearned luck : kcul denraenu evah ew fi ,kcuP tsenoh na ma I sa ,dnA +Else the Puck a liar call; so, good night unto you all. : .lla uoy otnu thgin doog ,os ;llac rail a kcuP eht eslE +Gentles, do not reprehend : dneherper ton od ,seltneG +Give me your hands, if we be friends, and Robin shall restore amends. : .sdnema erotser llahs niboR dna ,sdneirf eb ew fi ,sdnah ruoy em eviG +If we shadows have offended : dedneffo evah swodahs ew fI +No more yielding but a dream : maerd a tub gnidleiy erom oN +Now to 'scape the serpent's tongue, we will make amends ere long; : ;gnol ere sdnema ekam lliw ew ,eugnot s'tnepres eht epacs' ot woN +That you have but slumber'd here : ereh d'rebmuls tub evah uoy tahT +Think but this, and all is mended : dednem si lla dna ,siht tub knihT +While these visions did appear : raeppa did snoisiv eseht elihW +if you pardon, we will mend : dnem lliw ew ,nodrap uoy fi diff --git a/db/test/scr016/TestKeyRange.java b/db/test/scr016/TestKeyRange.java index 83cba1365..330663146 100644 --- a/db/test/scr016/TestKeyRange.java +++ b/db/test/scr016/TestKeyRange.java @@ -7,7 +7,7 @@ * Copyright (c) 1997-2002 * Sleepycat Software. All rights reserved. * - * Id: TestKeyRange.java,v 1.3 2002/01/11 15:54:02 bostic Exp + * Id: TestKeyRange.java,v 1.4 2002/08/16 19:35:55 dda Exp */ package com.sleepycat.test; @@ -105,7 +105,7 @@ public class TestKeyRange Db table = new Db(null, 0); table.set_error_stream(System.err); table.set_errpfx("TestKeyRange"); - table.open(FileName, null, Db.DB_BTREE, Db.DB_CREATE, 0644); + table.open(null, FileName, null, Db.DB_BTREE, Db.DB_CREATE, 0644); // // Insert records into the database, where the key is the user diff --git a/db/test/scr016/TestLockVec.java b/db/test/scr016/TestLockVec.java index c0e82b175..06024e4ed 100644 --- a/db/test/scr016/TestLockVec.java +++ b/db/test/scr016/TestLockVec.java @@ -4,7 +4,7 @@ * Copyright (c) 1997-2002 * Sleepycat Software. All rights reserved. * - * Id: TestLockVec.java,v 1.3 2002/01/11 15:54:02 bostic Exp + * Id: TestLockVec.java,v 1.4 2002/08/16 19:35:55 dda Exp */ /* @@ -43,9 +43,9 @@ public class TestLockVec locker1 = dbenv1.lock_id(); locker2 = dbenv1.lock_id(); Db db1 = new Db(dbenv1, 0); - db1.open("my.db", null, Db.DB_BTREE, Db.DB_CREATE, 0); + db1.open(null, "my.db", null, Db.DB_BTREE, Db.DB_CREATE, 0); Db db2 = new Db(dbenv2, 0); - db2.open("my.db", null, Db.DB_BTREE, 0, 0); + db2.open(null, "my.db", null, Db.DB_BTREE, 0, 0); // populate our database, just two elements. Dbt Akey = new Dbt("A".getBytes()); diff --git a/db/test/scr016/TestLogc.java b/db/test/scr016/TestLogc.java index 628abb036..afd870917 100644 --- a/db/test/scr016/TestLogc.java +++ b/db/test/scr016/TestLogc.java @@ -4,7 +4,7 @@ * Copyright (c) 1997-2002 * Sleepycat Software. All rights reserved. * - * Id: TestLogc.java,v 1.6 2002/01/11 15:54:03 bostic Exp + * Id: TestLogc.java,v 1.7 2002/08/16 19:35:55 dda Exp */ /* @@ -26,13 +26,13 @@ public class TestLogc // Do some database activity to get something into the log. Db db1 = new Db(env, 0); - db1.open("first.db", null, Db.DB_BTREE, Db.DB_CREATE, 0); + db1.open(null, "first.db", null, Db.DB_BTREE, Db.DB_CREATE, 0); db1.put(null, new Dbt("a".getBytes()), new Dbt("b".getBytes()), 0); db1.put(null, new Dbt("c".getBytes()), new Dbt("d".getBytes()), 0); db1.close(0); Db db2 = new Db(env, 0); - db2.open("second.db", null, Db.DB_BTREE, Db.DB_CREATE, 0644); + db2.open(null, "second.db", null, Db.DB_BTREE, Db.DB_CREATE, 0644); db2.put(null, new Dbt("w".getBytes()), new Dbt("x".getBytes()), 0); db2.put(null, new Dbt("y".getBytes()), new Dbt("z".getBytes()), 0); db2.close(0); diff --git a/db/test/scr016/TestOpenEmpty.java b/db/test/scr016/TestOpenEmpty.java index 51de512f0..14b2368d7 100644 --- a/db/test/scr016/TestOpenEmpty.java +++ b/db/test/scr016/TestOpenEmpty.java @@ -4,7 +4,7 @@ * Copyright (c) 1997-2002 * Sleepycat Software. All rights reserved. * - * Id: TestOpenEmpty.java,v 1.3 2002/01/11 15:54:03 bostic Exp + * Id: TestOpenEmpty.java,v 1.4 2002/08/16 19:35:55 dda Exp */ package com.sleepycat.test; @@ -104,7 +104,7 @@ public class TestOpenEmpty Db table = new Db(null, 0); table.set_error_stream(System.err); table.set_errpfx("TestOpenEmpty"); - table.open(FileName, null, Db.DB_BTREE, Db.DB_CREATE, 0644); + table.open(null, FileName, null, Db.DB_BTREE, Db.DB_CREATE, 0644); // // Insert records into the database, where the key is the user diff --git a/db/test/scr016/TestSimpleAccess.java b/db/test/scr016/TestSimpleAccess.java index 4a3c6898e..6bc82e9d7 100644 --- a/db/test/scr016/TestSimpleAccess.java +++ b/db/test/scr016/TestSimpleAccess.java @@ -4,7 +4,7 @@ * Copyright (c) 1997-2002 * Sleepycat Software. All rights reserved. * - * Id: TestSimpleAccess.java,v 1.4 2002/01/23 14:29:52 bostic Exp + * Id: TestSimpleAccess.java,v 1.5 2002/08/16 19:35:55 dda Exp */ /* @@ -24,38 +24,7 @@ public class TestSimpleAccess Db db = new Db(null, 0); db.open(null, "my.db", null, Db.DB_BTREE, Db.DB_CREATE, 0644); - // populate our massive database. - Dbt keydbt = new Dbt("key".getBytes()); - Dbt datadbt = new Dbt("data".getBytes()); - db.put(null, keydbt, datadbt, 0); - - // Now, retrieve. We could use keydbt over again, - // but that wouldn't be typical in an application. - Dbt goodkeydbt = new Dbt("key".getBytes()); - Dbt badkeydbt = new Dbt("badkey".getBytes()); - Dbt resultdbt = new Dbt(); - resultdbt.set_flags(Db.DB_DBT_MALLOC); - - int ret; - - if ((ret = db.get(null, goodkeydbt, resultdbt, 0)) != 0) { - System.out.println("get: " + DbEnv.strerror(ret)); - } - else { - String result = - new String(resultdbt.get_data(), 0, resultdbt.get_size()); - System.out.println("got data: " + result); - } - - if ((ret = db.get(null, badkeydbt, resultdbt, 0)) != 0) { - // We expect this... - System.out.println("get using bad key: " + DbEnv.strerror(ret)); - } - else { - String result = - new String(resultdbt.get_data(), 0, resultdbt.get_size()); - System.out.println("*** got data using bad key!!: " + result); - } + TestUtil.populate(db); System.out.println("finished test"); } catch (DbException dbe) { @@ -64,7 +33,5 @@ public class TestSimpleAccess catch (FileNotFoundException fnfe) { System.err.println("FileNotFoundException: " + fnfe); } - } - } diff --git a/db/test/scr016/chk.javatests b/db/test/scr016/chk.javatests index 51b55f8fd..9319de703 100644 --- a/db/test/scr016/chk.javatests +++ b/db/test/scr016/chk.javatests @@ -1,6 +1,6 @@ #!/bin/sh - # -# Id: chk.javatests,v 1.4 2002/03/27 04:33:08 bostic Exp +# Id: chk.javatests,v 1.5 2002/08/16 19:35:56 dda Exp # # Check to make sure that regression tests for Java run. @@ -51,7 +51,8 @@ for testname in $testnames; do rm -rf TESTJAVA; mkdir -p TESTJAVA/classes cd ./TESTJAVA testprefix=../$TEST_JAVA_SRCDIR/$testname - ${JAVAC} -d ./classes $testprefix.java > ../$testname.compileout 2>&1 || { + ${JAVAC} -d ./classes $testprefix.java ../$TEST_JAVA_SRCDIR/TestUtil.java > ../$testname.compileout 2>&1 || { +pwd echo "FAIL: compilation of $testname failed, see ../$testname.compileout" exit 1 } diff --git a/db/test/scr016/ignore b/db/test/scr016/ignore index ced56a904..5282f4180 100644 --- a/db/test/scr016/ignore +++ b/db/test/scr016/ignore @@ -1,5 +1,5 @@ # -# Id: ignore,v 1.3 2001/10/12 13:02:34 dda Exp +# Id: ignore,v 1.4 2002/08/16 19:35:56 dda Exp # # A list of tests to ignore @@ -9,3 +9,14 @@ TestRpcServer # TestReplication is not debugged TestReplication +# These are currently not working +TestAppendRecno +TestAssociate +TestLogc +TestConstruct02 + +# TestUtil is used by the other tests, it does not stand on its own +TestUtil + +# XA needs a special installation, it is not part of testall +TestXAServlet diff --git a/db/test/scr016/testone b/db/test/scr016/testone index 502027062..1937b4404 100644 --- a/db/test/scr016/testone +++ b/db/test/scr016/testone @@ -1,5 +1,5 @@ #!/bin/sh - -# Id: testone,v 1.4 2001/09/20 14:40:29 dda Exp +# Id: testone,v 1.5 2002/08/16 19:35:56 dda Exp # # Run just one Java regression test, the single argument # is the classname within this package. @@ -83,7 +83,7 @@ fi rm -rf TESTDIR; mkdir TESTDIR cd ./TESTDIR mkdir -p $classdir -${JAVAC} -d $classdir ../$name.java > ../$name.compileout 2>&1 +${JAVAC} -d $classdir ../$name.java ../TestUtil.java > ../$name.compileout 2>&1 if [ $? != 0 -o -s ../$name.compileout ]; then error "compilation of $name failed, see $name.compileout" exit 1 @@ -100,9 +100,9 @@ fi rm -rf TESTDIR if [ "$stdinflag" = y ] then - ${JAVA} com.sleepycat.test.$name >../$name.out 2>../$name.err + ${JAVA} com.sleepycat.test.$name $TEST_ARGS >../$name.out 2>../$name.err else - ${JAVA} com.sleepycat.test.$name <$infile >../$name.out 2>../$name.err + ${JAVA} com.sleepycat.test.$name $TEST_ARGS <$infile >../$name.out 2>../$name.err fi cd .. diff --git a/db/test/test096.tcl b/db/test/test096.tcl index 84bd6dd35..ddbfd6f78 100644 --- a/db/test/test096.tcl +++ b/db/test/test096.tcl @@ -3,7 +3,7 @@ # Copyright (c) 1999-2002 # Sleepycat Software. All rights reserved. # -# Id: test096.tcl,v 11.18 2002/07/22 16:53:00 sue Exp +# Id: test096.tcl,v 11.19 2002/08/19 20:09:29 margo Exp # # TEST test096 # TEST Db->truncate test. @@ -107,7 +107,7 @@ proc test096 { method {pagesize 512} {nentries 50} {ndups 4} args} { # Remove database, and create a new one with dups. # puts "\tTest096.d: Create $nentries entries with $ndups duplicates" - set ret [berkdb dbremove -env $env $testfile] + set ret [berkdb dbremove -env $env -auto_commit $testfile] set db [eval {berkdb_open -pagesize $pagesize -dup -auto_commit \ -create -env $env $omethod -mode 0644} $args $testfile] error_check_good db_open [is_valid_db $db] TRUE |